From ce35c630d1b23d8a0706fb11d84439a030b277ac Mon Sep 17 00:00:00 2001 From: Wouter van der Plas Date: Sat, 24 Oct 2020 16:31:38 +0200 Subject: [PATCH 001/117] worked on the fetch lib added jsdocs simplified the overloads documented some of the options --- src/_fetch/00-parseUrl.js | 11 +++++-- src/_fetch/01-makeUrl.js | 31 +++++++++++++------- src/_fetch/02-getResult.js | 18 ++++++++---- src/_fetch/03-parseDoc.js | 9 ++++-- src/_fetch/_headers.js | 24 +++++++++++++--- src/_fetch/category.js | 23 +++++++-------- src/_fetch/http/client.js | 10 +++++-- src/_fetch/index.js | 59 +++++++++++++++++++++++++++----------- src/_fetch/random.js | 4 +-- 9 files changed, 132 insertions(+), 57 deletions(-) diff --git a/src/_fetch/00-parseUrl.js b/src/_fetch/00-parseUrl.js index bc1be3b8..ae52ca0e 100644 --- a/src/_fetch/00-parseUrl.js +++ b/src/_fetch/00-parseUrl.js @@ -1,10 +1,17 @@ -const parseUrl = function(url) { +/** + * parses out the domain and title from a url + * + * @private + * @param {string} url the url that will be parsed + * @returns {{domain: string, title: string}} the domain and title of a url + */ +const parseUrl = function (url) { let parsed = new URL(url) //eslint-disable-line let title = parsed.pathname.replace(/^\/(wiki\/)?/, '') title = decodeURIComponent(title) return { domain: parsed.host, - title: title + title: title, } } module.exports = parseUrl diff --git a/src/_fetch/01-makeUrl.js b/src/_fetch/01-makeUrl.js index f5223d5c..c00b7d49 100644 --- a/src/_fetch/01-makeUrl.js +++ b/src/_fetch/01-makeUrl.js @@ -1,3 +1,5 @@ +const {isArray} = require('../_lib/helpers'); + const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/ const defaults = { @@ -11,6 +13,12 @@ const defaults = { redirects: 'true', } +/** + * + * @private + * @param {Object} obj + * @return {string} + */ const toQueryString = function (obj) { return Object.entries(obj) .map(([key, value]) => { @@ -19,22 +27,25 @@ const toQueryString = function (obj) { .join('&') } -const isArray = function (arr) { - return Object.prototype.toString.call(arr) === '[object Array]' -} - +/** + * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the whitespaces of the ends + * + * @private + * @param {string} page the title that needs cleaning + * @returns {string} the cleaned title + */ const cleanTitle = (page) => { page = page.replace(/ /g, '_') page = page.trim() - // page = encodeURIComponent(page) + //page = encodeURIComponent(page) return page } const makeUrl = function (options) { let params = Object.assign({}, defaults) - // default url + //default url let url = `https://${options.lang}.${options.wiki}.org/w/api.php?` - // from a 3rd party wiki + //from a 3rd party wiki options.domain = options.domain || options.wikiUrl //support old syntax if (options.domain) { let path = options.path @@ -47,7 +58,7 @@ const makeUrl = function (options) { if (!options.follow_redirects) { delete params.redirects } - // support numerical ids + //support numerical ids let page = options.title if (typeof page === 'number') { params.pageids = page //single pageId @@ -57,10 +68,10 @@ const makeUrl = function (options) { //support array params.titles = page.map(cleanTitle).join('|') } else { - // single page + //single page params.titles = cleanTitle(page) } - // make it! + //make it! url += toQueryString(params) return url } diff --git a/src/_fetch/02-getResult.js b/src/_fetch/02-getResult.js index 9d1c5bf4..7b08cdd2 100644 --- a/src/_fetch/02-getResult.js +++ b/src/_fetch/02-getResult.js @@ -1,14 +1,23 @@ -//this data-format from mediawiki api is nutso +/** + * parses the media wiki api response to something we can use + * + * the data-format from mediawiki api is nutso + * + * @private + * @param data + * @param {fetchDefaults} options + * @returns {*} + */ const getResult = function (data, options) { options = options || {} let pages = Object.keys(data.query.pages) - let docs = pages.map((id) => { + return pages.map((id) => { let page = data.query.pages[id] || {} if (page.hasOwnProperty('missing') || page.hasOwnProperty('invalid')) { return null } let text = page.revisions[0]['*'] - // console.log(page.revisions[0]) + //console.log(page.revisions[0]) //us the 'generator' result format, for the random() method if (!text && page.revisions[0].slots) { text = page.revisions[0].slots.main['*'] @@ -27,12 +36,11 @@ const getResult = function (data, options) { description: page.pageprops['wikibase-shortdesc'], }) try { - return { wiki: text, meta: meta } + return {wiki: text, meta: meta} } catch (e) { console.error(e) throw e } }) - return docs } module.exports = getResult diff --git a/src/_fetch/03-parseDoc.js b/src/_fetch/03-parseDoc.js index cda3d111..14fe1639 100644 --- a/src/_fetch/03-parseDoc.js +++ b/src/_fetch/03-parseDoc.js @@ -1,6 +1,11 @@ const Document = require('../01-document/Document') - -//flip response object into proper Doc objs +/** + * this function puts all responses into proper Document objects + * + * @private + * @param {Array} res + * @returns {null| Document | Document[]} null if there are no results or Document if there is one responses and Document array if there are multiple responses + */ const parseDoc = function (res) { res = res.filter(o => o) let docs = res.map(o => { diff --git a/src/_fetch/_headers.js b/src/_fetch/_headers.js index 63039e94..ab29428e 100644 --- a/src/_fetch/_headers.js +++ b/src/_fetch/_headers.js @@ -1,6 +1,23 @@ +/** + * @typedef HeaderOptions + * @property {string} redirect + * @property {*} headers.Origin + * @property {string} headers.Content-Type + * @property {string} headers.Api-User-Agent + * @property {string} headers.User-Agent + * @property {string} method + */ + + +/** + * factory for header options + * + * @private + * @param options + * @returns {HeaderOptions} the generated options + */ const makeHeaders = function (options) { - let agent = - options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library' + let agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library' let origin if (options.noOrigin) { @@ -9,7 +26,7 @@ const makeHeaders = function (options) { origin = options.origin || options.Origin || '*' } - const opts = { + return { method: 'GET', headers: { 'Content-Type': 'application/json', @@ -19,6 +36,5 @@ const makeHeaders = function (options) { }, redirect: 'follow', } - return opts } module.exports = makeHeaders diff --git a/src/_fetch/category.js b/src/_fetch/category.js index 08c83bd1..a447d982 100644 --- a/src/_fetch/category.js +++ b/src/_fetch/category.js @@ -1,14 +1,15 @@ const http = require('./http/server') const makeHeaders = require('./_headers') +const {isObject} = require('../_lib/helpers') const defaults = { lang: 'en', wiki: 'wikipedia', domain: null, - path: 'w/api.php' //some 3rd party sites use a weird path + path: 'w/api.php', //some 3rd party sites use a weird path } -const normalizeCategory = function(cat = '') { +const normalizeCategory = function (cat = '') { if (/^Category/i.test(cat) === false) { cat = 'Category:' + cat } @@ -16,15 +17,11 @@ const normalizeCategory = function(cat = '') { return cat } -const isObject = function(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]' -} - -const getResult = function(body) { +const getResult = function (body) { let list = body.query.categorymembers || [] let res = { pages: [], - categories: [] + categories: [], } list.forEach(p => { if (p.ns === 14) { @@ -38,7 +35,7 @@ const getResult = function(body) { return res } -const makeUrl = function(category, options, cm) { +const makeUrl = function (category, options, cm) { category = normalizeCategory(category) category = encodeURIComponent(category) let url = `https://${options.lang}.wikipedia.org/${options.path}?` @@ -52,7 +49,7 @@ const makeUrl = function(category, options, cm) { return url } -const fetchCategory = function(category, lang, options) { +const fetchCategory = function (category, lang, options) { options = options || {} options = Object.assign({}, defaults, options) //support lang 2nd param @@ -63,11 +60,11 @@ const fetchCategory = function(category, lang, options) { } let res = { pages: [], - categories: [] + categories: [], } - // wrap a promise around potentially-many requests + //wrap a promise around potentially-many requests return new Promise((resolve, reject) => { - const doit = function(cm) { + const doit = function (cm) { let url = makeUrl(category, options, cm) const headers = makeHeaders(options) return http(url, headers) diff --git a/src/_fetch/http/client.js b/src/_fetch/http/client.js index a62b94c3..f372b1ec 100644 --- a/src/_fetch/http/client.js +++ b/src/_fetch/http/client.js @@ -1,6 +1,12 @@ -// use the native client-side fetch function +/** + * use the native client-side fetch function + * + * @private + * @param {string} url the url that well be fetched + * @param {RequestInit} opts the options for fetch + * @returns {Promise} the response from fetch + */ const request = function (url, opts) { - //eslint-disable-next-line return fetch(url, opts).then(function (res) { return res.json() }) diff --git a/src/_fetch/index.js b/src/_fetch/index.js index 4e8ae30a..61443ced 100644 --- a/src/_fetch/index.js +++ b/src/_fetch/index.js @@ -4,36 +4,67 @@ const getResult = require('./02-getResult') const parseDoc = require('./03-parseDoc') const http = require('./http/server') const makeHeaders = require('./_headers') +const {isObject} = require('../_lib/helpers') const isUrl = /^https?:\/\// +/** + * @typedef fetchDefaults + * @property {string | undefined} [path] + * @property {string | undefined} [wiki] + * @property {string | undefined} [domain] + * @property {boolean | undefined} [follow_redirects] + * @property {string | undefined} [lang] + * @property {string | undefined} [path] + * + * + * @property {string | number | Array| undefined} [title] + * + * @property {string | undefined} ["Api-User-Agent"] + */ + +/** + * + * @type {fetchDefaults} + */ const defaults = { lang: 'en', wiki: 'wikipedia', - domain: null, + domain: undefined, follow_redirects: true, path: 'api.php', //some 3rd party sites use a weird path } +/** + * fetches the page from the wiki and returns a Promise with the parsed wikitext + * + * @param {string | number | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch + * @param {fetchDefaults| function | string} [options] the options for the fetch or the language of the wiki for the article or the callback if you dont provide any options + * @param {Function | fetchDefaults} [c] the callback function for the call or the options for the fetch + * @returns {Promise} + */ const fetch = function (title, options, c) { let callback = null if (typeof options === 'function') { callback = options - options = {} + options = defaults } + + //if the call c is a function then its the callback if (typeof c === 'function') { callback = c - c = {} } + //support lang 2nd param if (typeof options === 'string') { - c = c || {} - options = Object.assign({}, { lang: options }, c) + options = Object.assign({}, {lang: options}, isObject(c) ? c : defaults) } + options = options || {} options = Object.assign({}, defaults, options) options.title = title - // parse url input - if (isUrl.test(title)) { + + //parse url input + if (typeof title === 'string' && isUrl.test(title)) { options = Object.assign(options, parseUrl(title)) } @@ -41,16 +72,12 @@ const fetch = function (title, options, c) { const headers = makeHeaders(options) return http(url, headers) .then((res) => { - try { - let data = getResult(res, options) - data = parseDoc(data) - if (callback) { - callback(null, data) - } - return data - } catch (e) { - throw e + let data = getResult(res, options) + data = parseDoc(data) + if (callback) { + callback(null, data) } + return data }) .catch((e) => { console.error(e) diff --git a/src/_fetch/random.js b/src/_fetch/random.js index a529acf4..5346de1d 100644 --- a/src/_fetch/random.js +++ b/src/_fetch/random.js @@ -2,6 +2,7 @@ const http = require('./http/server') const makeHeaders = require('./_headers') const getResult = require('./02-getResult') const parseDoc = require('./03-parseDoc') +const {isObject} = require('../_lib/helpers') const defaults = { lang: 'en', @@ -9,9 +10,6 @@ const defaults = { domain: null, path: 'w/api.php', //some 3rd party sites use a weird path } -const isObject = function (obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]' -} const fetchRandom = function (lang, options) { options = options || {} From ee42500dc648c239fdcea1b92293c53594691df6 Mon Sep 17 00:00:00 2001 From: Wouter van der Plas Date: Sat, 24 Oct 2020 16:34:46 +0200 Subject: [PATCH 002/117] added some more typescript infrastructure fixed type generation for fetch add a tsconfig for js typechecking --- package.json | 2 +- tests/types/tsconfig.json | 2 +- ts-doc-config.json | 21 +++++++++++ tsconfig.json | 77 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 ts-doc-config.json create mode 100644 tsconfig.json diff --git a/package.json b/package.json index 448f2f05..3cc088a4 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "node ./scripts/version.js && rollup -c", "build:all": "node ./scripts/buildAll.js", - "build:types": "jsdoc -t node_modules/tsd-jsdoc/dist -r ./src", + "build:types": "jsdoc -c ts-doc-config.json ./src", "coverage": "nyc -r lcov -n 'src/**/*' -n 'plugins/**/*' npm run coverage:tests", "coverage:tests": "npm run test && npm run test:fetch", "codecov": "npm run coverage && codecov -t 62d2cc94-1c1f-4e21-a9af-42cc0cf39c51", diff --git a/tests/types/tsconfig.json b/tests/types/tsconfig.json index 2f9c146c..e80844c7 100644 --- a/tests/types/tsconfig.json +++ b/tests/types/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "target": "es5", "module": "commonjs", - "lib": [], + "lib": [ ], "allowJs": true, "checkJs": true, "declaration": true, diff --git a/ts-doc-config.json b/ts-doc-config.json new file mode 100644 index 00000000..5bb4900d --- /dev/null +++ b/ts-doc-config.json @@ -0,0 +1,21 @@ +{ + "recurseDepth": 10, + "source": { + "includePattern": ".+\\.js(doc|x)?$" + }, + "sourceType": "module", + "tags": { + "allowUnknownTags": true, + "dictionaries": [ "jsdoc", "closure" ] + }, + "templates": { + "cleverLinks": false, + "monospaceLinks": false + }, + "plugins": [ "./node_modules/tsd-jsdoc/dist/plugin" ], + "opts": { + "template": "./node_modules/tsd-jsdoc/dist", + "recurse": true, + "destination": "./builds/" + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..016ee889 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,77 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + "lib": ["ES6", "DOM"], /* Specify library files to be included in the compilation. */ + "allowJs": true, /* Allow javascript files to be compiled. */ + "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + "noUnusedLocals": true, /* Report errors on unused locals. */ + "noUnusedParameters": true, /* Report errors on unused parameters. */ + "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */ + }, + "include": [ + "src/**/*.js", + "plugins/**/*.js" + ], + "exclude": [ + "node_modules", + "**/node_modules/*" + ] +} From c289d0223eefb4c89f56af04c2be76d23bf4c92a Mon Sep 17 00:00:00 2001 From: Wouter van der Plas Date: Sat, 24 Oct 2020 16:38:10 +0200 Subject: [PATCH 003/117] cleaned template parsing somewhat and split out some helper functions --- src/01-document/Document.js | 13 +-- src/01-document/_sectionMap.js | 2 +- src/02-section/heading.js | 11 ++- src/_data/i18n.js | 111 ++++++++++++---------- src/_lib/encode.js | 10 +- src/_lib/helpers.js | 76 +++++++++++---- src/_lib/setDefaults.js | 11 ++- src/link/Link.js | 31 +++--- src/template/_parsers/01-pipe-splitter.js | 22 +++-- src/template/_parsers/02-keyMaker.js | 34 ++++--- src/template/_parsers/_strip.js | 15 ++- src/template/_parsers/parse.js | 33 +++++-- src/template/parse.js | 26 +++-- 13 files changed, 248 insertions(+), 147 deletions(-) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index 35d0df43..adc4722f 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -2,6 +2,8 @@ const sectionMap = require('./_sectionMap') const toJSON = require('./toJson') const disambig = require('./disambig') const setDefaults = require('../_lib/setDefaults') +const {isArray} = require('../_lib/helpers') + const Image = require('../image/Image') const redirects = require('./redirects') const preProcess = require('./preProcess') @@ -10,17 +12,6 @@ const parse = { categories: require('./categories'), } -/** - * determines if an variable is an array or not - * - * @private - * @param {*} arr the variable that needs judgment - * @returns {boolean} whether the variable is an array - */ -const isArray = function (arr) { - return Object.prototype.toString.call(arr) === '[object Array]' -} - /** * Call the aliased function with the provided clue. if the clue is unavailable then we use 0 as the clue * If the return value from the aliased function is an array then we return the 0th element of the array diff --git a/src/01-document/_sectionMap.js b/src/01-document/_sectionMap.js index 738d1c26..b29d6447 100644 --- a/src/01-document/_sectionMap.js +++ b/src/01-document/_sectionMap.js @@ -5,7 +5,7 @@ * @param {Document} doc the document with the sections * @param {string} fn the function name of the function that will be called * @param {string | number} [clue] the clue that will be used with the function - * @returns {*[]|*} the array of item at the index of the clue + * @returns {Array|*} the array of item at the index of the clue */ const sectionMap = function (doc, fn, clue) { let arr = [] diff --git a/src/02-section/heading.js b/src/02-section/heading.js index 37859d81..0fb7fa8b 100644 --- a/src/02-section/heading.js +++ b/src/02-section/heading.js @@ -1,10 +1,10 @@ -const fns = require('../_lib/helpers') +const {trim_whitespace} = require('../_lib/helpers') const parseSentence = require('../04-sentence/').fromText const parseReferences = require('../reference/') const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/ //interpret depth, title of headings like '==See also==' -const parseHeading = function(section, str) { +const parseHeading = function (section, str) { let m = str.match(heading_reg) if (!m) { section.title = '' @@ -13,21 +13,26 @@ const parseHeading = function(section, str) { } let title = m[2] || '' title = parseSentence(title).text() + //amazingly, you can see inline {{templates}} in this text, too //... let's not think about that now. title = title.replace(/\{\{.+?\}\}/, '') + //same for references (i know..) let obj = { wiki: title } parseReferences(obj) title = obj.wiki + //trim leading/trailing whitespace - title = fns.trim_whitespace(title) + title = trim_whitespace(title) let depth = 0 if (m[1]) { depth = m[1].length - 2 } + section.title = title section.depth = depth return section } + module.exports = parseHeading diff --git a/src/_data/i18n.js b/src/_data/i18n.js index 5800627e..d339ac61 100644 --- a/src/_data/i18n.js +++ b/src/_data/i18n.js @@ -1,5 +1,17 @@ -// wikipedia special terms lifted and augmented from parsoid parser april 2015 -// and then manually on March 2020 +/** + * wikipedia special terms lifted and augmented from parsoid parser april 2015 + * and then manually on March 2020 + * + * @private + * @type {{ + * images: string[], + * references: string[], + * redirects: string[], + * infoboxes: string[], + * categories: string[], + * disambig: string[] + * }} + */ module.exports = { categories: require('./categories'), disambig: require('./disambig'), @@ -8,51 +20,52 @@ module.exports = { redirects: require('./redirects'), references: require('./references') - // specials: [ - // 'спэцыяльныя', - // 'especial', - // 'speciální', - // 'spezial', - // 'special', - // 'ویژه', - // 'toiminnot', - // 'kerfissíða', - // 'arnawlı', - // 'spécial', - // 'speciaal', - // 'посебно', - // 'özel', - // '特別' - // ], - // users: [ - // 'удзельнік', - // 'usuari', - // 'uživatel', - // 'benutzer', - // 'user', - // 'usuario', - // 'کاربر', - // 'käyttäjä', - // 'notandi', - // 'paydalanıwshı', - // 'utilisateur', - // 'gebruiker', - // 'корисник', - // 'kullanıcı', - // '利用者' - // ], - // sources: [ - // //blacklist these headings, as they're not plain-text - // 'references', - // 'see also', - // 'external links', - // 'further reading', - // 'notes et références', - // 'voir aussi', - // 'liens externes', - // '参考文献', //references (ja) - // '脚注', //citations (ja) - // '関連項目', //see also (ja) - // '外部リンク' //external links (ja) - // ] + //specials: [ + //'спэцыяльныя', + //'especial', + //'speciální', + //'spezial', + //'special', + //'ویژه', + //'toiminnot', + //'kerfissíða', + //'arnawlı', + //'spécial', + //'speciaal', + //'посебно', + //'özel', + //'特別' + //], + //users: [ + //'удзельнік', + //'usuari', + //'uživatel', + //'benutzer', + //'user', + //'usuario', + //'کاربر', + //'käyttäjä', + //'notandi', + //'paydalanıwshı', + //'utilisateur', + //'gebruiker', + //'корисник', + //'kullanıcı', + //'利用者' + //], + + //sources: [ + ////blacklist these headings, as they're not plain-text + //'references', + //'see also', + //'external links', + //'further reading', + //'notes et références', + //'voir aussi', + //'liens externes', + //'参考文献', //references (ja) + //'脚注', //citations (ja) + //'関連項目', //see also (ja) + //'外部リンク' //external links (ja) + //] } diff --git a/src/_lib/encode.js b/src/_lib/encode.js index e0711409..8a68e687 100644 --- a/src/_lib/encode.js +++ b/src/_lib/encode.js @@ -1,9 +1,9 @@ -// dumpster-dive throws everything into mongodb - github.com/spencermountain/dumpster-dive -// mongo has some opinions about what characters are allowed as keys and ids. +//dumpster-dive throws everything into mongodb - github.com/spencermountain/dumpster-dive +//mongo has some opinions about what characters are allowed as keys and ids. //https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 const specialChar = /[\\\.$]/ -const encodeStr = function(str) { +const encodeStr = function (str) { if (typeof str !== 'string') { str = '' } @@ -13,7 +13,7 @@ const encodeStr = function(str) { return str } -const encodeObj = function(obj = {}) { +const encodeObj = function (obj = {}) { let keys = Object.keys(obj) for (let i = 0; i < keys.length; i += 1) { if (specialChar.test(keys[i]) === true) { @@ -28,5 +28,5 @@ const encodeObj = function(obj = {}) { } module.exports = { - encodeObj: encodeObj + encodeObj: encodeObj, } diff --git a/src/_lib/helpers.js b/src/_lib/helpers.js index fde2933f..274ba21b 100644 --- a/src/_lib/helpers.js +++ b/src/_lib/helpers.js @@ -1,18 +1,62 @@ -module.exports = { - capitalise: function(str) { - if (str && typeof str === 'string') { - return str.charAt(0).toUpperCase() + str.slice(1) - } - return '' - }, - trim_whitespace: function(str) { - if (str && typeof str === 'string') { - str = str.replace(/^\s\s*/, '') - str = str.replace(/\s\s*$/, '') - str = str.replace(/ {2}/, ' ') - str = str.replace(/\s, /, ', ') - return str - } - return '' +/** + * capitalises the input + * hello -> Hello + * hello there -> Hello there + * + * @private + * @param {string} [str] the string that will be capitalised + * @returns {string} the capitalised string + */ +function capitalise(str) { + if (str && typeof str === 'string') { + return str.charAt(0).toUpperCase() + str.slice(1) + } + return '' +} + +/** + * trim whitespaces of the ends normalize 2 spaces into one and removes whitespaces before commas + * + * @private + * @param {string} [str] the string that will be processed + * @returns {string} the processed string + */ +function trim_whitespace(str) { + if (str && typeof str === 'string') { + str = str.replace(/^\s\s*/, '') + str = str.replace(/\s\s*$/, '') + str = str.replace(/ {2}/, ' ') + str = str.replace(/\s, /, ', ') + return str } + return '' +} + +/** + * determines if an variable is an array or not + * + * @private + * @param {*} x the variable that needs to be checked + * @returns {boolean} whether the variable is an array + */ +function isArray(x) { + return Object.prototype.toString.call(x) === '[object Array]' +} + +/** + * determines if an variable is an object or not + * + * @private + * @param {*} x the variable that needs to be checked + * @returns {boolean} whether the variable is an object + */ +function isObject(x) { + return (x && Object.prototype.toString.call(x) === '[object Object]') +} + +module.exports = { + capitalise, + trim_whitespace, + isArray, + isObject } diff --git a/src/_lib/setDefaults.js b/src/_lib/setDefaults.js index 4909e288..7ac33c02 100644 --- a/src/_lib/setDefaults.js +++ b/src/_lib/setDefaults.js @@ -1,5 +1,12 @@ -// -const setDefaults = function(options, defaults) { +/** + * applies the the key values of defaults to options + * + * @private + * @param {{}} options the user options + * @param {{}} defaults the defaults + * @returns {{}} the user options with the defaults applied + */ +const setDefaults = function (options, defaults) { return Object.assign({}, defaults, options) } module.exports = setDefaults diff --git a/src/link/Link.js b/src/link/Link.js index 99785b25..263b30dd 100644 --- a/src/link/Link.js +++ b/src/link/Link.js @@ -1,28 +1,27 @@ const wikis = require('../_data/interwiki') const defaults = { - type: 'internal' + type: 'internal', } -const Link = function(data) { +const Link = function (data) { data = data || {} data = Object.assign({}, defaults, data) - // console.log(data) Object.defineProperty(this, 'data', { enumerable: false, - value: data + value: data, }) } const methods = { - text: function(str) { + text: function (str) { if (str !== undefined) { this.data.text = str } return this.data.text }, - json: function() { + json: function () { let obj = { text: this.text(), - type: this.type() + type: this.type(), } if (obj.type === 'internal') { obj.page = this.page() @@ -37,38 +36,38 @@ const methods = { } return obj }, - page: function(str) { + page: function (str) { if (str !== undefined) { this.data.page = str } return this.data.page }, - anchor: function(str) { + anchor: function (str) { if (str !== undefined) { this.data.anchor = str } return this.data.anchor || '' }, - wiki: function(str) { + wiki: function (str) { if (str !== undefined) { this.data.wiki = str } return this.data.wiki }, - type: function(str) { + type: function (str) { if (str !== undefined) { this.data.type = str } return this.data.type }, - site: function(str) { + site: function (str) { if (str !== undefined) { this.data.site = str } return this.data.site }, - // create a url for any type of link - href: function() { + //create a url for any type of link + href: function () { let type = this.type() if (type === 'external') { return this.site() @@ -89,12 +88,12 @@ const methods = { //internal link url = `./${this.page()}` } - // add anchor on the end + //add anchor on the end if (this.anchor()) { url += '#' + this.anchor() } return url - } + }, } Object.keys(methods).forEach(k => { Link.prototype[k] = methods[k] diff --git a/src/template/_parsers/01-pipe-splitter.js b/src/template/_parsers/01-pipe-splitter.js index c6b82371..6b36b33f 100644 --- a/src/template/_parsers/01-pipe-splitter.js +++ b/src/template/_parsers/01-pipe-splitter.js @@ -1,6 +1,12 @@ -//turn {{name|one|two|three}} into [name, one, two, three] -const pipeSplitter = function(tmpl) { - //start with a naiive '|' split +/** + * turn {{name|one|two|three}} into [name, one, two, three] + * + * @private + * @param {string} tmpl the template text + * @returns {string[]} a array containing all the split parameters + */ +const pipeSplitter = function (tmpl) { + //start with a naive '|' split let arr = tmpl.split(/\n?\|/) //we've split by '|', which is pretty lame //look for broken-up links and fix them :/ @@ -9,19 +15,21 @@ const pipeSplitter = function(tmpl) { return } //has '[[' but no ']]' - //has equal number of openning and closing tags. handle nested case '[[[[' ']]' - if (/\[\[[^\]]+$/.test(a) || /\{\{[^\}]+$/.test(a) - || - (a.split('{{').length !== a.split('}}').length) + //has equal number of opening and closing tags. handle nested case '[[[[' ']]' + if ( + /\[\[[^\]]+$/.test(a) || /{{[^}]+$/.test(a) + || (a.split('{{').length !== a.split('}}').length) || (a.split('[[').length !== a.split(']]').length) ) { arr[i + 1] = arr[i] + '|' + arr[i + 1] + //@ts-expect-error we can ignore this error because we filter out all nulls later in arr[i] = null } }) //cleanup any mistakes we've made arr = arr.filter(a => a !== null) arr = arr.map(a => (a || '').trim()) + //remove empty fields, only at the end: for (let i = arr.length - 1; i >= 0; i -= 1) { if (arr[i] === '') { diff --git a/src/template/_parsers/02-keyMaker.js b/src/template/_parsers/02-keyMaker.js index 2df288e2..45e832bc 100644 --- a/src/template/_parsers/02-keyMaker.js +++ b/src/template/_parsers/02-keyMaker.js @@ -6,11 +6,11 @@ const hasKey = /^[a-z0-9\u00C0-\u00FF\._\- '()œ]+=/iu const reserved = { template: true, list: true, - prototype: true + prototype: true, } //turn 'key=val' into {key:key, val:val} -const parseKey = function(str) { +const parseKey = function (str) { let parts = str.split('=') let key = parts[0] || '' key = key.toLowerCase().trim() @@ -21,15 +21,23 @@ const parseKey = function(str) { } return { key: key, - val: val.trim() + val: val.trim(), } } -//turn [a, b=v, c] into {'1':a, b:v, '2':c} -const keyMaker = function(arr, order) { - let o = 0 - return arr.reduce((h, str) => { - str = (str || '').trim() +/** + * turn [a, b=v, c] into {'1':a, b:v, '2':c} + * + * @private + * @param {string[]} arr the array of parameters + * @param {string[]} [order] the order in which the parameters are returned + * @returns {{}} and object with the names as the keys and the values as the values + */ +const keyMaker = function (arr, order) { + let keyIndex = 0 + return arr.reduce((h, str = '') => { + str = str.trim() + //support named keys - 'foo=bar' if (hasKey.test(str) === true) { let res = parseKey(str) @@ -38,15 +46,17 @@ const keyMaker = function(arr, order) { return h } } - //try a key from given 'order' names - if (order && order[o]) { - let key = order[o] //here goes! + + //if the current index is present in the order array then we have a name for the key + if (order && order[keyIndex]) { + let key = order[keyIndex] h[key] = str } else { h.list = h.list || [] h.list.push(str) } - o += 1 + + keyIndex += 1 return h }, {}) } diff --git a/src/template/_parsers/_strip.js b/src/template/_parsers/_strip.js index 82d96b31..719518e5 100644 --- a/src/template/_parsers/_strip.js +++ b/src/template/_parsers/_strip.js @@ -1,7 +1,14 @@ -//remove the top/bottom off the template -const strip = function(tmpl) { - tmpl = tmpl.replace(/^\{\{/, '') - tmpl = tmpl.replace(/\}\}$/, '') +/** + * removes the top and bottom off the template + * so it removes tje '{{' and '}}' + * + * @private + * @param {string} tmpl the string to be striped + * @returns {string} the striped string + */ +const strip = function (tmpl) { + tmpl = tmpl.replace(/^{{/, '') + tmpl = tmpl.replace(/}}$/, '') return tmpl } module.exports = strip diff --git a/src/template/_parsers/parse.js b/src/template/_parsers/parse.js index 789a6c21..af05d93b 100644 --- a/src/template/_parsers/parse.js +++ b/src/template/_parsers/parse.js @@ -6,8 +6,15 @@ const pipeSplitter = require('./01-pipe-splitter') const keyMaker = require('./02-keyMaker') const cleanup = require('./03-cleanup') -// most templates just want plaintext... -const makeFormat = function(str, fmt) { +/** + * most templates just want plaintext... + * + * @private + * @param str + * @param {'json' | 'raw'} [fmt] + * @returns {Sentence|string|Object} + */ +const makeFormat = function (str, fmt) { let s = parseSentence(str) //support various output formats if (fmt === 'json') { @@ -19,20 +26,31 @@ const makeFormat = function(str, fmt) { return s.text() } -// -const parser = function(tmpl, order, fmt) { - order = order || [] - //renomove {{}}'s +/** + * parses the parameters of a template to a usable format + * + * @private + * @param {string} tmpl the template text + * @param {string[]} [order] the order in which the parameters are returned + * @param {'json' | 'raw'} [fmt] whether you wan to parse the text of the template the raw object or just the text + * @returns {Object} the parameters of the template in a usable format + */ +const parser = function (tmpl, order = [], fmt) { + //remove {{}}'s and split based on pipes tmpl = strip(tmpl || '') let arr = pipeSplitter(tmpl) + //get template name let name = arr.shift() + //name each value let obj = keyMaker(arr, order) + //remove wiki-junk obj = cleanup(obj) + //is this a infobox/reference? - // let known = isKnown(obj); + //let known = isKnown(obj); //using '|1=content' is an escaping-thing.. if (obj['1'] && order[0] && obj.hasOwnProperty(order[0]) === false) { @@ -48,6 +66,7 @@ const parser = function(tmpl, order, fmt) { } obj[k] = makeFormat(obj[k], fmt) }) + //add the template name if (name) { obj.template = fmtName(name) diff --git a/src/template/parse.js b/src/template/parse.js index 26ab3c37..e938b650 100644 --- a/src/template/parse.js +++ b/src/template/parse.js @@ -3,28 +3,26 @@ const parse = require('./_parsers/parse') const inf = require('./_infobox') const templates = require('./templates') const generic = require('./_parsers/parse') -const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8'] +const {isArray} = require('../_lib/helpers') -const isArray = function(arr) { - return Object.prototype.toString.call(arr) === '[object Array]' -} +const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8'] //this gets all the {{template}} strings and decides how to parse them -const parseTemplate = function(tmpl, list) { +const parseTemplate = function (tmpl, list) { let name = tmpl.name if (ignore.hasOwnProperty(name) === true) { return '' } - // {{infobox settlement...}} + //{{infobox settlement...}} if (inf.isInfobox(name) === true) { let obj = parse(tmpl.body, list, 'raw') let infobox = inf.format(obj) list.push(infobox) return '' } - // //cite book, cite arxiv... + //cite book, cite arxiv... if (/^cite [a-z]/.test(name) === true) { let obj = parse(tmpl.body, list) obj.type = obj.template @@ -33,36 +31,36 @@ const parseTemplate = function(tmpl, list) { return '' } - // known template + //known template if (templates.hasOwnProperty(name) === true) { - // handle number-syntax + //handle number-syntax if (typeof templates[name] === 'number') { let obj = generic(tmpl.body, nums) let key = String(templates[name]) return obj[key] || '' } - // handle string-syntax + //handle string-syntax if (typeof templates[name] === 'string') { return templates[name] } - // handle array sytax + //handle array sytax if (isArray(templates[name]) === true) { let obj = generic(tmpl.body, templates[name]) list.push(obj) return '' } - // handle function syntax + //handle function syntax if (typeof templates[name] === 'function') { return templates[name](tmpl.body, list) } } - // unknown template, try to parse it + //unknown template, try to parse it let parsed = parse(tmpl.body) if (list && Object.keys(parsed).length > 0) { list.push(parsed) } - // ..then remove it + //..then remove it return '' } module.exports = parseTemplate From 9675c81583538b9331474698b430551ae9d96201 Mon Sep 17 00:00:00 2001 From: Wouter van der Plas Date: Sat, 24 Oct 2020 16:44:18 +0200 Subject: [PATCH 004/117] refactored Sections to es classes --- src/01-document/Document.js | 6 +- src/02-section/Section.js | 311 +++++++++++++++-------- src/02-section/heading.js | 4 +- src/02-section/index.js | 49 ++-- src/02-section/start-to-end/election.js | 36 ++- src/02-section/start-to-end/gallery.js | 27 +- src/02-section/start-to-end/index.js | 51 +++- src/02-section/start-to-end/math.js | 37 ++- src/02-section/start-to-end/mlb.js | 23 +- src/02-section/start-to-end/mma.js | 22 +- src/02-section/start-to-end/nba.js | 24 +- src/02-section/toJson.js | 2 +- src/03-paragraph/index.js | 8 +- src/reference/index.js | 33 +-- src/table/index.js | 12 +- src/template/index.js | 20 +- tests/Document.test.js | 26 +- tests/Section.test.js | 317 ++++++++++++++++++++++++ tests/table.test.js | 137 +++++----- 19 files changed, 817 insertions(+), 328 deletions(-) create mode 100644 tests/Section.test.js diff --git a/src/01-document/Document.js b/src/01-document/Document.js index adc4722f..fa70fa82 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -307,7 +307,7 @@ class Document { */ sections(clue) { let arr = this._sections || [] - arr.forEach((sec) => (sec.doc = this)) + arr.forEach((sec) => (sec._doc = this)) //grab a specific section, by its title if (typeof clue === 'string') { @@ -369,7 +369,7 @@ class Document { } /** - * if no clue is provided, it compile an array of sentences in the wiki text. + * if no clue is provided, it compiles an array of sentences in the wiki text. * if the clue is provided it return the sentence at the provided index * * @param {number} clue the index of the wanted sentence @@ -574,7 +574,7 @@ class Document { /** * finds and returns all coordinates - * or if an clue is given, the coordinate ot the index + * or if an clue is given, the coordinate at the index * * @param {number} [clue] the index of the coordinate returned * @returns {object[]|object|null} if a clue is given, the coordinate of null, else an array of coordinates diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 5b1db996..42fefd38 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -1,6 +1,17 @@ +//@ts-expect-error because this is some kind of type definition for jsdoc that's why typescript does not recognize it +const Document = require('../01-document/Document') const toJSON = require('./toJson') const setDefaults = require('../_lib/setDefaults') +const parse = { + heading: require('./heading'), + table: require('../table'), + paragraphs: require('../03-paragraph'), + templates: require('../template'), + references: require('../reference'), + startEndTemplates: require('./start-to-end'), +} + const defaults = { tables: true, references: true, @@ -9,40 +20,66 @@ const defaults = { infoboxes: true, } -//the stuff between headings - 'History' section for example -const Section = function (data) { - this.depth = data.depth - this.doc = null - this._title = data.title || '' - Object.defineProperty(this, 'doc', { - enumerable: false, - value: null, - }) - data.templates = data.templates || [] - Object.defineProperty(this, 'data', { - enumerable: false, - value: data, - }) -} +/** + * @class + */ +class Section { + /** + * the stuff between headings - 'History' section for example + * + * @param {Object} data the data already gathered about the section + * @param {Document} doc the document that this section belongs to + */ + constructor(data, doc) { + this._doc = doc || null + + + this._title = data.title || '' + this._depth = data.depth + this._wiki = data.wiki || '' + this._templates = [] + this._tables = [] + this._infoboxes = [] + this._references = [] + this._paragraphs = [] + + //parse-out ' and {{start}}...{{end}} templates + const startEndTemplates = parse.startEndTemplates(this, doc) + this._wiki = startEndTemplates.text + this._templates = [...this._templates, ...startEndTemplates.templates] + + //parse-out the tags + parse.references(this) + //parse-out all {{templates}} + parse.templates(this, doc) -const methods = { - title: function () { + //parse the tables + parse.table(this) + + //now parse all double-newlines + parse.paragraphs(this, doc) + } + + title() { return this._title || '' - }, - index: function () { - if (!this.doc) { + } + + index() { + if (!this._doc) { return null } - let index = this.doc.sections().indexOf(this) + let index = this._doc.sections().indexOf(this) if (index === -1) { return null } return index - }, - indentation: function () { - return this.depth - }, - sentences: function (n) { + } + + indentation() { + return this._depth + } + + sentences(n) { let arr = this.paragraphs().reduce((list, p) => { return list.concat(p.sentences()) }, []) @@ -50,54 +87,73 @@ const methods = { return arr[n] } return arr || [] - }, - paragraphs: function (n) { - let arr = this.data.paragraphs || [] + } + + paragraphs(n) { + let arr = this._paragraphs || [] if (typeof n === 'number') { return arr[n] } return arr || [] - }, - paragraph: function (n) { - let arr = this.data.paragraphs || [] + } + + paragraph(n) { + let arr = this._paragraphs || [] if (typeof n === 'number') { return arr[n] } return arr[0] - }, - links: function (n) { + } + + links(n) { let arr = [] + this.infoboxes().forEach(templ => { - templ.links(n).forEach(link => arr.push(link)) + arr.push(templ.links()) }) + this.sentences().forEach(s => { - s.links(n).forEach(link => arr.push(link)) + arr.push(s.links()) }) + this.tables().forEach(t => { - t.links(n).forEach(link => arr.push(link)) + arr.push(t.links()) }) + this.lists().forEach(list => { - list.links(n).forEach(link => arr.push(link)) + arr.push(list.links()) }) + + arr = arr + .reduce((acc, val) => acc.concat(val), []) //flatten the array + .filter((val) => val !== undefined) //filter out all the undefined from the flattened empty arrays + if (typeof n === 'number') { return arr[n] - } else if (typeof n === 'string') { - //grab a link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1) //titlecase it - let link = arr.find(o => o.page() === n) + } + + if (typeof n === 'string') { + + n = n.toLowerCase() + + let link = arr.find(o => o.page().toLowerCase() === n) + return link === undefined ? [] : [link] } + return arr - }, - tables: function (clue) { - let arr = this.data.tables || [] + } + + tables(clue) { + let arr = this._tables || [] if (typeof clue === 'number') { return arr[clue] } return arr - }, - templates: function (clue) { - let arr = this.data.templates || [] + } + + templates(clue) { + let arr = this._templates || [] arr = arr.map(t => t.json()) if (typeof clue === 'number') { return arr[clue] @@ -107,16 +163,18 @@ const methods = { return arr.filter(o => o.template === clue || o.name === clue) } return arr - }, - infoboxes: function (clue) { - let arr = this.data.infoboxes || [] + } + + infoboxes(clue) { + let arr = this._infoboxes || [] if (typeof clue === 'number') { return arr[clue] } return arr - }, - coordinates: function (clue) { - let arr = [].concat(this.templates('coord'), this.templates('coor')) + } + + coordinates(clue) { + let arr = [...this.templates('coord'), ...this.templates('coor')] if (typeof clue === 'number') { if (!arr[clue]) { return [] @@ -124,8 +182,9 @@ const methods = { return arr[clue] } return arr - }, - lists: function (clue) { + } + + lists(clue) { let arr = [] this.paragraphs().forEach(p => { arr = arr.concat(p.lists()) @@ -134,7 +193,8 @@ const methods = { return arr[clue] } return arr - }, + } + interwiki(num) { let arr = [] this.paragraphs().forEach(p => { @@ -144,8 +204,9 @@ const methods = { return arr[num] } return arr || [] - }, - images: function (clue) { + } + + images(clue) { let arr = [] this.paragraphs().forEach(p => { arr = arr.concat(p.images()) @@ -154,67 +215,101 @@ const methods = { return arr[clue] } return arr || [] - }, - references: function (clue) { - let arr = this.data.references || [] + } + + references(clue) { + let arr = this._references || [] if (typeof clue === 'number') { return arr[clue] } return arr - }, + } + + citations(clue) { + return this.references(clue) + } //transformations - remove: function () { - if (!this.doc) { + remove() { + if (!this._doc) { return null } let bads = {} bads[this.title()] = true //remove children too this.children().forEach(sec => (bads[sec.title()] = true)) - let sections = this.doc.sections() + let sections = this._doc.sections() sections = sections.filter(sec => bads.hasOwnProperty(sec.title()) !== true) - this.doc._sections = sections - return this.doc - }, + this._doc._sections = sections + return this._doc + } //move-around sections like in jquery - nextSibling: function () { - if (!this.doc) { + nextSibling() { + //if this section is not part of a document then we can go to the next part of the document + if (!this._doc) { return null } - let sections = this.doc.sections() + + //first we get the a list of sections and our own position in this list + let sections = this._doc.sections() let index = this.index() - for (let i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth < this.depth) { + + //then we look trough the list looking for the next sibling + //aka we look the next item at the same depth as us + //so we start the loop at the next section in the list and go till the length of the list + for (let i = index + 1; i < sections.length; i++) { + //if the depth is smaller then the current depth then there is no next sibling + //aka the depth of the section at position i a level higher then this section then this section is the last section at this depth + if (sections[i]._depth < this._depth) { return null } - if (sections[i].depth === this.depth) { + //if the section has the same depth as the current section then it is the next sibling + if (sections[i]._depth === this._depth) { return sections[i] } } + //if the loop has no results then there is no next sibling and we are at the end of the file return null - }, - lastSibling: function () { - if (!this.doc) { + } + + next() { + return this.nextSibling() + } + + lastSibling() { + if (!this._doc) { return null } - let sections = this.doc.sections() + let sections = this._doc.sections() let index = this.index() return sections[index - 1] || null - }, - children: function (n) { - if (!this.doc) { + } + + last() { + return this.lastSibling() + } + + previousSibling() { + return this.lastSibling() + } + + previous() { + return this.lastSibling() + } + + children(n) { + if (!this._doc) { return null } - let sections = this.doc.sections() + let sections = this._doc.sections() let index = this.index() let children = [] //(immediately preceding sections with higher depth) - if (sections[index + 1] && sections[index + 1].depth > this.depth) { + if (sections[index + 1] && sections[index + 1]._depth > this._depth) { for (let i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth > this.depth) { + if (sections[i]._depth > this._depth) { children.push(sections[i]) } else { break @@ -229,40 +324,46 @@ const methods = { return children[n] } return children - }, - parent: function () { - if (!this.doc) { + } + + sections(n) { + return this.children(n) + } + + parent() { + if (!this._doc) { return null } - let sections = this.doc.sections() + let sections = this._doc.sections() let index = this.index() for (let i = index; i >= 0; i -= 1) { - if (sections[i] && sections[i].depth < this.depth) { + if (sections[i] && sections[i]._depth < this._depth) { return sections[i] } } return null - }, - text: function (options) { + } + + text(options) { options = setDefaults(options, defaults) let pList = this.paragraphs() pList = pList.map(p => p.text(options)) return pList.join('\n\n') - }, - json: function (options) { + } + + json(options) { options = setDefaults(options, defaults) return toJSON(this, options) - }, + } + + toJSON() { + return Object.entries(this) + .filter((entry) => entry[0] !== '_doc') + .reduce((accum, [k, v]) => { + accum[k] = v + return accum + }, {}) + } } -//aliases -methods.next = methods.nextSibling -methods.last = methods.lastSibling -methods.previousSibling = methods.lastSibling -methods.previous = methods.lastSibling -methods.citations = methods.references -methods.sections = methods.children -Object.keys(methods).forEach(k => { - Section.prototype[k] = methods[k] -}) module.exports = Section diff --git a/src/02-section/heading.js b/src/02-section/heading.js index 0fb7fa8b..bea3b2bc 100644 --- a/src/02-section/heading.js +++ b/src/02-section/heading.js @@ -19,9 +19,9 @@ const parseHeading = function (section, str) { title = title.replace(/\{\{.+?\}\}/, '') //same for references (i know..) - let obj = { wiki: title } + let obj = {_wiki: title} parseReferences(obj) - title = obj.wiki + title = obj._wiki //trim leading/trailing whitespace title = trim_whitespace(title) diff --git a/src/02-section/index.js b/src/02-section/index.js index 9914b41a..b039706d 100644 --- a/src/02-section/index.js +++ b/src/02-section/index.js @@ -6,25 +6,6 @@ const section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g //interpret ==heading== lines const parse = { heading: require('./heading'), - table: require('../table'), - paragraphs: require('../03-paragraph'), - templates: require('../template'), - references: require('../reference'), - startEndTemplates: require('./start-to-end'), -} - -const oneSection = function (section, doc) { - parse.startEndTemplates(section, doc) - //parse-out the tags - parse.references(section) - //parse-out all {{templates}} - parse.templates(section, doc) - //parse the tables - parse.table(section) - //now parse all double-newlines - parse.paragraphs(section, doc) - section = new Section(section) - return section } const removeReferenceSection = function (sections) { @@ -33,10 +14,12 @@ const removeReferenceSection = function (sections) { if (s.paragraphs().length > 0) { return true } + //does it have some wacky templates? if (s.templates().length > 0) { return true } + //what it has children? awkward if (sections[i + 1] && sections[i + 1].depth > s.depth) { sections[i + 1].depth -= 1 //move it up a level?... @@ -49,29 +32,29 @@ const removeReferenceSection = function (sections) { const parseSections = function (doc) { let sections = [] - let split = doc._wiki.split(section_reg) - for (let i = 0; i < split.length; i += 2) { - let heading = split[i - 1] || '' - let wiki = split[i] || '' + let splits = doc._wiki.split(section_reg) + + for (let i = 0; i < splits.length; i += 2) { + let heading = splits[i - 1] || '' + let wiki = splits[i] || '' + if (wiki === '' && heading === '') { //usually an empty 'intro' section continue } - let section = { + + let data = { title: '', depth: null, wiki: wiki, - templates: [], - tables: [], - infoboxes: [], - references: [], } - //figure-out title/depth - parse.heading(section, heading) - //parse it up - let s = oneSection(section, doc) - sections.push(s) + + //figure-out title and depth + parse.heading(data, heading) + + sections.push(new Section(data, doc)) } + //remove empty references section return removeReferenceSection(sections) } diff --git a/src/02-section/start-to-end/election.js b/src/02-section/start-to-end/election.js index 401ca56b..d5440bee 100644 --- a/src/02-section/start-to-end/election.js +++ b/src/02-section/start-to-end/election.js @@ -1,31 +1,43 @@ const parseTemplates = require('../../template') -//this is a non-traditional template, for some reason -//https://en.wikipedia.org/wiki/Template:Election_box -const parseElection = function(section) { - let wiki = section.wiki - wiki = wiki.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, tmpl => { + +/** + * parses out the `Election_box` template from the wiki text + * + * this is a non-traditional template, for some reason + * https://en.wikipedia.org/wiki/Template:Election_box + * + * @private + * @param {Catcher} catcher an object to provide and catch data + */ +const parseElection = function (catcher) { + catcher.text = catcher.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, tmpl => { let data = { - wiki: tmpl, - templates: [] + _wiki: tmpl, + _templates: [], } + //put it through our full template parser.. parseTemplates(data) + //okay, pull it apart into something sensible.. - let templates = data.templates.map(t => t.json()) + let templates = data._templates.map(t => t.json()) + let start = templates.find(t => t.template === 'election box') || {} let candidates = templates.filter(t => t.template === 'election box candidate') let summary = templates.find(t => t.template === 'election box gain' || t.template === 'election box hold') || {} + if (candidates.length > 0 || summary) { - section.templates.push({ + catcher.templates.push({ template: 'election box', title: start.title, candidates: candidates, - summary: summary.data + summary: summary.data, }) } - //remove it all + + //return empty string to remove the template from the wiki text return '' }) - section.wiki = wiki } + module.exports = parseElection diff --git a/src/02-section/start-to-end/gallery.js b/src/02-section/start-to-end/gallery.js index a1b7a240..b84be5c5 100644 --- a/src/02-section/start-to-end/gallery.js +++ b/src/02-section/start-to-end/gallery.js @@ -1,20 +1,31 @@ +//@ts-expect-error because this is some kind of type definition for jsdoc that's why typescript does not recognize it +const Document = require('../../01-document/Document') +const Section = require('../Section') + const parseSentence = require('../../04-sentence/').fromText const Image = require('../../image/Image') //okay, is a xml-tag, with newline-separated data, somehow pivoted by '|'... //all deities help us. truly -> https://en.wikipedia.org/wiki/Help:Gallery_tag //- not to be confused with https://en.wikipedia.org/wiki/Template:Gallery... -const parseGallery = function (section, doc) { - let wiki = section.wiki - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/gallery>/g, (_, attrs, inside) => { +/** + * + * @private + * @param {Catcher} catcher + * @param {Document} doc + * @param {Section} section + */ +const parseGallery = function (catcher, doc, section) { + catcher.text = catcher.text.replace(/]*?)>([\s\S]+?)<\/gallery>/g, (_, attrs, inside) => { let images = inside.split(/\n/g) images = images.filter((str) => str && str.trim() !== '') + //parse the line, which has an image and sometimes a caption images = images.map((str) => { let arr = str.split(/\|/) let obj = { file: arr[0].trim(), - lang: doc._lang, - domain: doc._domain, + lang: doc.lang(), + domain: doc.domain(), } let img = new Image(obj).json() let caption = arr.slice(1).join('|') @@ -23,16 +34,18 @@ const parseGallery = function (section, doc) { } return img }) + //add it to our templates list if (images.length > 0) { - section.templates.push({ + catcher.templates.push({ template: 'gallery', images: images, pos: section.title, }) } + + //return empty string to remove the template from the wiki text return '' }) - section.wiki = wiki } module.exports = parseGallery diff --git a/src/02-section/start-to-end/index.js b/src/02-section/start-to-end/index.js index 9e892dc9..00845534 100644 --- a/src/02-section/start-to-end/index.js +++ b/src/02-section/start-to-end/index.js @@ -1,19 +1,50 @@ +//@ts-expect-error because this is some kind of type definition for jsdoc that's why typescript does not recognize it +const Document = require('../../01-document/Document') +const Section = require('../Section') + const parseGallery = require('./gallery') const parseElection = require('./election') const parseNBA = require('./nba') const parseMlb = require('./mlb') const parseMMA = require('./mma') const parseMath = require('./math') -// Most templates are '{{template}}', but then, some are ''. -// ... others are {{start}}...{{end}} -// -> these are those ones. -const xmlTemplates = function (section, doc) { - parseElection(section) - parseGallery(section, doc) - parseMath(section) - parseMlb(section) - parseMMA(section) - parseNBA(section) + + +/** + * a catcher for the data used in these parsers + * + * @private + * @typedef Catcher + * @property {Template[]} templates the found templates + * @property {string} text the wiki text + */ + +/** + * parses out non standard templates + * + * Most templates are '{{template}}', + * but then, some are '' others are {{start}}...{{end}} + * -> the templates here are of the second type. + * + * @private + * @param {Section} section + * @param {Document} doc + * @return {Catcher} + */ +const xmlTemplates = function ( section, doc) { + const catcher = { + templates: [], + text: section._wiki + } + + parseElection(catcher) + parseGallery(catcher, doc, section) + parseMath(catcher) + parseMlb(catcher) + parseMMA(catcher) + parseNBA(catcher) + + return catcher } module.exports = xmlTemplates diff --git a/src/02-section/start-to-end/math.js b/src/02-section/start-to-end/math.js index c1d90314..cc605958 100644 --- a/src/02-section/start-to-end/math.js +++ b/src/02-section/start-to-end/math.js @@ -1,30 +1,43 @@ const parseSentence = require('../../04-sentence/').fromText -//xml y=mx+b support -//https://en.wikipedia.org/wiki/Help:Displaying_a_formula -const parseMath = function(section) { - let wiki = section.wiki - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/math>/g, (_, attrs, inside) => { + +/** + * try to parse out the math and chem templates + * + * xml y=mx+b support + * https://en.wikipedia.org/wiki/Help:Displaying_a_formula + * + * @private + * @param {Catcher} catcher + */ +const parseMath = function (catcher) { + catcher.text = catcher.text.replace(/]*?)>([\s\S]+?)<\/math>/g, (_, attrs, inside) => { //clean it up a little? let formula = parseSentence(inside).text() - section.templates.push({ + + catcher.templates.push({ template: 'math', formula: formula, - raw: inside + raw: inside, }) - //should we atleast try to render it in plaintext? :/ + + //should we at least try to render it in plaintext? :/ if (formula && formula.length < 12) { return formula } + + //return empty string to remove the template from the wiki text return '' }) + //try chemistry version too - wiki = wiki.replace(/]*?)>([\s\S]+?)<\/chem>/g, (_, attrs, inside) => { - section.templates.push({ + catcher.text = catcher.text.replace(/]*?)>([\s\S]+?)<\/chem>/g, (_, attrs, inside) => { + catcher.templates.push({ template: 'chem', - data: inside + data: inside, }) + + //return empty string to remove the template from the wiki text return '' }) - section.wiki = wiki } module.exports = parseMath diff --git a/src/02-section/start-to-end/mlb.js b/src/02-section/start-to-end/mlb.js index 1d16552f..9c0bb2f2 100644 --- a/src/02-section/start-to-end/mlb.js +++ b/src/02-section/start-to-end/mlb.js @@ -2,7 +2,7 @@ const tableParser = require('../../table/parse') //https://en.wikipedia.org/wiki/Template:MLB_game_log_section //this is pretty nuts -const whichHeadings = function(tmpl) { +const whichHeadings = function (tmpl) { let headings = ['#', 'date', 'opponent', 'score', 'win', 'loss', 'save', 'attendance', 'record'] if (/\|stadium=y/i.test(tmpl) === true) { headings.splice(7, 0, 'stadium') //save, stadium, attendance @@ -15,13 +15,18 @@ const whichHeadings = function(tmpl) { } return headings } - -const parseMlb = function(section) { - let wiki = section.wiki - wiki = wiki.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, tmpl => { +/** + * + * @private + * @param {Catcher} catcher + */ +const parseMlb = function (catcher) { + catcher.text = catcher.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, tmpl => { let headings = whichHeadings(tmpl) + tmpl = tmpl.replace(/^\{\{.*?\}\}/, '') tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, '') + let headers = '! ' + headings.join(' !! ') let table = '{|\n' + headers + '\n' + tmpl + '\n|}' let rows = tableParser(table) @@ -31,12 +36,14 @@ const parseMlb = function(section) { }) return row }) - section.templates.push({ + + catcher.templates.push({ template: 'mlb game log section', - data: rows + data: rows, }) + + //return empty string to remove the template from the wiki text return '' }) - section.wiki = wiki } module.exports = parseMlb diff --git a/src/02-section/start-to-end/mma.js b/src/02-section/start-to-end/mma.js index 2e2548c1..b7fb0bd1 100644 --- a/src/02-section/start-to-end/mma.js +++ b/src/02-section/start-to-end/mma.js @@ -1,12 +1,18 @@ const tableParser = require('../../table/parse') let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes'] -//https://en.wikipedia.org/wiki/Template:MMA_record_start -const parseMMA = function(section) { - let wiki = section.wiki - wiki = wiki.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, tmpl => { +/** + * + * https://en.wikipedia.org/wiki/Template:MMA_record_start + * + * @private + * @param {Catcher} catcher + */ +const parseMMA = function (catcher) { + catcher.text = catcher.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, tmpl => { tmpl = tmpl.replace(/^\{\{.*?\}\}/, '') tmpl = tmpl.replace(/\{\{end\}\}/i, '') + let headers = '! ' + headings.join(' !! ') let table = '{|\n' + headers + '\n' + tmpl + '\n|}' let rows = tableParser(table) @@ -16,12 +22,14 @@ const parseMMA = function(section) { }) return row }) - section.templates.push({ + + catcher.templates.push({ template: 'mma record start', - data: rows + data: rows, }) + + //return empty string to remove the template from the wiki text return '' }) - section.wiki = wiki } module.exports = parseMMA diff --git a/src/02-section/start-to-end/nba.js b/src/02-section/start-to-end/nba.js index 0f408a76..71a86c01 100644 --- a/src/02-section/start-to-end/nba.js +++ b/src/02-section/start-to-end/nba.js @@ -2,32 +2,38 @@ const tableParser = require('../../table/parse') const keys = { coach: ['team', 'year', 'g', 'w', 'l', 'w-l%', 'finish', 'pg', 'pw', 'pl', 'pw-l%'], player: ['year', 'team', 'gp', 'gs', 'mpg', 'fg%', '3p%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'], - roster: ['player', 'gp', 'gs', 'mpg', 'fg%', '3fg%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'] + roster: ['player', 'gp', 'gs', 'mpg', 'fg%', '3fg%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'], } -//https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start -const parseNBA = function(section) { - let wiki = section.wiki - wiki = wiki.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, (tmpl, name) => { +/** + * https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + * + * @private + * @param {Catcher} catcher + */ +const parseNBA = function (catcher) { + catcher.text = catcher.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, (tmpl, name) => { tmpl = tmpl.replace(/^\{\{.*?\}\}/, '') tmpl = tmpl.replace(/\{\{s-end\}\}/, '') name = name.toLowerCase().trim() + let headers = '! ' + keys[name].join(' !! ') let table = '{|\n' + headers + '\n' + tmpl + '\n|}' let rows = tableParser(table) - rows = rows.map(row => { Object.keys(row).forEach(k => { row[k] = row[k].text() }) return row }) - section.templates.push({ + + catcher.templates.push({ template: 'NBA ' + name + ' statistics', - data: rows + data: rows, }) + + //return empty string to remove the template from the wiki text return '' }) - section.wiki = wiki } module.exports = parseNBA diff --git a/src/02-section/toJson.js b/src/02-section/toJson.js index fb396cea..e2db094d 100644 --- a/src/02-section/toJson.js +++ b/src/02-section/toJson.js @@ -20,7 +20,7 @@ const toJSON = function(section, options) { data.title = section.title() } if (options.depth === true) { - data.depth = section.depth + data.depth = section._depth } //these return objects if (options.paragraphs === true) { diff --git a/src/03-paragraph/index.js b/src/03-paragraph/index.js index 8151f614..68ce70f2 100644 --- a/src/03-paragraph/index.js +++ b/src/03-paragraph/index.js @@ -8,7 +8,7 @@ const parse = { } const parseParagraphs = function (section, doc) { - let wiki = section.wiki + let wiki = section._wiki let paragraphs = wiki.split(twoNewLines) //don't create empty paragraphs paragraphs = paragraphs.filter((p) => p && p.trim().length > 0) @@ -21,13 +21,13 @@ const parseParagraphs = function (section, doc) { } //parse the lists parse.list(paragraph) - // parse images + //parse images parse.image(paragraph, doc) //parse the sentences parseSentences(paragraph) return new Paragraph(paragraph) }) - section.wiki = wiki - section.paragraphs = paragraphs + section._wiki = wiki + section._paragraphs = paragraphs } module.exports = parseParagraphs diff --git a/src/reference/index.js b/src/reference/index.js index fb8df056..577a7c87 100644 --- a/src/reference/index.js +++ b/src/reference/index.js @@ -1,14 +1,14 @@ const parse = require('../template/_parsers/parse') -// const parse = require('../../templates/wikipedia/page').citation; +//const parse = require('../../templates/wikipedia/page').citation; const parseSentence = require('../04-sentence').fromText const Reference = require('./Reference') //structured Cite templates - {{Cite.. -const hasCitation = function(str) { +const hasCitation = function (str) { return /^ *?\{\{ *?(cite|citation)/i.test(str) && /\}\} *?$/.test(str) && /citation needed/i.test(str) === false } -const parseCitation = function(tmpl) { +const parseCitation = function (tmpl) { let obj = parse(tmpl) obj.type = obj.template.replace(/cite /, '') obj.template = 'citation' @@ -16,21 +16,22 @@ const parseCitation = function(tmpl) { } //handle unstructured ones - some text -const parseInline = function(str) { +const parseInline = function (str) { let obj = parseSentence(str) || {} return { template: 'citation', type: 'inline', data: {}, - inline: obj + inline: obj, } } -// parse xml tags -const parseRefs = function(section) { +//parse xml tags +const parseRefs = function (section) { let references = [] - let wiki = section.wiki - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function(a, tmpl) { + let wiki = section._wiki + + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (_a, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl) if (obj) { @@ -42,10 +43,12 @@ const parseRefs = function(section) { } return ' ' }) - // + + // wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' ') - // - wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function(a, tmpl) { + + // + wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (a, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl) if (obj) { @@ -57,9 +60,11 @@ const parseRefs = function(section) { } return ' ' }) + //now that we're done with xml, do a generic + dangerous xml-tag removal wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' ') // - section.references = references.map(r => new Reference(r)) - section.wiki = wiki + section._references = references.map(r => new Reference(r)) + section._wiki = wiki } + module.exports = parseRefs diff --git a/src/table/index.js b/src/table/index.js index 911776fc..764df3a2 100644 --- a/src/table/index.js +++ b/src/table/index.js @@ -1,13 +1,13 @@ const parseTable = require('./parse') const Table = require('./Table') -// const table_reg = /\{\|[\s\S]+?\|\}/g; //the largest-cities table is ~70kchars. +//const table_reg = /\{\|[\s\S]+?\|\}/g; //the largest-cities table is ~70k chars. const openReg = /^\s*{\|/ const closeReg = /^\s*\|}/ //tables can be recursive, so looky-here. -const findTables = function(section) { +const findTables = function (section) { let list = [] - let wiki = section.wiki + let wiki = section._wiki let lines = wiki.split('\n') let stack = [] for (let i = 0; i < lines.length; i += 1) { @@ -32,7 +32,7 @@ const findTables = function(section) { let tables = [] list.forEach(str => { if (str) { - //also reremove a newline at the end of the table (awkward) + //also re-remove a newline at the end of the table (awkward) wiki = wiki.replace(str + '\n', '') wiki = wiki.replace(str, '') let data = parseTable(str) @@ -43,9 +43,9 @@ const findTables = function(section) { }) if (tables.length > 0) { - section.tables = tables + section._tables = tables } - section.wiki = wiki + section._wiki = wiki } module.exports = findTables diff --git a/src/template/index.js b/src/template/index.js index 67fd081e..eac5a2e5 100644 --- a/src/template/index.js +++ b/src/template/index.js @@ -25,7 +25,7 @@ const isInfobox = function (obj) { //reduce the scary recursive situations const allTemplates = function (section, doc) { - let wiki = section.wiki + let wiki = section._wiki //nested data-structure of templates let list = findTemplates(wiki) let keep = [] @@ -53,30 +53,30 @@ const allTemplates = function (section, doc) { list.forEach((node) => parseThem(node, null)) //sort-out the templates we decide to keep - section.infoboxes = section.infoboxes || [] - section.references = section.references || [] - section.templates = section.templates || [] - section.templates = section.templates.concat(keep) + section._infoboxes = section._infoboxes || [] + section._references = section._references || [] + section._templates = section._templates || [] + section._templates = section._templates.concat(keep) //remove references and infoboxes from our list - section.templates = section.templates.filter((obj) => { + section._templates = section._templates.filter((obj) => { if (isReference(obj) === true) { - section.references.push(new Reference(obj)) + section._references.push(new Reference(obj)) return false } if (isInfobox(obj) === true) { obj.domain = doc._domain - section.infoboxes.push(new Infobox(obj)) + section._infoboxes.push(new Infobox(obj)) return false } return true }) - section.templates = section.templates.map((obj) => new Template(obj)) + section._templates = section._templates.map((obj) => new Template(obj)) //remove the templates from our wiki text list.forEach((node) => { wiki = wiki.replace(node.body, node.out) }) - section.wiki = wiki + section._wiki = wiki } module.exports = allTemplates diff --git a/tests/Document.test.js b/tests/Document.test.js index 6a889691..ed5270e5 100644 --- a/tests/Document.test.js +++ b/tests/Document.test.js @@ -383,13 +383,9 @@ test('sections - get - if the clue is a undefined / unset return the list of cat let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - const expected = [ - {depth: 0, _title: ''}, - {depth: 0, _title: 'Career'}, - {depth: 0, _title: 'References'}, - ] + const expected = [321, 401, 0] - t.deepEqual(JSON.stringify(doc.sections()), JSON.stringify(expected), 'the sections in the wiki text') + t.deepEqual(doc.sections().map(s => s.text().length), expected, 'the sections in the wiki text') t.end() }) @@ -397,7 +393,7 @@ test('sections - get - if the clue is a number return the sections in that index let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(JSON.stringify(doc.sections(1)), JSON.stringify({depth: 0, _title: 'Career'}), 'the section at index 1') + t.equal(doc.sections(1).text().length, 401, 'the section at index 1') t.end() }) @@ -405,10 +401,7 @@ test('sections - get - if the clue is a string return the sections of that title let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(JSON.stringify(doc.sections('Career')), JSON.stringify({ - depth: 0, - _title: 'Career', - }), 'the section at index 1') + t.equal(doc.sections('Career').text().length, 401, 'the section with the title "Career"') t.end() }) @@ -416,10 +409,7 @@ test('sections - get - if the clue is a string return the sections of that title let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(JSON.stringify(doc.sections('CAREER')), JSON.stringify({ - depth: 0, - _title: 'Career', - }), 'the section at index 1') + t.equal(doc.sections('CAREER').text().length, 401, 'the section with the title "Career"') t.end() }) @@ -1012,7 +1002,7 @@ test('json - get - get the json version of the document', (t) => { let doc = wtf(str) //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(JSON.stringify(doc.json()).length, 1971, 'version of the document') + t.deepEqual(JSON.stringify(doc.json()).length, 1971, 'JSON version of the document') t.end() }) //debug @@ -1051,7 +1041,9 @@ test('plurals / singular - all should exist', (t) => { let singels = { 'section': [ { - clue: undefined, json: true, expected: { + clue: undefined, + json: true, + expected: { 'title': '', 'depth': 0, 'paragraphs': [{ diff --git a/tests/Section.test.js b/tests/Section.test.js new file mode 100644 index 00000000..ac332548 --- /dev/null +++ b/tests/Section.test.js @@ -0,0 +1,317 @@ +const test = require('tape') +const wtf = require('./lib') +const fs = require('fs') +const path = require('path') + +//title +test('Tile - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(1) + t.equal(sec.title(), 'Introduction', 'the title should equal "Introduction"') + t.end() +}) + +test('Tile - get - with no title', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(0) + t.equal(sec.title(), '', 'the title should equal ""') + t.end() +}) + +//index +test('index - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(1) + t.equal(sec.index(), 1, 'the index should equal "1"') + t.end() +}) + +//indentation +test('indentation - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(1) + + t.equal(sec.indentation(), 0, 'the index should equal "0"') + t.end() +}) + +test('indentation - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + t.equal(sec.indentation(), 1, 'the index should equal "1"') + t.end() +}) + +//sentences +test('sentences - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + const expected = [109, 229, 118, 120, 95, 94, 192, 107, 138, 143, 165, 155, 39, 100, 197, 101] + t.deepEqual(sec.sentences().map(s => s.text().length), expected, 'the index should equal the expected') + t.end() +}) + +test('sentences - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + t.equal(sec.sentences(1).text().length, 229, 'the index should equal the expected') + t.end() +}) + +//paragraphs +test('paragraphs - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + const expected = [675, 1141, 299] + t.deepEqual(sec.paragraphs().map(s => s.text().length), expected, 'the paragraphs should equal the expected') + t.end() +}) + +test('paragraphs - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + t.equal(sec.paragraphs(1).text().length, 1141, 'the paragraphs should equal the expected') + t.end() +}) + +//paragraph +test('paragraphs - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + t.equal(sec.paragraph().text().length, 675, 'the paragraphs should equal the expected') + t.end() +}) + +test('paragraphs - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + t.equal(sec.paragraph(1).text().length, 1141, 'the paragraphs should equal the expected') + t.end() +}) +//links +test('links - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + const expected = [12, 10, 19, 34, 30, 25, 19, 25, 7, 21] + t.deepEqual(sec.links().map(l => l.href().length), expected, 'the links should equal the expected') + t.end() +}) + +test('links - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + t.equal(sec.links(1).href().length, 10, 'the links should equal the expected') + t.end() +}) + +test('links - get - string', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') + let sec = wtf(str).section(3) + + t.equal(sec.links('protein sequences')[0].href().length, 19, 'the links should equal the expected') + t.end() +}) + +//tables +test('tables - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', '2008-British-motorcycle-Grand-Prix.txt'), 'utf-8') + let sec = wtf(str).section(1) + + const expected = [18] + t.deepEqual(sec.tables().map(s => s.keyValue().length), expected, 'the tables should equal the expected') + t.end() +}) + +test('tables - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', '2008-British-motorcycle-Grand-Prix.txt'), 'utf-8') + let sec = wtf(str).section(1) + + t.equal(sec.tables(0).keyValue().length, 18, 'the tables should equal the expected') + t.end() +}) + +//templates +test('templates - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + const expected = [148, 195, 54, 49, 727, 176, 182, 399, 70, 23, 18, 18, 21] + t.deepEqual(sec.templates().map(s => JSON.stringify(s).length), expected, 'the templates should equal the expected') + t.end() +}) + +test('templates - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + t.equal(JSON.stringify(sec.templates(1)).length, 195, 'the templates should equal the expected') + t.end() +}) + +test('templates - get - string', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + t.equal(JSON.stringify(sec.templates('coord')).length, 72, 'the templates should equal the expected') + t.end() +}) + +//infoboxes +test('infoboxes - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + const expected = [33] + t.deepEqual(sec.infoboxes().map(s => JSON.stringify(s).length), expected, 'the infoboxes should equal the expected') + t.end() +}) + +test('infoboxes - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + t.equal(JSON.stringify(sec.infoboxes(0)).length, 33, 'the infoboxes should equal the expected') + t.end() +}) + +//coordinates +test('coordinates - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + const expected = [70] + t.deepEqual(sec.coordinates().map(s => JSON.stringify(s).length), expected, 'the coordinates should equal the expected') + t.end() +}) + +test('coordinates - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + t.equal(JSON.stringify(sec.coordinates(0)).length, 70, 'the coordinates should equal the expected') + t.end() +}) + +test('coordinates - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + t.equal(JSON.stringify(sec.coordinates(54)).length, 2, 'the coordinates should equal the expected') + t.end() +}) +//lists +test('lists - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section('See also') + + const expected = [22] + t.deepEqual(sec.lists().map(s => JSON.stringify(s.lines()).length), expected, 'the lists should equal the expected') + t.end() +}) + +test('lists - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section('See also') + + t.equal(JSON.stringify(sec.lists(0).lines()).length, 22, 'the lists should equal the expected') + t.end() +}) + +//interwiki + +//images +test('images - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section('Background') + + const expected = [124, 79, 89] + t.deepEqual(sec.images().map(s => s.url().length), expected, 'the images should equal the expected') + t.end() +}) + +test('images - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section('Background') + + t.equal(sec.images(0).url().length, 124, 'the images should equal the expected') + t.end() +}) + +test('images - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + const expected = [] + t.deepEqual(sec.images().map(s => s.url().length), expected, 'the images should equal the expected') + t.end() +}) + +//references +test('references - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + const expected = [15, 104, 58, 38, 50, 0, 0, 0, 30, 33, 34, 0, 71, 0, 56, 85, 16, 59, 64, 29, 0, 0, 0, 0, 0, 26, 60, 0, 35, 87, 90, 42, 0, 0] + t.deepEqual(sec.references().map(s => s.title().length), expected, 'the references should equal the expected') + t.end() +}) + +test('references - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + t.equal(sec.references(0).title().length, 15, 'the references should equal the expected') + t.end() +}) +//citations -- alias of references +test('references - get', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + const expected = [15, 104, 58, 38, 50, 0, 0, 0, 30, 33, 34, 0, 71, 0, 56, 85, 16, 59, 64, 29, 0, 0, 0, 0, 0, 26, 60, 0, 35, 87, 90, 42, 0, 0] + t.deepEqual(sec.citations().map(s => s.title().length), expected, 'the citations should equal the expected') + t.end() +}) + +test('citations - get - number', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') + let sec = wtf(str).section(0) + + t.equal(sec.citations(0).title().length, 15, 'the citations should equal the expected') + t.end() +}) +//remove + +//nextSibling + +//next -- alias of nextSibling + +//lastSibling + +//last -- alias of lastSibling + +//previousSibling -- alias of lastSibling + +//previous -- alias of lastSibling + +//children + +//sections -- alias of lastSibling + +//parent + +//text + +//json + +//title + +//title diff --git a/tests/table.test.js b/tests/table.test.js index a5e5c0de..af717201 100644 --- a/tests/table.test.js +++ b/tests/table.test.js @@ -1,9 +1,9 @@ -var test = require('tape') -var wtf = require('./lib') -var readFile = require('./lib/_cachedPage') +const test = require('tape') +const wtf = require('./lib') +const readFile = require('./lib/_cachedPage') test('bluejays table', t => { - var arr = readFile('bluejays').tables(0).data + const arr = readFile('bluejays').tables(0).data t.equal(arr.length, 8, 'table-length-bluejays') t.equal(arr[0]['Level'].text(), 'AAA', 'level-col') t.equal(arr[0]['Team'].text(), 'Buffalo Bisons', 'team-col') @@ -13,16 +13,16 @@ test('bluejays table', t => { }) test('rnli stations', t => { - var doc = readFile('rnli_stations') + const doc = readFile('rnli_stations') t.equal(doc.categories().length, 5, 'cat-length') - var intro = doc.sections(0) + const intro = doc.sections(0) t.equal(intro.title(), '', 'intro-title') t.equal(intro.images().length > 0, true, 'intro-image-length') t.equal(intro.sentences().length > 0, true, 'intro-sentence-length') - var key = doc.sections(1) - t.equal(key.depth, 0, 'key-depth') + const key = doc.sections(1) + t.equal(key._depth, 0, 'key-depth') t.equal(key.title(), 'Key', 'key-title') t.equal(key.sentences().length, 0, 'key-no-sentences') t.deepEqual(key.images(), [], 'key-no-images') @@ -30,34 +30,35 @@ test('rnli stations', t => { t.deepEqual(key.lists(), [], 'key-no-lists') t.deepEqual(key.tables(), [], 'key-no-tables') - var lifeboat = doc.sections(2) - t.equal(lifeboat.depth, 1, 'lifeboat-depth') + const lifeboat = doc.sections(2) + t.equal(lifeboat._depth, 1, 'lifeboat-depth') t.equal(lifeboat.templates(0).list[0], 'Royal National Lifeboat Institution lifeboats', 'lifeboat-main') t.equal(lifeboat.lists(0).json().length, 3, 'lifeboat-list') t.equal(lifeboat.sentences().length, 3, 'lifeboat-sentences') t.deepEqual(lifeboat.images(), [], 'lifeboat-no-images') t.deepEqual(lifeboat.tables(), [], 'lifeboat-no-tables') - var east = doc.sections(6) + const east = doc.sections(6) t.equal(east.title(), 'East Division', 'East Division') t.deepEqual(east.images(), [], 'East-no-images') t.deepEqual(east.lists(), [], 'East-no-lists') t.equal(east.sentences().length, 0, 'east-sentences') - var table = east.tables(0).data + + const table = east.tables(0).data t.equal(table.length, 42, 'east table-rows') t.equal(table[0].Location.text(), 'Hunstanton, Norfolk', 'east-table-data') t.equal(table[41]['Launch method'].text(), 'Carriage', 'east-table-data-end') - var south = doc.sections(7) - var sTable = south.tables(0).data + const south = doc.sections(7) + const sTable = south.tables(0).data t.equal(sTable.length, 35, 'south-table-rows') t.equal(sTable[0].Location.text(), 'Mudeford, Dorset', 'south-table-data') t.end() }) -// https://en.wikipedia.org/wiki/Help:Table +//https://en.wikipedia.org/wiki/Help:Table test('simple table', t => { - var simple = `{| class="wikitable" + const simple = `{| class="wikitable" |- ! Header 1 ! Header 2 @@ -71,8 +72,8 @@ test('simple table', t => { | row 2, cell 2 | row 2, cell 3 |}` - var obj = wtf(simple) - var table = obj.tables(0).data + const obj = wtf(simple) + const table = obj.tables(0).data t.equal(table.length, 2, '2 rows') t.equal(table[0]['Header 1'].text(), 'row 1, cell 1', '1,1') t.equal(table[0]['Header 2'].text(), 'row 1, cell 2', '1,2') @@ -84,7 +85,7 @@ test('simple table', t => { }) test('multiplication table', t => { - var mult = `{| class="wikitable" style="text-align: center; width: 200px; height: 200px;" + const mult = `{| class="wikitable" style="text-align: center; width: 200px; height: 200px;" |+ Multiplication table |- ! × @@ -107,8 +108,8 @@ test('multiplication table', t => { ! 5 | 5 || 10 || 15 |}` - var obj = wtf(mult) - var table = obj.tables(0).data + const obj = wtf(mult) + const table = obj.tables(0).data t.equal(table[0]['1'].text(), '1', '1x1') t.equal(table[1]['1'].text(), '2', '1x2') t.equal(table[1]['2'].text(), '4', '2x2') @@ -116,7 +117,7 @@ test('multiplication table', t => { }) test('inline-table-test', t => { - var inline = `{| class="wikitable" + const inline = `{| class="wikitable" |+ style="text-align: left;" | Data reported for 2014–2015, by region |- ! scope="col" | Year !! scope="col" | Africa !! scope="col" | Americas !! scope="col" | Asia & Pacific !! scope="col" | Europe @@ -127,8 +128,8 @@ test('inline-table-test', t => { ! scope="row" | 2015 | 2,725 || ''9,200'' || 8,850 || 4,775 |}` - var obj = wtf(inline) - var table = obj.tables(0).data + const obj = wtf(inline) + const table = obj.tables(0).data t.equal(table[0].Year.text(), '2014', 'first year') t.equal(table[0].Africa.text(), '2,300', 'africa first-row') t.equal(table[0].Americas.text(), '8,950', 'america first-row') @@ -138,7 +139,7 @@ test('inline-table-test', t => { test('floating-tables-test', t => { //we don't (and probably can't) fully support this rn - var floating = `{| class="wikitable floatright" + const floating = `{| class="wikitable floatright" | Col 1, row 1 | rowspan="2" | Col 2, row 1 (and 2) | Col 3, row 1 @@ -154,16 +155,16 @@ test('floating-tables-test', t => { | Col 1, row 2 | Col 3, row 2 |}` - var obj = wtf(floating) + const obj = wtf(floating) t.equal(obj.tables().length, 2, 'two tables') - var table = obj.tables(0).data + const table = obj.tables(0).data t.equal(table[0]['col1'].text(), 'Col 1, row 1', '1,1') t.end() }) test('wikisortable-tables-test', t => { //we don't (and probably can't) fully support this rn - var sortable = `{| class="wikitable sortable" + const sortable = `{| class="wikitable sortable" |+ Sortable table |- ! scope="col" | Alphabetic @@ -181,9 +182,9 @@ test('wikisortable-tables-test', t => { |- | e || 0 || 1601-08-13 || sorted. |}` - var obj = wtf(sortable) + const obj = wtf(sortable) t.equal(obj.tables().length, 1, 'one table') - var table = obj.tables(0).data + const table = obj.tables(0).data t.equal(table[0]['Alphabetic'].text(), 'd', '1,1') t.equal(table[0]['Numeric'].text(), '20', '1,2') t.equal(table[0]['Date'].text(), '2008-11-24', '1,3') @@ -196,7 +197,7 @@ test('wikisortable-tables-test', t => { }) test('messy-table-test', t => { - var messy = ` {| class="wikitable" + const messy = ` {| class="wikitable" |[[File:Worms 01.jpg|199x95px]] |[[File:Worms Wappen 2005-05-27.jpg|199x95px]] |[[File:Liberty-statue-with-manhattan.jpg|199x95px]] @@ -209,16 +210,16 @@ test('messy-table-test', t => { |Statue of Liberty |New York City |}` - var obj = wtf(messy) - var table = obj.tables(0).json() + const obj = wtf(messy) + const table = obj.tables(0).json() t.equal(table[1]['col1'].text, 'Nibelungen Bridge to Worms', 'col1 text') - // var keyVal=obj.tables(0).keyValue() - // t.equal() + //const keyVal=obj.tables(0).keyValue() + //t.equal() t.end() }) test('embedded-table', t => { - var str = ` {| + const str = ` {| | one | two | three @@ -233,7 +234,7 @@ test('embedded-table', t => { |[[Chicago]] |} ` - var tables = wtf(str).tables() + const tables = wtf(str).tables() t.equal(tables.length, 2, 'found both tables') t.equal(tables[0].links().length, 1, 'found one link') t.equal(tables[1].links().length, 1, 'found another link') @@ -241,7 +242,7 @@ test('embedded-table', t => { }) test('embedded-table-2', t => { - var str = ` {| class="oopsie" + const str = ` {| class="oopsie" | first row |- | Secod row @@ -257,15 +258,15 @@ test('embedded-table-2', t => { |} Actual first sentence is here` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.tables().length, 2, 'found both tables') - var text = doc.sentences(0).text() + const text = doc.sentences(0).text() t.equal('Actual first sentence is here', text, 'got proper first sentence') t.end() }) test('sortable table', t => { - var str = `{|class="wikitable sortable" + const str = `{|class="wikitable sortable" !Name and Surname!!Height |- |data-sort-value="Smith, John"|John Smith||1.85 @@ -276,15 +277,15 @@ test('sortable table', t => { |- !Average:||1.82 |}` - var doc = wtf(str) - var row = doc.tables(0).data[0] + const doc = wtf(str) + const row = doc.tables(0).data[0] t.equal(row.Height.text(), '1.85', 'got height') t.equal(row['Name and Surname'].text(), 'John Smith', 'got name') t.end() }) test('missing-row test', t => { - var str = `{|class="wikitable" + const str = `{|class="wikitable" |- ! style="background:#ddf; width:0;"| # ! style="background:#ddf; width:11%;"| Date @@ -306,14 +307,14 @@ test('missing-row test', t => { |-align="center" bgcolor="bbffbb" |} Actual first sentence is here` - var row = wtf(str).tables(0).data[0] + const row = wtf(str).tables(0).data[0] t.equal(row.Save.text(), '', 'got empty property') t.equal(row.Record.text(), '2–0', 'got last property') t.end() }) test('table newline removal', t => { - var str = `hello this is the top + const str = `hello this is the top {| class="wikitable" style="font-size: 95%;" | 1 | [[Daugpiļs]] @@ -325,13 +326,13 @@ test('table newline removal', t => { | [[Rēzne]] |} ` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.text(), 'hello this is the top', 'text on top') t.end() }) test('table rowspan', t => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" | rowspan="2"| one | two | three @@ -339,8 +340,8 @@ test('table rowspan', t => { | two B | three B |}` - var doc = wtf(str) - var table = doc.tables(0).keyValue() + const doc = wtf(str) + const table = doc.tables(0).keyValue() t.equal(table[0].col1, 'one', 'has init') t.equal(table[1].col1, 'one', 'has copy') t.equal(table[0].col2, 'two', 'has later') @@ -351,7 +352,7 @@ test('table rowspan', t => { }) test('table colspan', t => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" | colspan="2" style="text-align:center;"| one/two | three |- @@ -359,8 +360,8 @@ test('table colspan', t => { | two B | three B |}` - var doc = wtf(str) - var table = doc.tables(0).keyValue() + const doc = wtf(str) + const table = doc.tables(0).keyValue() t.equal(table[0].col1, 'one/two', 'has init') t.equal(table[0].col2, '', 'has empty span') t.equal(table[0].col3, 'three', 'has after span') @@ -373,7 +374,7 @@ test('table colspan', t => { //use first row as the table header test('first-row as header', t => { - var simple = `{| class="wikitable" + const simple = `{| class="wikitable" |- | Name | Country @@ -387,8 +388,8 @@ test('first-row as header', t => { |- | may || sweden || caption |}` - var obj = wtf(simple) - var table = obj.tables(0).json() + const obj = wtf(simple) + const table = obj.tables(0).json() t.equal(table.length, 4, '4 rows') t.equal(table[0]['name'].text, 'spencer', 'got name 1') t.equal(table[0]['country'].text, 'canada', 'got country 1') @@ -399,7 +400,7 @@ test('first-row as header', t => { //two-row header composite test('two-rows as header', t => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- ! A ! B @@ -414,7 +415,7 @@ test('two-rows as header', t => { |- | a || b || c || d || e |}` - var table = wtf(str) + const table = wtf(str) .tables(0) .keyValue() t.equal(table.length, 1, '1 row') @@ -426,7 +427,7 @@ test('two-rows as header', t => { //two-row header with spans test('two-header-rows-with-spans', t => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- ! A ! B @@ -440,7 +441,7 @@ test('two-header-rows-with-spans', t => { |- | a || b || c || d || e |}` - var table = wtf(str) + const table = wtf(str) .tables(0) .keyValue() t.equal(table.length, 1, '1 row') @@ -453,7 +454,7 @@ test('two-header-rows-with-spans', t => { //nfl football table test('junky-table', t => { - var str = `{| class="navbox plainrowheaders wikitable" style="width:100%" + const str = `{| class="navbox plainrowheaders wikitable" style="width:100%" ! A ! B ! C @@ -470,7 +471,7 @@ test('junky-table', t => { |[[Hard Rock Stadium]] |- |}` - var table = wtf(str) + const table = wtf(str) .tables(0) .keyValue() t.equal(table.length, 2, '2 row2') @@ -482,7 +483,7 @@ test('junky-table', t => { }) test('table double bar', t => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- ! h1 ! h2 @@ -498,8 +499,8 @@ test('table double bar', t => { || cc || ccc |}` - var doc = wtf(str) - var data = doc.tables(0).keyValue() + const doc = wtf(str) + const data = doc.tables(0).keyValue() t.equal(data[0].h1, 'a', 'h1') t.equal(data[0].h2, 'aa', 'h2') t.equal(data[0].h3, 'aaa', 'h3') @@ -514,7 +515,7 @@ test('table double bar', t => { //testing https://github.com/spencermountain/wtf_wikipedia/issues/332 test('table newline', t => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- ! h1 ! h2 @@ -529,8 +530,8 @@ test('table newline', t => { b2 | c |}` - var doc = wtf(str) - var data = doc.tables(0).keyValue() + const doc = wtf(str) + const data = doc.tables(0).keyValue() t.equal(data[0].h1, 'a', 'h1') t.equal(data[0].h2, 'b1 b2', 'h2') t.equal(data[0].h3, 'c', 'h3') From ebba03cccfd22834149a6263ca01aea71b001b5b Mon Sep 17 00:00:00 2001 From: Wouter van der Plas Date: Sat, 24 Oct 2020 17:22:54 +0200 Subject: [PATCH 005/117] fixed some errors with depth --- builds/types.d.ts | 316 +++++++++++++++++++++++++++++ package.json | 2 + plugins/html/src/02-section.js | 11 +- plugins/latex/src/02-section.js | 68 ++++--- plugins/markdown/src/02-section.js | 16 +- src/01-document/Document.js | 2 +- src/02-section/Section.js | 16 +- src/02-section/index.js | 4 +- src/02-section/toJson.js | 2 +- 9 files changed, 387 insertions(+), 50 deletions(-) create mode 100644 builds/types.d.ts diff --git a/builds/types.d.ts b/builds/types.d.ts new file mode 100644 index 00000000..5a48bfa2 --- /dev/null +++ b/builds/types.d.ts @@ -0,0 +1,316 @@ +/** + * The constructor for the document class +This function starts parsing the wiki text and sets the options in the class + * @param [wiki] - The wiki text + * @param [options] - The options for the parser + */ +declare class Document { + constructor(wiki?: string, options?: any); + /** + * Getter and setter for the tile. + If string is given then this function is a setter and sets the variable and returns the set value + If the string is not given then it will check if the title is available + If it is available it returns the title. + Else it will look if the first sentence contains a bolded phrase and assumes that's the title and returns it + * @param [str] - The title that will be set + * @returns The title found or given + */ + title(str?: string): null | string; + /** + * If an pageID is given then it sets the pageID and returns the given pageID + Else if the pageID is already set it returns the pageID + * @param [id] - The pageID that will be set + * @returns The given or found pageID + */ + pageID(id?: number): number | null; + /** + * If an WikidataID is given then it sets the WikidataID and returns the given WikidataID + Else if the WikidataID is already set it returns the WikidataID + * @param [id] - The WikidataID that will be set + * @returns The given or found WikidataID + */ + wikidata(id?: string): string | null; + /** + * If an domain is given then it sets the domain and returns the given domain + Else if the domain is already set it returns the domain + * @param [str] - The domain that will be set + * @returns The given or found domain + */ + domain(str?: string): string | null; + /** + * If an language is given then it sets the language and returns the given language + Else if the language is already set it returns the language + * @param [lang] - The language that will be set + * @returns The given or found language + */ + language(lang?: string): string | null; + /** + * Gets the url of the page + If the language or domain is not available we substitute 'en' and 'wikipedia.org' + Then we use the template of `https://${lang}.${domain}/wiki/${title}` to make the url + * @returns The url of the page + */ + url(): string | null; + /** + * If an namespace is given then it sets the namespace and returns the given namespace + Else if the namespace is already set it returns the namespace + * @param [ns] - The namespace that will be set + * @returns The given or found namespace + */ + namespace(ns?: string): string | null; + /** + * Returns if the page is a redirect + * @returns Is the page a redirect + */ + isRedirect(): boolean; + /** + * Returns information about the page this page redirects to + * @returns The redirected page + */ + redirectTo(): null | any; + /** + * This function finds out if a page is a disambiguation page + * @returns Whether the page is a disambiguation page + */ + isDisambiguation(): boolean; + /** + * If a clue is available return the category at that index + Else return all categories + * @param [clue] - The index of the wanted category + * @returns The category at the provided index or all categories + */ + categories(clue?: number): string | string[]; + /** + * Returns the 0th or clue-th category + * @param [clue] - The index of the wanted category + * @returns The category at the provided index + */ + category(clue?: number): any | string | number; + /** + * returns the sections of the document + + If the clue is a string then it will return the section with that exact title + Else if the clue is a number then it returns the section at that index + Else it returns all the sections + * @param [clue] - A title of a section or a index of a wanted section + * @returns A section or a array of sections + */ + sections(clue?: number | string): Section | Section[]; + /** + * Returns the 0th or clue-th category + * @param [clue] - The index of the wanted section + * @returns The section at the provided index + */ + section(clue?: number): Section; + /** + * Returns the paragraphs in the document + + If the clue is a number then it returns the paragraph at that index + Else it returns all paragraphs in an array + * @param [clue] - The index of the to be selected paragraph + * @returns the selected paragraph or an array of all paragraphs + */ + paragraphs(clue?: number): Paragraph | Paragraph[]; + /** + * returns the first or the clue-th paragraph + * @param [clue] - the index of the paragraph + * @returns The selected paragraph + */ + paragraph(clue?: number): Paragraph; + /** + * if no clue is provided, it compiles an array of sentences in the wiki text. + if the clue is provided it return the sentence at the provided index + * @param clue - the index of the wanted sentence + * @returns an array of sentences or a single sentence + */ + sentences(clue: number): Sentence[] | Sentence; + /** + * Returns the 0th or clue-th sentence + * @param [clue] - The index of the wanted sentence + * @returns The sentence at the provided index + */ + sentence(clue?: number): Sentence; + /** + * This function search the whole page, including the infobox and image gallery templates for images + and then returns them in an array if no clue is provided. + if an clue is profieded then it returns the image at the clue-th index + * @param [clue] - the index of the image to be selected + * @returns a single image or an array of images + */ + images(clue?: number): Image[] | Image; + /** + * Returns the 0th or clue-th image + * @param [clue] - The index of the wanted image + * @returns The image at the provided index + */ + image(clue?: number): Image; + /** + * Return all links or if a clue is provided only the link at that index + * @param [clue] - the index of the wanted link + * @returns all the links or the selected link + */ + links(clue?: number): string[] | string; + /** + * Returns the 0th or clue-th link + * @param [clue] - The index of the wanted link + * @returns The link at the provided index + */ + link(clue?: number): any | string | number; + /** + * Return all inter wiki links or if a clue is provided only the inter wiki link at that index + * @param [clue] - the index of the wanted inter wiki link + * @returns all the inter wiki links or the selected inter wiki link + */ + interwiki(clue?: number): string[] | string; + /** + * If a clue is available return the list at that index + Else return all lists + * @param [clue] - The index of the wanted list + * @returns The list at the provided index or all lists + */ + lists(clue?: number): List | List[]; + /** + * Returns the 0th or clue-th list + * @param [clue] - The index of the wanted list + * @returns The list at the provided index + */ + list(clue?: number): any | string | number; + /** + * If a clue is available return the tables at that index + Else return all tables + * @param [clue] - The index of the wanted table + * @returns The table at the provided index or all tables + */ + tables(clue?: number): Table | Tables[]; + /** + * Returns the 0th or clue-th table + * @param [clue] - The index of the wanted table + * @returns The table at the provided index + */ + table(clue?: number): any | string | number; + /** + * If a clue is available return the template at that index + Else return all templates + * @param [clue] - The index of the wanted template + * @returns The category at the provided index or all categories + */ + templates(clue?: number): Template | Template[]; + /** + * Returns the 0th or clue-th template + * @param [clue] - The index of the wanted template + * @returns The template at the provided index + */ + template(clue?: number): any | string | number; + /** + * If a clue is available return the references at that index + Else return all references + * @param [clue] - The index of the wanted references + * @returns The category at the provided index or all references + */ + references(clue?: number): Reference | Reference[]; + /** + * Returns the 0th or clue-th reference + * @param [clue] - The index of the wanted reference + * @returns The reference at the provided index + */ + reference(clue?: number): any | string | number; + /** + * Returns the 0th or clue-th citation + * @param [clue] - The index of the wanted citation + * @returns The citation at the provided index + */ + citation(clue?: number): any | string | number; + /** + * finds and returns all coordinates + or if an clue is given, the coordinate at the index + * @param [clue] - the index of the coordinate returned + * @returns if a clue is given, the coordinate of null, else an array of coordinates + */ + coordinates(clue?: number): object[] | any | null; + /** + * Returns the 0th or clue-th coordinate + * @param [clue] - The index of the wanted coordinate + * @returns The coordinate at the provided index + */ + coordinate(clue?: number): any | string | number; + /** + * If clue is unidentified then it returns all infoboxes + If clue is a number then it returns the infobox at that index + It always sorts the infoboxes by size + * @param [clue] - the index of the infobox you want to select + * @returns the selected infobox or an array of infoboxes + */ + infoboxes(clue?: number): Infobox | Infobox[]; + /** + * Returns the 0th or clue-th infobox + * @param [clue] - The index of the wanted infobox + * @returns The infobox at the provided index + */ + infobox(clue?: number): any | string | number; + /** + * return a plain text version of the wiki article + * @param [options] - the options for the parser + * @returns the plain text version of the article + */ + text(options?: any): string; + /** + * return a json version of the Document class + * @param [options] - options for the rendering + * @returns this document as json + */ + json(options?: any): any; + /** + * prints the title of every section + * @returns the document itself + */ + debug(): Document; +} + +/** + * the stuff between headings - 'History' section for example + * @param data - the data already gathered about the section + * @param doc - the document that this section belongs to + */ +declare class Section { + constructor(data: any, doc: Document); +} + +/** + * returns one sentence object + * @param str - create a object from a sentence + * @returns the Sentence created from the text + */ +declare function fromText(str: string): Sentence; + +declare type fetchDefaults = { + path?: string | undefined; + wiki?: string | undefined; + domain?: string | undefined; + follow_redirects?: boolean | undefined; + lang?: string | undefined; + path?: string | undefined; + title?: string | number | (string | number)[] | undefined; + "Api-User-Agent"?: string | undefined; +}; + +declare const defaults: fetchDefaults; + +/** + * fetches the page from the wiki and returns a Promise with the parsed wikitext + * @param title - the title, PageID, URL or an array of all three of the page(s) you want to fetch + * @param [options] - the options for the fetch or the language of the wiki for the article or the callback if you dont provide any options + * @param [c] - the callback function for the call or the options for the fetch + */ +declare function fetch(title: string | number | (number | string)[], options?: fetchDefaults | ((...params: any[]) => any) | string, c?: ((...params: any[]) => any) | fetchDefaults): Promise; + +declare type HeaderOptions = { + redirect: string; + method: string; +}; + +/** + * factory for header options + * @returns the generated options + */ +declare function makeHeaders(options: any): HeaderOptions; + diff --git a/package.json b/package.json index 3cc088a4..6980c31d 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,8 @@ "lint": "eslint ./src/ ./plugins ./tests", "postinstall": "npm-recursive-install --rootDir=plugins", "start": "node ./scripts/demo.js", + "testSec": "nyc -r lcov -n 'src/02-section/*' tape tests/Section.test.js", + "testDoc": "nyc -r lcov -n 'src/02-section/*' tape tests/Document.test.js", "test": "cross-env TESTENV=dev && node ./scripts/test.js", "test:fetch": "cross-env TESTENV=dev && tape ./tests/fetch/*.test.js | tap-dancer", "test:spec": "cross-env TESTENV=dev && tape ./tests/fetch/*.test.js | tap-spec", diff --git a/plugins/html/src/02-section.js b/plugins/html/src/02-section.js index 290a926a..3f69770b 100644 --- a/plugins/html/src/02-section.js +++ b/plugins/html/src/02-section.js @@ -3,14 +3,15 @@ const defaults = { images: true, tables: true, lists: true, - paragraphs: true + paragraphs: true, } -const doSection = function(options) { + +const doSection = function (options) { options = Object.assign({}, defaults, options) let html = '' //make the header if (options.headers === true && this.title()) { - let num = 1 + this.depth + let num = 1 + this.depth() html += ' ' + this.title() + '' html += '\n' } @@ -27,12 +28,13 @@ const doSection = function(options) { .map(t => t.html(options)) .join('\n') } - // //make a html bullet-list + //make a html bullet-list if (options.lists === true) { html += this.lists() .map(list => list.html(options)) .join('\n') } + //finally, write the sentence text. if (options.paragraphs === true && this.paragraphs().length > 0) { html += '
\n' @@ -56,4 +58,5 @@ const doSection = function(options) { } return '
\n' + html + '
\n' } + module.exports = doSection diff --git a/plugins/latex/src/02-section.js b/plugins/latex/src/02-section.js index cf8202c0..fde62061 100644 --- a/plugins/latex/src/02-section.js +++ b/plugins/latex/src/02-section.js @@ -3,47 +3,49 @@ const defaults = { images: true, tables: true, lists: true, - paragraphs: true + paragraphs: true, } //map '==' depth to 'subsection', 'subsubsection', etc -const doSection = function(options) { +const doSection = function (options) { options = Object.assign({}, defaults, options) let out = '' let num = 1 + //make the header if (options.headers === true && this.title()) { - num = 1 + this.depth + num = 1 + this.depth() let vOpen = '\n' let vClose = '}' switch (num) { - case 1: - vOpen += '\\chapter{' - break - case 2: - vOpen += '\\section{' - break - case 3: - vOpen += '\\subsection{' - break - case 4: - vOpen += '\\subsubsection{' - break - case 5: - vOpen += '\\paragraph{' - vClose = '} \\\\ \n' - break - case 6: - vOpen += '\\subparagraph{' - vClose = '} \\\\ \n' - break - default: - vOpen += - '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{' - vClose = '} \\\\ \n' + case 1: + vOpen += '\\chapter{' + break + case 2: + vOpen += '\\section{' + break + case 3: + vOpen += '\\subsection{' + break + case 4: + vOpen += '\\subsubsection{' + break + case 5: + vOpen += '\\paragraph{' + vClose = '} \\\\ \n' + break + case 6: + vOpen += '\\subparagraph{' + vClose = '} \\\\ \n' + break + default: + vOpen += + '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{' + vClose = '} \\\\ \n' } out += vOpen + this.title() + vClose out += '\n' } + //put any images under the header if (options.images === true && this.images()) { out += this.images() @@ -51,18 +53,21 @@ const doSection = function(options) { .join('\n') //out += '\n'; } - //make a out tablew + + //make a out table if (options.tables === true && this.tables()) { out += this.tables() .map(t => t.latex(options)) .join('\n') } - // //make a out bullet-list + + //make a out bullet-list if (options.lists === true && this.lists()) { out += this.lists() .map(list => list.latex(options)) .join('\n') } + //finally, write the sentence text. if (options.paragraphs === true || options.sentences === true) { out += this.paragraphs() @@ -70,8 +75,9 @@ const doSection = function(options) { .join(' ') out += '\n' } - // let title_tag = ' SECTION depth=' + num + ' - TITLE: ' + section.title + '\n'; - // wrap a section comment + + //let title_tag = ' SECTION depth=' + num + ' - TITLE: ' + section.title + '\n'; + //wrap a section comment //out = '\n% BEGIN' + title_tag + out + '\n% END' + title_tag; return out } diff --git a/plugins/markdown/src/02-section.js b/plugins/markdown/src/02-section.js index 3e991779..52165aef 100644 --- a/plugins/markdown/src/02-section.js +++ b/plugins/markdown/src/02-section.js @@ -3,20 +3,22 @@ const defaults = { images: true, tables: true, lists: true, - paragraphs: true + paragraphs: true, } -const doSection = function(options) { +const doSection = function (options) { options = Object.assign({}, defaults, options) let md = '' + //make the header if (options.headers === true && this.title()) { let header = '##' - for (let i = 0; i < this.depth; i += 1) { + for (let i = 0; i < this.depth(); i += 1) { header += '#' } md += header + ' ' + this.title() + '\n' } + //put any images under the header if (options.images === true) { let images = this.images() @@ -25,7 +27,8 @@ const doSection = function(options) { md += '\n' } } - //make a mardown table + + //make a markdown table if (options.tables === true) { let tables = this.tables() if (tables.length > 0) { @@ -34,7 +37,8 @@ const doSection = function(options) { md += '\n' } } - //make a mardown bullet-list + + //make a markdown bullet-list if (options.lists === true) { let lists = this.lists() if (lists.length > 0) { @@ -42,6 +46,7 @@ const doSection = function(options) { md += '\n' } } + //finally, write the sentence text. if (options.paragraphs === true || options.sentences === true) { md += this.paragraphs() @@ -53,6 +58,7 @@ const doSection = function(options) { }) .join('\n\n') } + return md } module.exports = doSection diff --git a/src/01-document/Document.js b/src/01-document/Document.js index fa70fa82..edbe5c3b 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -667,7 +667,7 @@ class Document { console.log('\n') this.sections().forEach((sec) => { let indent = ' - ' - for (let i = 0; i < sec.depth; i += 1) { + for (let i = 0; i < sec.depth(); i += 1) { indent = ' -' + indent } console.log(indent + (sec.title() || '(Intro)')) diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 42fefd38..f7196879 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -75,10 +75,14 @@ class Section { return index } - indentation() { + depth(){ return this._depth } + indentation() { + return this.depth() + } + sentences(n) { let arr = this.paragraphs().reduce((list, p) => { return list.concat(p.sentences()) @@ -261,11 +265,11 @@ class Section { for (let i = index + 1; i < sections.length; i++) { //if the depth is smaller then the current depth then there is no next sibling //aka the depth of the section at position i a level higher then this section then this section is the last section at this depth - if (sections[i]._depth < this._depth) { + if (sections[i].depth() < this.depth()) { return null } //if the section has the same depth as the current section then it is the next sibling - if (sections[i]._depth === this._depth) { + if (sections[i].depth() === this.depth()) { return sections[i] } } @@ -307,9 +311,9 @@ class Section { let index = this.index() let children = [] //(immediately preceding sections with higher depth) - if (sections[index + 1] && sections[index + 1]._depth > this._depth) { + if (sections[index + 1] && sections[index + 1].depth() > this.depth()) { for (let i = index + 1; i < sections.length; i += 1) { - if (sections[i]._depth > this._depth) { + if (sections[i].depth() > this.depth()) { children.push(sections[i]) } else { break @@ -337,7 +341,7 @@ class Section { let sections = this._doc.sections() let index = this.index() for (let i = index; i >= 0; i -= 1) { - if (sections[i] && sections[i]._depth < this._depth) { + if (sections[i] && sections[i].depth() < this.depth()) { return sections[i] } } diff --git a/src/02-section/index.js b/src/02-section/index.js index b039706d..5893e8ab 100644 --- a/src/02-section/index.js +++ b/src/02-section/index.js @@ -21,8 +21,8 @@ const removeReferenceSection = function (sections) { } //what it has children? awkward - if (sections[i + 1] && sections[i + 1].depth > s.depth) { - sections[i + 1].depth -= 1 //move it up a level?... + if (sections[i + 1] && sections[i + 1].depth() > s.depth()) { + sections[i + 1]._depth -= 1 //move it up a level?... } return false } diff --git a/src/02-section/toJson.js b/src/02-section/toJson.js index e2db094d..7fd0656d 100644 --- a/src/02-section/toJson.js +++ b/src/02-section/toJson.js @@ -20,7 +20,7 @@ const toJSON = function(section, options) { data.title = section.title() } if (options.depth === true) { - data.depth = section._depth + data.depth = section.depth() } //these return objects if (options.paragraphs === true) { From 6df0fbbdcf2a861f8cf2a64504ed8a4a3e39ecec Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 25 Oct 2020 12:00:24 -0400 Subject: [PATCH 006/117] disable codecov comments --- .gitignore | 1 - codecov.yml | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 codecov.yml diff --git a/.gitignore b/.gitignore index f31400ec..0ac9caf6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ node_modules viz coverage coverage.lcov -codecov.yml npm-debug.log .nyc_output *.DS_Store diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..7302e577 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,3 @@ +comment: false +branches: + - 'master' From 211303477051f592b58c6c4854c1f99727a429c3 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 25 Oct 2020 12:00:45 -0400 Subject: [PATCH 007/117] ignore codecov file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0ac9caf6..f31400ec 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ node_modules viz coverage coverage.lcov +codecov.yml npm-debug.log .nyc_output *.DS_Store From fcf199c267e03abc6a965033cc51ba7eb53792c8 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 05:30:22 -0400 Subject: [PATCH 008/117] add license and repository info to plugins --- plugins/category/package.json | 6 +++++- plugins/classify/package.json | 6 +++++- plugins/html/package.json | 6 +++++- plugins/i18n/package.json | 6 +++++- plugins/image/package.json | 6 +++++- plugins/latex/package.json | 6 +++++- plugins/markdown/package.json | 6 +++++- plugins/person/package.json | 6 +++++- plugins/summary/package.json | 6 +++++- plugins/wikitext/package.json | 6 +++++- scratch.js | 11 +++-------- 11 files changed, 53 insertions(+), 18 deletions(-) diff --git a/plugins/category/package.json b/plugins/category/package.json index 9de5bd87..c8bf5884 100644 --- a/plugins/category/package.json +++ b/plugins/category/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-category.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/category#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -43,5 +47,5 @@ "tap-dancer": "^0.2.0", "tape": "5.0.0" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/classify/package.json b/plugins/classify/package.json index c07d9d55..de56bbe0 100644 --- a/plugins/classify/package.json +++ b/plugins/classify/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-classify.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/classify#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -40,5 +44,5 @@ "tap-dancer": "^0.2.0", "tape": "^4.11.0" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/html/package.json b/plugins/html/package.json index c520a0c5..e27d98a6 100644 --- a/plugins/html/package.json +++ b/plugins/html/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-html.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/html#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -40,5 +44,5 @@ "tap-dancer": "^0.2.0", "tape": "^4.11.0" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/i18n/package.json b/plugins/i18n/package.json index 6106c47c..f233b257 100644 --- a/plugins/i18n/package.json +++ b/plugins/i18n/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-i18n.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/i18n#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -40,5 +44,5 @@ "tap-dancer": "^0.2.0", "tape": "^4.11.0" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/image/package.json b/plugins/image/package.json index f4dc6b58..fec4bd2b 100644 --- a/plugins/image/package.json +++ b/plugins/image/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-image.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/image#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -42,5 +46,5 @@ "tap-dancer": "0.2.0", "tape": "4.13.2" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/latex/package.json b/plugins/latex/package.json index c26f75da..9c4b821c 100644 --- a/plugins/latex/package.json +++ b/plugins/latex/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-latex.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/latex#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -40,5 +44,5 @@ "tap-dancer": "^0.2.0", "tape": "^4.11.0" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/markdown/package.json b/plugins/markdown/package.json index 4c3a667f..86757786 100644 --- a/plugins/markdown/package.json +++ b/plugins/markdown/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-markdown.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/markdown#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -40,5 +44,5 @@ "tap-dancer": "0.2.0", "tape": "4.13.2" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/person/package.json b/plugins/person/package.json index 8cc3d3f7..0df610c0 100644 --- a/plugins/person/package.json +++ b/plugins/person/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-person.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/person#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -44,5 +48,5 @@ "tap-dancer": "^0.2.0", "tape": "^4.11.0" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/summary/package.json b/plugins/summary/package.json index e34c8e0f..61ff472e 100644 --- a/plugins/summary/package.json +++ b/plugins/summary/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-summary.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/summary#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -43,5 +47,5 @@ "tap-dancer": "^0.2.0", "tape": "^4.11.0" }, - "licence": "MIT" + "license": "MIT" } diff --git a/plugins/wikitext/package.json b/plugins/wikitext/package.json index 9156d94a..652f3e55 100644 --- a/plugins/wikitext/package.json +++ b/plugins/wikitext/package.json @@ -7,6 +7,10 @@ "module": "./builds/wtf-plugin-wikitext.mjs", "author": "Spencer Kelly (spencermountain)", "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/wikitext#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, "scripts": { "watch": "amble ./scratch.js", "test": "tape ./tests/**/*.test.js | tap-dancer", @@ -40,5 +44,5 @@ "tap-dancer": "^0.2.0", "tape": "^4.11.0" }, - "licence": "MIT" + "license": "MIT" } diff --git a/scratch.js b/scratch.js index f25ff334..0df10b88 100644 --- a/scratch.js +++ b/scratch.js @@ -10,11 +10,6 @@ wtf.extend(require('./plugins/wikitext/src')) // console.log(doc.images().map((j) => j.url())) // }) -let str = ` -{{cite magazine |last=Bond |first=Brian |date=October 1963 |title=Amritsar 1919 |magazine=History Today |volume=13 |uitgawe=10 |bls.=666–676}} -` -let doc = wtf(str) -let json = doc.json({ encode: true }).sections[0].references -console.log(json) -// console.log(doc.infobox().image().url()) -// console.log(doc.images().map((img) => img.url())) +let result = wtf.random().then((doc) => { + console.log(doc.title(), doc.categories()) +}) From f2c6ed0c87d391bb0933ab1bbfc56dcece13ac90 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 05:41:47 -0400 Subject: [PATCH 009/117] make jsdoc optional for now in eslint --- .eslintrc | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/.eslintrc b/.eslintrc index 7ed17151..455cb2b6 100644 --- a/.eslintrc +++ b/.eslintrc @@ -7,17 +7,14 @@ "parserOptions": { "ecmaVersion": 2017, "sourceType": "module", - "ecmaFeatures": { } + "ecmaFeatures": {} }, - "plugins": [ "jsdoc" ], - "extends": [ - "plugin:compat/recommended", - "plugin:jsdoc/recommended" - ], + "plugins": ["jsdoc"], + "extends": ["plugin:compat/recommended", "plugin:jsdoc/recommended"], "rules": { - "semi": [ "warn", "never" ], - "indent": [ "error", 2 ], - "spaced-comment": [ "error", "never" ], + "semi": ["warn", "never"], + "indent": ["error", 2], + "spaced-comment": ["error", "never"], "no-cond-assign": 2, "no-var": 1, "prefer-const": 0, @@ -30,12 +27,7 @@ "no-native-reassign": 2, "no-redeclare": 2, "radix": 1, - "quotes": [ - - 0, - "single", - "avoid-escape" - ], + "quotes": [0, "single", "avoid-escape"], "no-shadow": 2, "no-unused-vars": 1, "no-lonely-if": 1, @@ -47,19 +39,18 @@ "no-octal-escape": 2, "no-constant-condition": 1, "no-unused-expressions": 2, - "comma-dangle": [ - 1, - "only-multiline" - ], + "comma-dangle": [1, "only-multiline"], "space-before-function-paren": [ - "error", { + "error", + { "anonymous": "always", "named": "never", "asyncArrow": "always" } ], "max-len": [ - "error", { + "error", + { "code": 120, "ignoreComments": true, "ignoreStrings": true, @@ -68,7 +59,7 @@ } ], "require-jsdoc": [ - 1, + 0, { "require": { "ArrowFunctionExpression": false, From 8ee54320c93519f9958701fb24e0ba6e450a0e19 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 06:06:14 -0400 Subject: [PATCH 010/117] add built-in fetch http lib to extend params --- src/_fetch/http/server.js | 3 +++ src/index.js | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/_fetch/http/server.js b/src/_fetch/http/server.js index ccdc94d3..e8edee02 100644 --- a/src/_fetch/http/server.js +++ b/src/_fetch/http/server.js @@ -16,6 +16,9 @@ const request = function (url, opts = {}) { let json = JSON.parse(data) resolve(json) } catch (e) { + console.log('error') + console.log(data) + resolve(data) reject(e) } }) diff --git a/src/index.js b/src/index.js index 43d5a956..5405506d 100644 --- a/src/index.js +++ b/src/index.js @@ -3,6 +3,8 @@ const random = require('./_fetch/random') const category = require('./_fetch/category') const version = require('./_version') const Document = require('./01-document/Document') +//this gets swapped for client-version in builds +const http = require('./_fetch/http/server') //the main 'factory' exported method const wtf = function (wiki, options) { @@ -37,7 +39,7 @@ wtf.category = function (cat, lang, options, cb) { return category(cat, lang, options, cb) } wtf.extend = function (fn) { - fn(models, templates, this) + fn(models, templates, this, http) return this } wtf.version = version From f1d061d6c1a22d1fa3a2ecaa7c3561f2587be749 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 06:06:36 -0400 Subject: [PATCH 011/117] allow space after comma in eslint, for now --- .eslintrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index 455cb2b6..eaaa4ee2 100644 --- a/.eslintrc +++ b/.eslintrc @@ -14,7 +14,7 @@ "rules": { "semi": ["warn", "never"], "indent": ["error", 2], - "spaced-comment": ["error", "never"], + "spaced-comment": [0, "never"], "no-cond-assign": 2, "no-var": 1, "prefer-const": 0, From e3361f8790428d0890574b65c210b4e8751f13ea Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 06:31:08 -0400 Subject: [PATCH 012/117] start api-plugin - fetch a pages redirects --- plugins/api/README.md | 46 +++++++++++++++++++ plugins/api/package.json | 48 +++++++++++++++++++ plugins/api/rollup.config.js | 71 +++++++++++++++++++++++++++++ plugins/api/src/getRedirects.js | 36 +++++++++++++++ plugins/api/src/index.js | 8 ++++ plugins/api/tests/_lib.js | 13 ++++++ plugins/api/tests/redirects.test.js | 8 ++++ scratch.js | 22 +++++---- src/_fetch/http/server.js | 3 -- 9 files changed, 243 insertions(+), 12 deletions(-) create mode 100644 plugins/api/README.md create mode 100644 plugins/api/package.json create mode 100644 plugins/api/rollup.config.js create mode 100644 plugins/api/src/getRedirects.js create mode 100644 plugins/api/src/index.js create mode 100644 plugins/api/tests/_lib.js create mode 100644 plugins/api/tests/redirects.test.js diff --git a/plugins/api/README.md b/plugins/api/README.md new file mode 100644 index 00000000..51ff59c0 --- /dev/null +++ b/plugins/api/README.md @@ -0,0 +1,46 @@ +
+ + +
a plugin for wtf_wikipedia
+ + + + + + + + + + +
+
+ +
+ npm install wtf-plugin-api +
+ +Some additional methods for getting data from the wikimedia api + +```js +const wtf = require('wtf_wikipedia') +wtf.extend(require('wtf-plugin-api')) + +// fetch all a page's redirects +let doc = await wtf.fetch('Toronto Raptors') +let redirects = await doc.redirects() +console.log(redirects) +/* +[ + { title: 'the raptors' }, + { title: 'We The North' }, +] +*/ + +``` + +### API + +* **doc.redirects()** - fetch all pages that redirect to this document + + +MIT diff --git a/plugins/api/package.json b/plugins/api/package.json new file mode 100644 index 00000000..571ea7db --- /dev/null +++ b/plugins/api/package.json @@ -0,0 +1,48 @@ +{ + "name": "wtf-plugin-api", + "description": "wikimedia api plugin for wtf_wikipedia", + "version": "0.0.1", + "main": "./builds/wtf-plugin-api.js", + "unpkg": "./builds/wtf-plugin-api.min.js", + "module": "./builds/wtf-plugin-api.mjs", + "author": "Spencer Kelly (spencermountain)", + "homepage": "https://github.com/spencermountain/wtf_wikipedia/plugins/api#readme", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/wtf_wikipedia.git" + }, + "scripts": { + "watch": "amble ./scratch.js", + "test": "tape ./tests/**/*.test.js | tap-dancer", + "testb": "TESTENV=prod tape ./tests/**/*.test.js | tap-dancer", + "build": "rollup -c" + }, + "files": [ + "builds" + ], + "prettier": { + "trailingComma": "none", + "tabWidth": 2, + "semi": false, + "singleQuote": true, + "printWidth": 100 + }, + "dependencies": {}, + "peerDependencies": { + "wtf_wikipedia": "^8.0.0" + }, + "devDependencies": { + "@babel/core": "7.9.0", + "@babel/preset-env": "7.9.0", + "rollup": "2.2.0", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-commonjs": "^10.0.0", + "rollup-plugin-filesize-check": "0.0.1", + "rollup-plugin-json": "4.0.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-terser": "^5.0.0", + "tap-dancer": "0.2.0", + "tape": "4.13.2" + }, + "license": "MIT" +} diff --git a/plugins/api/rollup.config.js b/plugins/api/rollup.config.js new file mode 100644 index 00000000..3dd09db4 --- /dev/null +++ b/plugins/api/rollup.config.js @@ -0,0 +1,71 @@ +import commonjs from 'rollup-plugin-commonjs' +import { terser } from 'rollup-plugin-terser' +import babel from 'rollup-plugin-babel' +import sizeCheck from 'rollup-plugin-filesize-check' +import nodeResolve from 'rollup-plugin-node-resolve' + +import { version } from './package.json' +console.log('\n 📦 - running rollup..\n') + +const name = 'wtf-plugin-image' +const banner = `/* ${name} ${version} MIT */` +export default [ + // === es-module === + { + input: 'src/index.js', + output: [{ banner: banner, file: `builds/${name}.mjs`, format: 'esm' }], + plugins: [ + commonjs(), + nodeResolve(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'] + }) + ] + }, + + // === .js === + { + input: 'src/index.js', + output: [ + { + banner: banner, + file: `builds/${name}.js`, + format: 'umd', + name: 'wtfImage', + sourcemap: true + } + ], + plugins: [ + commonjs(), + nodeResolve(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'] + }) + ] + }, + // === min.js === + { + input: 'src/index.js', + output: [ + { + banner: banner, + file: `builds/${name}.min.js`, + format: 'umd', + name: 'wtfImage', + sourcemap: false + } + ], + plugins: [ + commonjs(), + nodeResolve(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'] + }), + terser(), + sizeCheck({ expect: 24, warn: 10 }) + ] + } +] diff --git a/plugins/api/src/getRedirects.js b/plugins/api/src/getRedirects.js new file mode 100644 index 00000000..31f213de --- /dev/null +++ b/plugins/api/src/getRedirects.js @@ -0,0 +1,36 @@ +const defaults = { + lang: 'en', + path: '/w/api.php' +} + +const normalize = function (title = '') { + title = title.replace(/ /g, '_') + title = title.trim() + return title +} + +const makeUrl = function (title, options, cursor) { + title = normalize(title) + title = encodeURIComponent(title) + let url = `https://${options.lang}.wikipedia.org/${options.path}?` + if (options.domain) { + url = `https://${options.domain}/${options.path}?` + } + url += `action=query&titles=${title}&rdnamespace=0&prop=redirects&rdlimit=500&format=json&origin=*&redirects=true` + if (cursor) { + url += '&rdcontinue=' + cursor + } + return url +} + +const getRedirects = function (doc, http) { + let url = makeUrl(doc.title(), defaults) + return http(url).then((res) => { + let pages = Object.keys(res.query.pages || {}) + if (pages.length === 0) { + return [] + } + return res.query.pages[pages[0]].redirects || [] + }) +} +module.exports = getRedirects diff --git a/plugins/api/src/index.js b/plugins/api/src/index.js new file mode 100644 index 00000000..e1cea3aa --- /dev/null +++ b/plugins/api/src/index.js @@ -0,0 +1,8 @@ +const getRedirects = require('./getRedirects') + +const addMethod = function (models, templates, wtf, http) { + models.Doc.prototype.redirects = function () { + return getRedirects(this, http) + } +} +module.exports = addMethod diff --git a/plugins/api/tests/_lib.js b/plugins/api/tests/_lib.js new file mode 100644 index 00000000..e7c10f86 --- /dev/null +++ b/plugins/api/tests/_lib.js @@ -0,0 +1,13 @@ +if (typeof process !== undefined && typeof module !== undefined) { + let wtf + if (process.env.TESTENV === 'prod') { + console.log('🧢 - testing production') + wtf = require('../../../') + wtf.extend(require(`../`)) + } else { + wtf = require('../../../src') + wtf.extend(require(`../src`)) + } + + module.exports = wtf +} diff --git a/plugins/api/tests/redirects.test.js b/plugins/api/tests/redirects.test.js new file mode 100644 index 00000000..c6bf623d --- /dev/null +++ b/plugins/api/tests/redirects.test.js @@ -0,0 +1,8 @@ +const test = require('tape') +const wtf = require('./_lib') + +test('redirects method', function (t) { + let doc = wtf('') + t.equal(typeof doc.redirects, 'function', 'has redirect method') + t.end() +}) diff --git a/scratch.js b/scratch.js index 0df10b88..15388fba 100644 --- a/scratch.js +++ b/scratch.js @@ -1,15 +1,19 @@ -var wtf = require('./src/index') -wtf.extend(require('./plugins/wikitext/src')) +const wtf = require('./src/index') +wtf.extend(require('./plugins/api/src')) // wtf.extend(require('./plugins/i18n/src')) // var str = `[[Image:Levellers declaration and standard.gif|thumb|Woodcut from a [[Diggers]] document by [[William Everard (Digger)|William Everard]]]]` // console.log(wtf(str).json()) -// wtf.fetch('Quartz', 'en').then((doc) => { -// // console.log(doc.lang()) -// console.log(doc.images().map((j) => j.url())) -// }) - -let result = wtf.random().then((doc) => { - console.log(doc.title(), doc.categories()) +wtf.fetch('Toronto Raptors', 'en').then((doc) => { + doc.redirects().then((res) => { + console.log(res) + console.log('done') + }) + // console.log(doc.lang()) + // console.log(doc.images().map((j) => j.url())) }) + +// wtf.random().then((doc) => { +// console.log(doc.title(), doc.categories()) +// }) diff --git a/src/_fetch/http/server.js b/src/_fetch/http/server.js index e8edee02..ccdc94d3 100644 --- a/src/_fetch/http/server.js +++ b/src/_fetch/http/server.js @@ -16,9 +16,6 @@ const request = function (url, opts = {}) { let json = JSON.parse(data) resolve(json) } catch (e) { - console.log('error') - console.log(data) - resolve(data) reject(e) } }) From f7c7e2a4425ff78b0de462e191141af3c805f09b Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 07:05:01 -0400 Subject: [PATCH 013/117] add incoming links and pageviews methods --- plugins/api/README.md | 58 ++++++++++++++++++++++++++++- plugins/api/src/_fns.js | 10 +++++ plugins/api/src/getIncoming.js | 27 ++++++++++++++ plugins/api/src/getPageViews.js | 27 ++++++++++++++ plugins/api/src/getRedirects.js | 11 +----- plugins/api/src/index.js | 10 ++++- plugins/api/tests/redirects.test.js | 4 +- scratch.js | 2 +- 8 files changed, 135 insertions(+), 14 deletions(-) create mode 100644 plugins/api/src/_fns.js create mode 100644 plugins/api/src/getIncoming.js create mode 100644 plugins/api/src/getPageViews.js diff --git a/plugins/api/README.md b/plugins/api/README.md index 51ff59c0..8f93e789 100644 --- a/plugins/api/README.md +++ b/plugins/api/README.md @@ -19,7 +19,16 @@ npm install wtf-plugin-api
-Some additional methods for getting data from the wikimedia api +Some helper methods for getting additional data from the wikimedia api. + +These methods simply grab data from the [wikipedia api](https://www.mediawiki.org/wiki/API:Main_page). + +Please use the wikipedia API respectfully. They are not meant to be used at high-volumes. +If you are seeking information on for many wikipedia pages, consider [parsing the dump](https://github.com/spencermountain/dumpster-dive/) instead. + +### Redirects +[Redirects](https://en.wikipedia.org/wiki/Wikipedia:Redirect) are an assortment of alternative names and mis-spellings for a wikipedia page. +They can be a rich source of linguistic data. On wikipedia, you can see all the redirects for a page [here](https://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&hidetrans=1&hidelinks=1&target=Toronto+Raptors&namespace=) ```js const wtf = require('wtf_wikipedia') @@ -33,14 +42,61 @@ console.log(redirects) [ { title: 'the raptors' }, { title: 'We The North' }, + ... ] */ ``` +### Incoming links +You can also get all pages that link to this page. +```js +const wtf = require('wtf_wikipedia') +wtf.extend(require('wtf-plugin-api')) + +// get all pages that link to this document +let doc = await wtf.fetch('Toronto Raptors') +let list = await doc.incomingLinks() +console.log(list) +/* +[ + { title: 'Toronto' }, + { title: 'Jurassic Park (film)' }, + { title: 'National Basketball Association' }, + ... +] +*/ +``` +By default, this method only returns full pages, and not redirects, or talk-pages. + + +### Page views +Wikipedia provides daily [page-view information](https://www.mediawiki.org/w/api.php?action=help&modules=query%2Bpageviews) providing a rough metric on a topic's popularity. +```js +const wtf = require('wtf_wikipedia') +wtf.extend(require('wtf-plugin-api')) + +let doc = await wtf.fetch('Toronto Raptors') +let byDay = await doc.pageViews() +console.log(byDay) +/* +{ + '2020-08-30': 4464, + '2020-08-31': 2739, + '2020-09-01': 3774, + '2020-09-02': 3347, + '2020-09-03': 3569, + ... +} +*/ +``` + ### API * **doc.redirects()** - fetch all pages that redirect to this document +* **doc.incomingLinks()** - fetch all pages that link to this document +* **doc.pageViews()** - daily traffic report for this document + MIT diff --git a/plugins/api/src/_fns.js b/plugins/api/src/_fns.js new file mode 100644 index 00000000..beda4e80 --- /dev/null +++ b/plugins/api/src/_fns.js @@ -0,0 +1,10 @@ +exports.normalize = function (title = '') { + title = title.replace(/ /g, '_') + title = title.trim() + return title +} + +exports.defaults = { + lang: 'en', + path: '/w/api.php' +} diff --git a/plugins/api/src/getIncoming.js b/plugins/api/src/getIncoming.js new file mode 100644 index 00000000..b9b9efed --- /dev/null +++ b/plugins/api/src/getIncoming.js @@ -0,0 +1,27 @@ +const { normalize, defaults } = require('./_fns') + +const makeUrl = function (title, options, cursor) { + title = normalize(title) + title = encodeURIComponent(title) + let url = `https://${options.lang}.wikipedia.org/${options.path}?` + if (options.domain) { + url = `https://${options.domain}/${options.path}?` + } + url += `action=query&titles=${title}&lhnamespace=0&prop=linkshere&lhshow=!redirect&lhlimit=500&format=json&origin=*&redirects=true` + if (cursor) { + url += '&lhcontinue=' + cursor + } + return url +} + +const getIncoming = function (doc, http) { + let url = makeUrl(doc.title(), defaults) + return http(url).then((res) => { + let pages = Object.keys(res.query.pages || {}) + if (pages.length === 0) { + return [] + } + return res.query.pages[pages[0]].linkshere || [] + }) +} +module.exports = getIncoming diff --git a/plugins/api/src/getPageViews.js b/plugins/api/src/getPageViews.js new file mode 100644 index 00000000..b18048bf --- /dev/null +++ b/plugins/api/src/getPageViews.js @@ -0,0 +1,27 @@ +const { normalize, defaults } = require('./_fns') + +const makeUrl = function (title, options, cursor) { + title = normalize(title) + title = encodeURIComponent(title) + let url = `https://${options.lang}.wikipedia.org/${options.path}?` + if (options.domain) { + url = `https://${options.domain}/${options.path}?` + } + url += `action=query&titles=${title}&prop=pageviews&format=json&origin=*&redirects=true` + if (cursor) { + url += '&rdcontinue=' + cursor + } + return url +} + +const getPageViews = function (doc, http) { + let url = makeUrl(doc.title(), defaults) + return http(url).then((res) => { + let pages = Object.keys(res.query.pages || {}) + if (pages.length === 0) { + return [] + } + return res.query.pages[pages[0]].pageviews || [] + }) +} +module.exports = getPageViews diff --git a/plugins/api/src/getRedirects.js b/plugins/api/src/getRedirects.js index 31f213de..6d61d990 100644 --- a/plugins/api/src/getRedirects.js +++ b/plugins/api/src/getRedirects.js @@ -1,13 +1,4 @@ -const defaults = { - lang: 'en', - path: '/w/api.php' -} - -const normalize = function (title = '') { - title = title.replace(/ /g, '_') - title = title.trim() - return title -} +const { normalize, defaults } = require('./_fns') const makeUrl = function (title, options, cursor) { title = normalize(title) diff --git a/plugins/api/src/index.js b/plugins/api/src/index.js index e1cea3aa..4fa3fa70 100644 --- a/plugins/api/src/index.js +++ b/plugins/api/src/index.js @@ -1,8 +1,16 @@ const getRedirects = require('./getRedirects') +const getIncoming = require('./getIncoming') +const getPageViews = require('./getPageViews') -const addMethod = function (models, templates, wtf, http) { +const addMethod = function (models, _templates, _wtf, http) { models.Doc.prototype.redirects = function () { return getRedirects(this, http) } + models.Doc.prototype.incomingLinks = function () { + return getIncoming(this, http) + } + models.Doc.prototype.pageViews = function () { + return getPageViews(this, http) + } } module.exports = addMethod diff --git a/plugins/api/tests/redirects.test.js b/plugins/api/tests/redirects.test.js index c6bf623d..d70ac995 100644 --- a/plugins/api/tests/redirects.test.js +++ b/plugins/api/tests/redirects.test.js @@ -1,8 +1,10 @@ const test = require('tape') const wtf = require('./_lib') -test('redirects method', function (t) { +test('smoketests', function (t) { let doc = wtf('') t.equal(typeof doc.redirects, 'function', 'has redirect method') + t.equal(typeof doc.incomingLinks, 'function', 'has incomingLinks method') + t.equal(typeof doc.pageViews, 'function', 'has pageViews method') t.end() }) diff --git a/scratch.js b/scratch.js index 15388fba..45ec8f7a 100644 --- a/scratch.js +++ b/scratch.js @@ -6,7 +6,7 @@ wtf.extend(require('./plugins/api/src')) // console.log(wtf(str).json()) wtf.fetch('Toronto Raptors', 'en').then((doc) => { - doc.redirects().then((res) => { + doc.pageViews().then((res) => { console.log(res) console.log('done') }) From c422a97925604d1c20325f631f1b87058f58fd5b Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 11:43:38 -0400 Subject: [PATCH 014/117] cleanup api plugin some more --- changelog.md | 7 ++-- plugins/api/README.md | 17 ++++++--- plugins/api/src/_fns.js | 8 ++++ plugins/api/src/category/getRandom.js | 35 +++++++++++++++++ plugins/api/src/getIncoming.js | 18 +++++++-- plugins/api/src/getPageViews.js | 15 ++++++-- plugins/api/src/getRedirects.js | 17 +++++++-- plugins/api/src/index.js | 12 ++++-- plugins/api/tests/index.test.js | 54 +++++++++++++++++++++++++++ plugins/api/tests/redirects.test.js | 10 ----- scratch.js | 24 ++++++------ src/index.js | 4 +- 12 files changed, 172 insertions(+), 49 deletions(-) create mode 100644 plugins/api/src/category/getRandom.js create mode 100644 plugins/api/tests/index.test.js delete mode 100644 plugins/api/tests/redirects.test.js diff --git a/changelog.md b/changelog.md index 2d5bb2fc..d71f0808 100644 --- a/changelog.md +++ b/changelog.md @@ -1,7 +1,8 @@ ---- - + #### 8.5.1 - fix reference json encoding for mongodb diff --git a/plugins/api/README.md b/plugins/api/README.md index 8f93e789..e273a394 100644 --- a/plugins/api/README.md +++ b/plugins/api/README.md @@ -21,12 +21,16 @@ Some helper methods for getting additional data from the wikimedia api. -These methods simply grab data from the [wikipedia api](https://www.mediawiki.org/wiki/API:Main_page). +the main `wtf_wikipedia` library has a few basic methods for fetching data from the [wikipedia api](https://www.mediawiki.org/wiki/API:Main_page) - +you can get an article with `.fetch()`, a category with `.category()` or a random page with `.random()`. -Please use the wikipedia API respectfully. They are not meant to be used at high-volumes. +There are a bunch of cool ways to get data from the API though, and this plugin tries to help with that. + +Please use the wikipedia API respectfully. This is not meant to be used at high-volumes. If you are seeking information on for many wikipedia pages, consider [parsing the dump](https://github.com/spencermountain/dumpster-dive/) instead. +There are also ways to batch requests, to reduce strain on wikimedia servers. These methods are meant to be simple wrappers for quick access. -### Redirects +## Page Redirects [Redirects](https://en.wikipedia.org/wiki/Wikipedia:Redirect) are an assortment of alternative names and mis-spellings for a wikipedia page. They can be a rich source of linguistic data. On wikipedia, you can see all the redirects for a page [here](https://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&hidetrans=1&hidelinks=1&target=Toronto+Raptors&namespace=) @@ -48,7 +52,7 @@ console.log(redirects) ``` -### Incoming links +## Incoming links You can also get all pages that link to this page. ```js const wtf = require('wtf_wikipedia') @@ -70,7 +74,7 @@ console.log(list) By default, this method only returns full pages, and not redirects, or talk-pages. -### Page views +## Page views Wikipedia provides daily [page-view information](https://www.mediawiki.org/w/api.php?action=help&modules=query%2Bpageviews) providing a rough metric on a topic's popularity. ```js const wtf = require('wtf_wikipedia') @@ -91,7 +95,8 @@ console.log(byDay) */ ``` -### API +--- +## API * **doc.redirects()** - fetch all pages that redirect to this document * **doc.incomingLinks()** - fetch all pages that link to this document diff --git a/plugins/api/src/_fns.js b/plugins/api/src/_fns.js index beda4e80..db530ad5 100644 --- a/plugins/api/src/_fns.js +++ b/plugins/api/src/_fns.js @@ -1,6 +1,7 @@ exports.normalize = function (title = '') { title = title.replace(/ /g, '_') title = title.trim() + title = encodeURIComponent(title) return title } @@ -8,3 +9,10 @@ exports.defaults = { lang: 'en', path: '/w/api.php' } + +exports.toUrlParams = function (obj) { + let arr = Object.entries(obj).map(([key, value]) => { + return `${encodeURIComponent(key)}=${encodeURIComponent(value)}` + }) + return arr.join('&') +} diff --git a/plugins/api/src/category/getRandom.js b/plugins/api/src/category/getRandom.js new file mode 100644 index 00000000..7c0165e9 --- /dev/null +++ b/plugins/api/src/category/getRandom.js @@ -0,0 +1,35 @@ +const { defaults, toUrlParams } = require('../_fns') + +const params = { + format: 'json', + action: 'query', + generator: 'random', + grnnamespace: 14, + prop: 'revisions', + grnlimit: 1, + origin: '*' +} + +const randomCategory = function (options = {}, http) { + options = Object.assign({}, defaults, options) + let url = `https://${options.lang}.wikipedia.org/${options.path}?` + if (options.domain) { + url = `https://${options.domain}/${options.path}?` + } + url += toUrlParams(params) + return http(url) + .then((res) => { + try { + let o = res.query.pages + let key = Object.keys(o)[0] + return o[key].title + } catch (e) { + throw e + } + }) + .catch((e) => { + console.error(e) + return null + }) +} +module.exports = randomCategory diff --git a/plugins/api/src/getIncoming.js b/plugins/api/src/getIncoming.js index b9b9efed..ffe5dfb0 100644 --- a/plugins/api/src/getIncoming.js +++ b/plugins/api/src/getIncoming.js @@ -1,13 +1,23 @@ -const { normalize, defaults } = require('./_fns') +const { normalize, defaults, toUrlParams } = require('./_fns') + +const params = { + action: 'query', + lhnamespace: 0, + prop: 'linkshere', + lhshow: '!redirect', + lhlimit: 500, + format: 'json', + origin: '*', + redirects: true +} const makeUrl = function (title, options, cursor) { - title = normalize(title) - title = encodeURIComponent(title) let url = `https://${options.lang}.wikipedia.org/${options.path}?` if (options.domain) { url = `https://${options.domain}/${options.path}?` } - url += `action=query&titles=${title}&lhnamespace=0&prop=linkshere&lhshow=!redirect&lhlimit=500&format=json&origin=*&redirects=true` + url += toUrlParams(params) + url += `&titles=${normalize(title)}` if (cursor) { url += '&lhcontinue=' + cursor } diff --git a/plugins/api/src/getPageViews.js b/plugins/api/src/getPageViews.js index b18048bf..908521c0 100644 --- a/plugins/api/src/getPageViews.js +++ b/plugins/api/src/getPageViews.js @@ -1,13 +1,20 @@ -const { normalize, defaults } = require('./_fns') +const { normalize, defaults, toUrlParams } = require('./_fns') + +const params = { + action: 'query', + prop: 'pageviews', + format: 'json', + origin: '*', + redirects: true +} const makeUrl = function (title, options, cursor) { - title = normalize(title) - title = encodeURIComponent(title) let url = `https://${options.lang}.wikipedia.org/${options.path}?` if (options.domain) { url = `https://${options.domain}/${options.path}?` } - url += `action=query&titles=${title}&prop=pageviews&format=json&origin=*&redirects=true` + url += toUrlParams(params) + url += `&titles=${normalize(title)}` if (cursor) { url += '&rdcontinue=' + cursor } diff --git a/plugins/api/src/getRedirects.js b/plugins/api/src/getRedirects.js index 6d61d990..2e3911b6 100644 --- a/plugins/api/src/getRedirects.js +++ b/plugins/api/src/getRedirects.js @@ -1,13 +1,22 @@ -const { normalize, defaults } = require('./_fns') +const { normalize, defaults, toUrlParams } = require('./_fns') + +const params = { + action: 'query', + rdnamespace: 0, + prop: 'redirects', + rdlimit: 500, + format: 'json', + origin: '*', + redirects: true +} const makeUrl = function (title, options, cursor) { - title = normalize(title) - title = encodeURIComponent(title) let url = `https://${options.lang}.wikipedia.org/${options.path}?` if (options.domain) { url = `https://${options.domain}/${options.path}?` } - url += `action=query&titles=${title}&rdnamespace=0&prop=redirects&rdlimit=500&format=json&origin=*&redirects=true` + url += toUrlParams(params) + url += `&titles=${normalize(title)}` if (cursor) { url += '&rdcontinue=' + cursor } diff --git a/plugins/api/src/index.js b/plugins/api/src/index.js index 4fa3fa70..79bf3659 100644 --- a/plugins/api/src/index.js +++ b/plugins/api/src/index.js @@ -1,16 +1,20 @@ const getRedirects = require('./getRedirects') const getIncoming = require('./getIncoming') const getPageViews = require('./getPageViews') +const randomCategory = require('./category/getRandom') -const addMethod = function (models, _templates, _wtf, http) { +const addMethod = function (models) { models.Doc.prototype.redirects = function () { - return getRedirects(this, http) + return getRedirects(this, models.http) } models.Doc.prototype.incomingLinks = function () { - return getIncoming(this, http) + return getIncoming(this, models.http) } models.Doc.prototype.pageViews = function () { - return getPageViews(this, http) + return getPageViews(this, models.http) + } + models.wtf.randomCategory = function (options) { + return randomCategory(options, models.http) } } module.exports = addMethod diff --git a/plugins/api/tests/index.test.js b/plugins/api/tests/index.test.js new file mode 100644 index 00000000..7f3576af --- /dev/null +++ b/plugins/api/tests/index.test.js @@ -0,0 +1,54 @@ +const test = require('tape') +const wtf = require('./_lib') + +const opts = { + 'Api-User-Agent': 'wtf_wikipedia test script - ' +} + +test('smoketests', function (t) { + let doc = wtf('') + t.equal(typeof doc.redirects, 'function', 'has redirect method') + t.equal(typeof doc.incomingLinks, 'function', 'has incomingLinks method') + t.equal(typeof doc.pageViews, 'function', 'has pageViews method') + t.equal(typeof wtf.randomCategory, 'function', 'has randomCategory method') + t.end() +}) + +test('randomCategory', (t) => { + t.plan(1) + const p = wtf.randomCategory('en', opts) + p.then(function (cat) { + t.ok(cat, "got randomCategory: '" + cat + "'") + }) +}) + +test('pageViews', (t) => { + t.plan(1) + let doc = wtf('') + doc.title('Toronto Raptors') + doc.lang('en') + doc.pageViews(opts).then(function (byDate) { + let dates = Object.keys(byDate) + t.ok(dates.length > 5, `got pageViews for ${dates.length} days`) + }) +}) + +test('redirects', (t) => { + t.plan(1) + let doc = wtf('') + doc.title('Toronto Raptors') + doc.lang('en') + doc.redirects(opts).then(function (links) { + t.ok(links.length > 3, `got ${links.length} redirects for Toronto Raptors`) + }) +}) + +test('incomingLinks', (t) => { + t.plan(1) + let doc = wtf('') + doc.title('Marty Embry') + doc.lang('en') + doc.incomingLinks(opts).then(function (links) { + t.ok(links.length > 3, `got ${links.length} links for Marty Embry`) + }) +}) diff --git a/plugins/api/tests/redirects.test.js b/plugins/api/tests/redirects.test.js deleted file mode 100644 index d70ac995..00000000 --- a/plugins/api/tests/redirects.test.js +++ /dev/null @@ -1,10 +0,0 @@ -const test = require('tape') -const wtf = require('./_lib') - -test('smoketests', function (t) { - let doc = wtf('') - t.equal(typeof doc.redirects, 'function', 'has redirect method') - t.equal(typeof doc.incomingLinks, 'function', 'has incomingLinks method') - t.equal(typeof doc.pageViews, 'function', 'has pageViews method') - t.end() -}) diff --git a/scratch.js b/scratch.js index 45ec8f7a..794ffeb4 100644 --- a/scratch.js +++ b/scratch.js @@ -5,15 +5,17 @@ wtf.extend(require('./plugins/api/src')) // var str = `[[Image:Levellers declaration and standard.gif|thumb|Woodcut from a [[Diggers]] document by [[William Everard (Digger)|William Everard]]]]` // console.log(wtf(str).json()) -wtf.fetch('Toronto Raptors', 'en').then((doc) => { - doc.pageViews().then((res) => { - console.log(res) - console.log('done') - }) - // console.log(doc.lang()) - // console.log(doc.images().map((j) => j.url())) -}) - -// wtf.random().then((doc) => { -// console.log(doc.title(), doc.categories()) +// wtf.fetch('Toronto Raptors', 'en').then((doc) => { +// doc.pageViews().then((res) => { +// console.log(res) +// console.log('done') +// }) +// // console.log(doc.lang()) +// // console.log(doc.images().map((j) => j.url())) // }) + +let doc = wtf('asf') +console.log(doc.title('Marty Embry')) +console.log(doc.lang('en')) +doc.incomingLinks().then((byDate) => console.log(byDate)) +console.log(doc.title()) diff --git a/src/index.js b/src/index.js index 5405506d..43d5a956 100644 --- a/src/index.js +++ b/src/index.js @@ -3,8 +3,6 @@ const random = require('./_fetch/random') const category = require('./_fetch/category') const version = require('./_version') const Document = require('./01-document/Document') -//this gets swapped for client-version in builds -const http = require('./_fetch/http/server') //the main 'factory' exported method const wtf = function (wiki, options) { @@ -39,7 +37,7 @@ wtf.category = function (cat, lang, options, cb) { return category(cat, lang, options, cb) } wtf.extend = function (fn) { - fn(models, templates, this, http) + fn(models, templates, this) return this } wtf.version = version From 75860f6de4dfe20d8287dc0bea2d00010a5c5fcf Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 13:49:04 -0400 Subject: [PATCH 015/117] api-plugin tests passing --- plugins/api/README.md | 60 ++++++++++++++++--- plugins/api/package-lock.json | 13 ++++ plugins/api/package.json | 4 +- plugins/api/src/category/getCategory.js | 34 +++++++++++ plugins/api/src/getTransclusions.js | 37 ++++++++++++ plugins/api/src/index.js | 10 ++++ plugins/api/tests/constructor.test.js | 34 +++++++++++ .../api/tests/{index.test.js => fns.test.js} | 9 --- scratch.js | 8 +-- 9 files changed, 185 insertions(+), 24 deletions(-) create mode 100644 plugins/api/package-lock.json create mode 100644 plugins/api/src/category/getCategory.js create mode 100644 plugins/api/src/getTransclusions.js create mode 100644 plugins/api/tests/constructor.test.js rename plugins/api/tests/{index.test.js => fns.test.js} (82%) diff --git a/plugins/api/README.md b/plugins/api/README.md index e273a394..e8ff6bca 100644 --- a/plugins/api/README.md +++ b/plugins/api/README.md @@ -30,14 +30,19 @@ Please use the wikipedia API respectfully. This is not meant to be used at high- If you are seeking information on for many wikipedia pages, consider [parsing the dump](https://github.com/spencermountain/dumpster-dive/) instead. There are also ways to batch requests, to reduce strain on wikimedia servers. These methods are meant to be simple wrappers for quick access. -## Page Redirects -[Redirects](https://en.wikipedia.org/wiki/Wikipedia:Redirect) are an assortment of alternative names and mis-spellings for a wikipedia page. -They can be a rich source of linguistic data. On wikipedia, you can see all the redirects for a page [here](https://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&hidetrans=1&hidelinks=1&target=Toronto+Raptors&namespace=) +Where appropriate, this plugin throttles requests to max 3 at-a-time. +to install: ```js const wtf = require('wtf_wikipedia') wtf.extend(require('wtf-plugin-api')) +``` + +## Page Redirects +[Redirects](https://en.wikipedia.org/wiki/Wikipedia:Redirect) are an assortment of alternative names and mis-spellings for a wikipedia page. +They can be a rich source of linguistic data. On wikipedia, you can see all the redirects for a page [here](https://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&hidetrans=1&hidelinks=1&target=Toronto+Raptors&namespace=) +```js // fetch all a page's redirects let doc = await wtf.fetch('Toronto Raptors') let redirects = await doc.redirects() @@ -55,9 +60,6 @@ console.log(redirects) ## Incoming links You can also get all pages that link to this page. ```js -const wtf = require('wtf_wikipedia') -wtf.extend(require('wtf-plugin-api')) - // get all pages that link to this document let doc = await wtf.fetch('Toronto Raptors') let list = await doc.incomingLinks() @@ -77,9 +79,6 @@ By default, this method only returns full pages, and not redirects, or talk-page ## Page views Wikipedia provides daily [page-view information](https://www.mediawiki.org/w/api.php?action=help&modules=query%2Bpageviews) providing a rough metric on a topic's popularity. ```js -const wtf = require('wtf_wikipedia') -wtf.extend(require('wtf-plugin-api')) - let doc = await wtf.fetch('Toronto Raptors') let byDay = await doc.pageViews() console.log(byDay) @@ -95,6 +94,49 @@ console.log(byDay) */ ``` +## randomCategory +get the name of a random wikipedia category, from a given wiki +```js +wtf.randomCategory({lang:'fr'}).then(cat=>{ + console.log(cat) + // 'Catégorie:Édifice religieux à Paris' +}) +``` + +# Loops +these methods return a list of parsed wikipedia documents. + +## fetchCategory +fetch+parse all documents in a given category, to a specific depth. +```js +// get the first sentence of all MLB stadiums: +wtf.fetchCategory('Major League Baseball venues').then(docs => { + docs.map(doc => doc.sentence(0).text()) + // [ + // 'Fenway park is a sports complex and major league baseball stadium...', + // 'Rogers Center is a entertainment venue ...' + //] +}) +``` + + +## fetchTemplate +Sometimes you want to get all the data for one infobox, or template - in all the pages it belongs to. +You can see a list pages of a specific template with [this tool](https://en.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Template:Infobox_medical_condition_(new)&hidelinks=1&limit=500), and you can get a approximate count of pages with [this tool](https://templatecount.toolforge.org/index.php?lang=en&namespace=10&name=Infobox_medical_condition_(new)#bottom) + +This method fetches+parses all documents that use (aka 'transclude') a specific template or infobox. +You can get the name of the template from viewing the page's source. Sometimes you need to add a 'Template: ' to the start of it, sometimes you don't. + +to +```js +// parse all the chefs wikipedia articles +wtf.fetchTemplate('Template:Switzerland-badminton-bio-stub').then(docs => { + docs.forEach(doc => { + let height=doc.infobox(0).get('height') + console.log(doc.title(), height) + }) +}) +``` --- ## API diff --git a/plugins/api/package-lock.json b/plugins/api/package-lock.json new file mode 100644 index 00000000..5295ff4a --- /dev/null +++ b/plugins/api/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "wtf-plugin-api", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "slow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/slow/-/slow-1.1.0.tgz", + "integrity": "sha512-NEPfKulZIDhCsEccS23VXE7nfhBhAAPMcYmbry3YZTk50buXGLNm1vsfeIWy+EdOyU/fk+6usnf1zCxPCNJ4Rg==" + } + } +} diff --git a/plugins/api/package.json b/plugins/api/package.json index 571ea7db..e455aa32 100644 --- a/plugins/api/package.json +++ b/plugins/api/package.json @@ -27,7 +27,9 @@ "singleQuote": true, "printWidth": 100 }, - "dependencies": {}, + "dependencies": { + "slow": "^1.1.0" + }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" }, diff --git a/plugins/api/src/category/getCategory.js b/plugins/api/src/category/getCategory.js new file mode 100644 index 00000000..4ec61f9f --- /dev/null +++ b/plugins/api/src/category/getCategory.js @@ -0,0 +1,34 @@ +const slow = require('slow') + +const chunkBy = function (arr, chunkSize = 5) { + let groups = [] + for (let i = 0; i < arr.length; i += chunkSize) { + groups.push(arr.slice(i, i + chunkSize)) + } + return groups +} + +const fetchCat = function (cat, options, wtf) { + if (!cat) { + return { docs: [], categories: [] } + } + return wtf.category(cat, options.lang).then((resp) => { + let pages = resp.pages.map((o) => o.title) + let groups = chunkBy(pages) + + const doit = function (group) { + return wtf.fetch(group, options) //returns a promise + } + //only allow three requests at a time + return slow.three(groups, doit).then((responses) => { + //flatten the results + let docs = [].concat.apply([], responses) + return { + docs: docs, + categories: resp.categories + } + }) + }) +} + +module.exports = fetchCat diff --git a/plugins/api/src/getTransclusions.js b/plugins/api/src/getTransclusions.js new file mode 100644 index 00000000..0ec331e7 --- /dev/null +++ b/plugins/api/src/getTransclusions.js @@ -0,0 +1,37 @@ +const { normalize, defaults, toUrlParams } = require('./_fns') + +const params = { + action: 'query', + tinamespace: 0, + prop: 'transcludedin', + tilimit: 500, + format: 'json', + origin: '*', + redirects: true +} + +const makeUrl = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?` + if (options.domain) { + url = `https://${options.domain}/${options.path}?` + } + url += toUrlParams(params) + url += `&titles=${normalize(title)}` + if (cursor) { + url += '&ticontinue=' + cursor + } + return url +} + +// fetch all the pages that use a specific template +const getTransclusions = function (template, _options, http) { + let url = makeUrl(template, defaults) + return http(url).then((res) => { + let pages = Object.keys(res.query.pages || {}) + if (pages.length === 0) { + return [] + } + return res.query.pages[pages[0]].transcludedin || [] + }) +} +module.exports = getTransclusions diff --git a/plugins/api/src/index.js b/plugins/api/src/index.js index 79bf3659..c6cebb59 100644 --- a/plugins/api/src/index.js +++ b/plugins/api/src/index.js @@ -1,9 +1,12 @@ const getRedirects = require('./getRedirects') const getIncoming = require('./getIncoming') const getPageViews = require('./getPageViews') +const getTransclusions = require('./getTransclusions') +const getCategory = require('./category/getCategory') const randomCategory = require('./category/getRandom') const addMethod = function (models) { + // doc methods models.Doc.prototype.redirects = function () { return getRedirects(this, models.http) } @@ -13,8 +16,15 @@ const addMethod = function (models) { models.Doc.prototype.pageViews = function () { return getPageViews(this, models.http) } + // constructor methods models.wtf.randomCategory = function (options) { return randomCategory(options, models.http) } + models.wtf.getTemplate = function (template, options) { + return getTransclusions(template, options, models.http) + } + models.wtf.getCategory = function (category, options) { + return getCategory(category, options, models.wtf) + } } module.exports = addMethod diff --git a/plugins/api/tests/constructor.test.js b/plugins/api/tests/constructor.test.js new file mode 100644 index 00000000..4395e950 --- /dev/null +++ b/plugins/api/tests/constructor.test.js @@ -0,0 +1,34 @@ +const test = require('tape') +const wtf = require('./_lib') + +const opts = { + 'Api-User-Agent': 'wtf_wikipedia test script - ' +} + +test('smoketests', function (t) { + t.equal(typeof wtf.randomCategory, 'function', 'has randomCategory method') + t.equal(typeof wtf.getCategory, 'function', 'has getCategory method') + t.equal(typeof wtf.getTemplate, 'function', 'has getTemplate method') + t.end() +}) + +test('randomCategory', (t) => { + t.plan(1) + wtf.randomCategory('en', opts).then(function (cat) { + t.ok(cat, "got randomCategory: '" + cat + "'") + }) +}) + +test('getCategory', (t) => { + t.plan(1) + wtf.getCategory('Category:Swiss chess players', opts).then(function (res) { + t.ok(res.docs.length > 0, `got ${res.docs.length} pages for category`) + }) +}) + +test('getTemplate', (t) => { + t.plan(1) + wtf.getTemplate('Template:Switzerland-badminton-bio-stub', opts).then(function (pages) { + t.ok(pages.length > 0, `got ${pages.length} pages for template`) + }) +}) diff --git a/plugins/api/tests/index.test.js b/plugins/api/tests/fns.test.js similarity index 82% rename from plugins/api/tests/index.test.js rename to plugins/api/tests/fns.test.js index 7f3576af..c21eda5f 100644 --- a/plugins/api/tests/index.test.js +++ b/plugins/api/tests/fns.test.js @@ -10,18 +10,9 @@ test('smoketests', function (t) { t.equal(typeof doc.redirects, 'function', 'has redirect method') t.equal(typeof doc.incomingLinks, 'function', 'has incomingLinks method') t.equal(typeof doc.pageViews, 'function', 'has pageViews method') - t.equal(typeof wtf.randomCategory, 'function', 'has randomCategory method') t.end() }) -test('randomCategory', (t) => { - t.plan(1) - const p = wtf.randomCategory('en', opts) - p.then(function (cat) { - t.ok(cat, "got randomCategory: '" + cat + "'") - }) -}) - test('pageViews', (t) => { t.plan(1) let doc = wtf('') diff --git a/scratch.js b/scratch.js index 794ffeb4..05397fd2 100644 --- a/scratch.js +++ b/scratch.js @@ -14,8 +14,6 @@ wtf.extend(require('./plugins/api/src')) // // console.log(doc.images().map((j) => j.url())) // }) -let doc = wtf('asf') -console.log(doc.title('Marty Embry')) -console.log(doc.lang('en')) -doc.incomingLinks().then((byDate) => console.log(byDate)) -console.log(doc.title()) +wtf.getTemplate('Template:Switzerland-badminton-bio-stub').then((pages) => { + console.log(pages) +}) From 440cf8e3a0123e97d523b862e6e2dad8f61d6153 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 13:55:51 -0400 Subject: [PATCH 016/117] rename methods --- changelog.md | 1 + plugins/api/README.md | 31 +++++++++++++++---------------- plugins/api/src/index.js | 13 +++++++------ 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/changelog.md b/changelog.md index d71f0808..69dd722e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,7 @@ #### 8.5.1 diff --git a/plugins/api/README.md b/plugins/api/README.md index e8ff6bca..ca93df20 100644 --- a/plugins/api/README.md +++ b/plugins/api/README.md @@ -45,7 +45,7 @@ They can be a rich source of linguistic data. On wikipedia, you can see all the ```js // fetch all a page's redirects let doc = await wtf.fetch('Toronto Raptors') -let redirects = await doc.redirects() +let redirects = await doc.getRedirects() console.log(redirects) /* [ @@ -62,7 +62,7 @@ You can also get all pages that link to this page. ```js // get all pages that link to this document let doc = await wtf.fetch('Toronto Raptors') -let list = await doc.incomingLinks() +let list = await doc.getIncoming() console.log(list) /* [ @@ -80,7 +80,7 @@ By default, this method only returns full pages, and not redirects, or talk-page Wikipedia provides daily [page-view information](https://www.mediawiki.org/w/api.php?action=help&modules=query%2Bpageviews) providing a rough metric on a topic's popularity. ```js let doc = await wtf.fetch('Toronto Raptors') -let byDay = await doc.pageViews() +let byDay = await doc.getPageViews() console.log(byDay) /* { @@ -94,23 +94,20 @@ console.log(byDay) */ ``` -## randomCategory +## Random Category get the name of a random wikipedia category, from a given wiki ```js -wtf.randomCategory({lang:'fr'}).then(cat=>{ +wtf.getRandomCategory({lang:'fr'}).then(cat=>{ console.log(cat) // 'Catégorie:Édifice religieux à Paris' }) ``` -# Loops -these methods return a list of parsed wikipedia documents. - -## fetchCategory +## Category Pages fetch+parse all documents in a given category, to a specific depth. ```js // get the first sentence of all MLB stadiums: -wtf.fetchCategory('Major League Baseball venues').then(docs => { +wtf.getCategoryPages('Major League Baseball venues').then(docs => { docs.map(doc => doc.sentence(0).text()) // [ // 'Fenway park is a sports complex and major league baseball stadium...', @@ -120,7 +117,7 @@ wtf.fetchCategory('Major League Baseball venues').then(docs => { ``` -## fetchTemplate +## Template pages Sometimes you want to get all the data for one infobox, or template - in all the pages it belongs to. You can see a list pages of a specific template with [this tool](https://en.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Template:Infobox_medical_condition_(new)&hidelinks=1&limit=500), and you can get a approximate count of pages with [this tool](https://templatecount.toolforge.org/index.php?lang=en&namespace=10&name=Infobox_medical_condition_(new)#bottom) @@ -130,7 +127,7 @@ You can get the name of the template from viewing the page's source. Sometimes y to ```js // parse all the chefs wikipedia articles -wtf.fetchTemplate('Template:Switzerland-badminton-bio-stub').then(docs => { +wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then(docs => { docs.forEach(doc => { let height=doc.infobox(0).get('height') console.log(doc.title(), height) @@ -140,10 +137,12 @@ wtf.fetchTemplate('Template:Switzerland-badminton-bio-stub').then(docs => { --- ## API -* **doc.redirects()** - fetch all pages that redirect to this document -* **doc.incomingLinks()** - fetch all pages that link to this document -* **doc.pageViews()** - daily traffic report for this document - +* **doc.getRedirects()** - fetch all pages that redirect to this document +* **doc.getIncoming()** - fetch all pages that link to this document +* **doc.getPageViews()** - daily traffic report for this document +* **wtf.getRandomCategory()** - +* **wtf.getTemplatePages()** - +* **wtf.getCategoryPages()** - MIT diff --git a/plugins/api/src/index.js b/plugins/api/src/index.js index c6cebb59..ac54501c 100644 --- a/plugins/api/src/index.js +++ b/plugins/api/src/index.js @@ -7,23 +7,24 @@ const randomCategory = require('./category/getRandom') const addMethod = function (models) { // doc methods - models.Doc.prototype.redirects = function () { + models.Doc.prototype.getRedirects = function () { return getRedirects(this, models.http) } - models.Doc.prototype.incomingLinks = function () { + models.Doc.prototype.getIncoming = function () { return getIncoming(this, models.http) } - models.Doc.prototype.pageViews = function () { + models.Doc.prototype.getPageViews = function () { return getPageViews(this, models.http) } + // constructor methods - models.wtf.randomCategory = function (options) { + models.wtf.getRandomCategory = function (options) { return randomCategory(options, models.http) } - models.wtf.getTemplate = function (template, options) { + models.wtf.getTemplatePages = function (template, options) { return getTransclusions(template, options, models.http) } - models.wtf.getCategory = function (category, options) { + models.wtf.getCategoryPages = function (category, options) { return getCategory(category, options, models.wtf) } } From a700e7cc2a09af98132740ced1ac0709be65b4c2 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 15:04:56 -0400 Subject: [PATCH 017/117] add fetchList method to api plugin --- plugins/api/README.md | 22 ++++++++++++ plugins/api/src/fetchList.js | 34 +++++++++++++++++++ plugins/api/src/{category => }/getCategory.js | 2 +- .../getRandom.js => getRandomCategory.js} | 2 +- plugins/api/src/index.js | 10 ++++-- plugins/api/tests/constructor.test.js | 26 +++++++++----- scratch.js | 21 ++++++++++-- 7 files changed, 102 insertions(+), 15 deletions(-) create mode 100644 plugins/api/src/fetchList.js rename plugins/api/src/{category => }/getCategory.js (93%) rename plugins/api/src/{category/getRandom.js => getRandomCategory.js} (93%) diff --git a/plugins/api/README.md b/plugins/api/README.md index ca93df20..e5aba138 100644 --- a/plugins/api/README.md +++ b/plugins/api/README.md @@ -134,6 +134,28 @@ wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then(docs => { }) }) ``` + +## Fetch a List of pages +`wtf.fetchList()` will fetch an array of articles, in a throttled-way. +It is built to work in-concert with the other methods in this plugin, so you can compose them like this: +```js +let pages = await wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub') +let docs = await wtf.fetchList(pages) +// grab infobox data of each badminton player: +docs.forEach((doc) => { + let infobox = doc.infobox(0) + if (infobox && infobox.get('height')) { + console.log(doc.title(), infobox.get('height').text()) + } +}) +// Christian Boesiger 1.73 m +// Sabrina Jaquet 1.69m +// Céline Burkart 1.65 m +// Oliver Schaller 1.80 m +// Anthony Dumartheray 1.78 m +// Ayla Huser 1.68 m +``` + --- ## API diff --git a/plugins/api/src/fetchList.js b/plugins/api/src/fetchList.js new file mode 100644 index 00000000..393692b4 --- /dev/null +++ b/plugins/api/src/fetchList.js @@ -0,0 +1,34 @@ +const slow = require('slow') +const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]' +} + +const chunkBy = function (arr, chunkSize = 5) { + let groups = [] + for (let i = 0; i < arr.length; i += chunkSize) { + groups.push(arr.slice(i, i + chunkSize)) + } + return groups +} + +const fetchList = function (pages, options, wtf) { + // support a list of strings, or objects + if (pages[0] && isObject(pages[0])) { + pages = pages.map((o) => o.title) + } + // fetch in groups of 5 + let groups = chunkBy(pages) + + const doit = function (group) { + return wtf.fetch(group, options) //returns a promise + } + //only allow three requests at a time + return slow.three(groups, doit).then((res) => { + // flatten into one list + return res.reduce((arr, a) => { + arr = arr.concat(a) + return arr + }) + }) +} +module.exports = fetchList diff --git a/plugins/api/src/category/getCategory.js b/plugins/api/src/getCategory.js similarity index 93% rename from plugins/api/src/category/getCategory.js rename to plugins/api/src/getCategory.js index 4ec61f9f..10f13255 100644 --- a/plugins/api/src/category/getCategory.js +++ b/plugins/api/src/getCategory.js @@ -8,7 +8,7 @@ const chunkBy = function (arr, chunkSize = 5) { return groups } -const fetchCat = function (cat, options, wtf) { +const fetchCat = function (cat, options = {}, wtf) { if (!cat) { return { docs: [], categories: [] } } diff --git a/plugins/api/src/category/getRandom.js b/plugins/api/src/getRandomCategory.js similarity index 93% rename from plugins/api/src/category/getRandom.js rename to plugins/api/src/getRandomCategory.js index 7c0165e9..332436b7 100644 --- a/plugins/api/src/category/getRandom.js +++ b/plugins/api/src/getRandomCategory.js @@ -1,4 +1,4 @@ -const { defaults, toUrlParams } = require('../_fns') +const { defaults, toUrlParams } = require('./_fns') const params = { format: 'json', diff --git a/plugins/api/src/index.js b/plugins/api/src/index.js index ac54501c..c5dc67e9 100644 --- a/plugins/api/src/index.js +++ b/plugins/api/src/index.js @@ -2,8 +2,9 @@ const getRedirects = require('./getRedirects') const getIncoming = require('./getIncoming') const getPageViews = require('./getPageViews') const getTransclusions = require('./getTransclusions') -const getCategory = require('./category/getCategory') -const randomCategory = require('./category/getRandom') +const getCategory = require('./getCategory') +const getRandomCategory = require('./getRandomCategory') +const fetchList = require('./fetchList') const addMethod = function (models) { // doc methods @@ -19,7 +20,7 @@ const addMethod = function (models) { // constructor methods models.wtf.getRandomCategory = function (options) { - return randomCategory(options, models.http) + return getRandomCategory(options, models.http) } models.wtf.getTemplatePages = function (template, options) { return getTransclusions(template, options, models.http) @@ -27,5 +28,8 @@ const addMethod = function (models) { models.wtf.getCategoryPages = function (category, options) { return getCategory(category, options, models.wtf) } + models.wtf.fetchList = function (list, options) { + return fetchList(list, options, models.wtf) + } } module.exports = addMethod diff --git a/plugins/api/tests/constructor.test.js b/plugins/api/tests/constructor.test.js index 4395e950..e25012b5 100644 --- a/plugins/api/tests/constructor.test.js +++ b/plugins/api/tests/constructor.test.js @@ -6,29 +6,39 @@ const opts = { } test('smoketests', function (t) { - t.equal(typeof wtf.randomCategory, 'function', 'has randomCategory method') - t.equal(typeof wtf.getCategory, 'function', 'has getCategory method') - t.equal(typeof wtf.getTemplate, 'function', 'has getTemplate method') + t.equal(typeof wtf.getRandomCategory, 'function', 'has randomCategory method') + t.equal(typeof wtf.getCategoryPages, 'function', 'has getCategory method') + t.equal(typeof wtf.getTemplatePages, 'function', 'has getTemplate method') t.end() }) test('randomCategory', (t) => { t.plan(1) - wtf.randomCategory('en', opts).then(function (cat) { + wtf.getRandomCategory('en', opts).then(function (cat) { t.ok(cat, "got randomCategory: '" + cat + "'") }) }) test('getCategory', (t) => { t.plan(1) - wtf.getCategory('Category:Swiss chess players', opts).then(function (res) { - t.ok(res.docs.length > 0, `got ${res.docs.length} pages for category`) + wtf.getCategoryPages('Swiss female skeleton racers', opts).then(function (list) { + t.ok(list.docs.length > 0, `got ${list.docs.length} pages for category`) }) }) test('getTemplate', (t) => { t.plan(1) - wtf.getTemplate('Template:Switzerland-badminton-bio-stub', opts).then(function (pages) { - t.ok(pages.length > 0, `got ${pages.length} pages for template`) + wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub', opts).then(function (list) { + t.ok(list.length > 0, `got ${list.length} pages for template`) + }) +}) + +test('fetchList', (t) => { + t.plan(3) + let arr = ['Marina Gilardoni', 'Jessica Kilian', 'Tanja Morel'] + wtf.fetchList(arr, opts).then(function (docs) { + docs.forEach((doc) => { + t.ok(doc.sentences(0).text(), `got ${doc.title()}`) + }) }) }) diff --git a/scratch.js b/scratch.js index 05397fd2..253eacf8 100644 --- a/scratch.js +++ b/scratch.js @@ -14,6 +14,23 @@ wtf.extend(require('./plugins/api/src')) // // console.log(doc.images().map((j) => j.url())) // }) -wtf.getTemplate('Template:Switzerland-badminton-bio-stub').then((pages) => { - console.log(pages) +// wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then((pages) => { +// wtf.fetchList(pages).then((docs) => { +// docs.forEach((doc) => console.log(doc.sentences(0).text())) +// }) +// }) + +// wtf.getCategoryPages('Category:Swiss skeleton racers').then(function (list) { +// console.log(list) +// }) + +wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then(function (pages) { + wtf.fetchList(pages).then((docs) => { + docs.forEach((doc) => { + let infobox = doc.infobox(0) + if (infobox && infobox.get('height')) { + console.log(doc.title(), infobox.get('height').text()) + } + }) + }) }) From 71b10f3799d14a58bea21cb31e0903e6b53533c7 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 29 Oct 2020 15:13:39 -0400 Subject: [PATCH 018/117] first api-plugin build --- package-lock.json | 1038 +++++----- package.json | 16 +- plugins/api/builds/wtf-plugin-api.js | 477 +++++ plugins/api/builds/wtf-plugin-api.js.map | 1 + plugins/api/builds/wtf-plugin-api.min.js | 1 + plugins/api/builds/wtf-plugin-api.mjs | 468 +++++ plugins/api/package-lock.json | 2286 ++++++++++++++++++++++ plugins/api/package.json | 12 +- plugins/api/rollup.config.js | 2 +- plugins/api/tests/fns.test.js | 16 +- scratch.js | 19 - 11 files changed, 3760 insertions(+), 576 deletions(-) create mode 100644 plugins/api/builds/wtf-plugin-api.js create mode 100644 plugins/api/builds/wtf-plugin-api.js.map create mode 100644 plugins/api/builds/wtf-plugin-api.min.js create mode 100644 plugins/api/builds/wtf-plugin-api.mjs diff --git a/package-lock.json b/package-lock.json index 2e180186..2fa3b7cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,30 +14,25 @@ } }, "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.1.tgz", + "integrity": "sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==", + "dev": true }, "@babel/core": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", - "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.6", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.5", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -48,10 +43,16 @@ "source-map": "^0.5.0" }, "dependencies": { + "@babel/parser": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", + "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "dev": true + }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -68,20 +69,20 @@ } }, "@babel/generator": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", - "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", + "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", "dev": true, "requires": { - "@babel/types": "^7.11.5", + "@babel/types": "^7.12.1", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -107,9 +108,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -136,9 +137,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -155,41 +156,39 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz", + "integrity": "sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.4", + "@babel/compat-data": "^7.12.1", + "@babel/helper-validator-option": "^7.12.1", "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", "semver": "^5.5.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", "@babel/helper-split-export-declaration": "^7.10.4" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { @@ -204,9 +203,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -223,18 +222,18 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -262,9 +261,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -290,9 +289,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -318,9 +317,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -337,18 +336,18 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -374,33 +373,35 @@ } }, "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "lodash": "^4.17.19" }, "dependencies": { "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -426,9 +427,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -468,21 +469,20 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -499,21 +499,21 @@ } }, "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", + "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -530,19 +530,18 @@ } }, "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -559,18 +558,18 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -596,9 +595,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -620,10 +619,16 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", @@ -633,9 +638,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -652,20 +657,20 @@ } }, "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", + "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", "dev": true, "requires": { "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -699,30 +704,30 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -730,9 +735,9 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -740,9 +745,9 @@ } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -750,9 +755,9 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -760,9 +765,9 @@ } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -770,9 +775,9 @@ } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", + "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -780,20 +785,20 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -801,33 +806,33 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, @@ -841,9 +846,9 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -931,47 +936,47 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-remap-async-to-generator": "^7.12.1" }, "dependencies": { "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -988,27 +993,27 @@ } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", @@ -1016,52 +1021,52 @@ "@babel/helper-function-name": "^7.10.4", "@babel/helper-optimise-call-expression": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", @@ -1069,18 +1074,18 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", @@ -1088,156 +1093,156 @@ } }, "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -1245,68 +1250,68 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", - "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", "dev": true, "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", @@ -1316,61 +1321,58 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.5", - "browserslist": "^4.12.0", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -1400,9 +1402,9 @@ } }, "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -1420,9 +1422,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -1439,26 +1441,32 @@ } }, "@babel/traverse": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", - "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", + "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", + "@babel/generator": "^7.12.1", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.5", - "@babel/types": "^7.11.5", + "@babel/parser": "^7.12.1", + "@babel/types": "^7.12.1", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" }, "dependencies": { + "@babel/parser": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", + "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "dev": true + }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -1486,9 +1494,9 @@ } }, "@eslint/eslintrc": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", - "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz", + "integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -1579,9 +1587,9 @@ "dev": true }, "agent-base": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", - "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { "debug": "4" @@ -1598,9 +1606,9 @@ } }, "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -1873,16 +1881,28 @@ "dev": true }, "codecov": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.7.2.tgz", - "integrity": "sha512-fmCjAkTese29DUX3GMIi4EaKGflHa4K51EoMc29g8fBHawdk/+KEq5CWOeXLdd9+AT7o1wO4DIpp/Z1KCqCz1g==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.0.tgz", + "integrity": "sha512-7E/S7hmq2CJvCMBMu+aRACO9jxQX1HJug/M3ub8+t84R+5Ai2T5sFMxS3W8P41m2A63+VSAAL4U0aBlqZXkJPw==", "dev": true, "requires": { "argv": "0.0.2", "ignore-walk": "3.0.3", - "js-yaml": "3.13.1", - "teeny-request": "6.0.1", + "js-yaml": "3.14.0", + "teeny-request": "7.0.1", "urlgrey": "0.4.4" + }, + "dependencies": { + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } } }, "color-convert": { @@ -1970,12 +1990,12 @@ "dev": true }, "cross-env": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", - "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", + "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0" + "cross-spawn": "^7.0.1" } }, "cross-spawn": { @@ -2190,13 +2210,13 @@ "dev": true }, "eslint": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.10.0.tgz", - "integrity": "sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.12.1.tgz", + "integrity": "sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.1.3", + "@eslint/eslintrc": "^0.2.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -2205,7 +2225,7 @@ "enquirer": "^2.3.5", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", + "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.0", "esquery": "^1.2.0", "esutils": "^2.0.2", @@ -2331,9 +2351,9 @@ } }, "eslint-plugin-jsdoc": { - "version": "30.6.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.6.4.tgz", - "integrity": "sha512-aDTsAkKwyMsIYtytjH5zPtv+LkbCORN6oy/T4L40ssU5pgXWRSs0ULyJb6e4p2jT8y5nmG3IgpawYarL4tKunw==", + "version": "30.7.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.3.tgz", + "integrity": "sha512-slzJeKrm3vXabRYcFBpbUgWgdnATN9rNOFAr7IhmkxmR9Vk/6qN1c/IdvTqVSEctDRQ08chR+Lvk8fRayXgYZg==", "dev": true, "requires": { "comment-parser": "^0.7.6", @@ -2385,12 +2405,20 @@ "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, "espree": { @@ -2402,6 +2430,14 @@ "acorn": "^7.4.0", "acorn-jsx": "^5.2.0", "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "esprima": { @@ -2610,9 +2646,9 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { @@ -2717,21 +2753,13 @@ } }, "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "requires": { - "agent-base": "5", + "agent-base": "6", "debug": "4" - }, - "dependencies": { - "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true - } } }, "ignore": { @@ -2801,15 +2829,6 @@ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -3254,21 +3273,6 @@ "invert-kv": "^1.0.0" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3345,15 +3349,6 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.6", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz", @@ -3849,6 +3844,21 @@ } } }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, "readdirp": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", @@ -4055,9 +4065,9 @@ "dev": true }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -4161,9 +4171,9 @@ } }, "rollup": { - "version": "2.26.11", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.11.tgz", - "integrity": "sha512-xyfxxhsE6hW57xhfL1I+ixH8l2bdoIMaAecdQiWF3N7IgJEMu99JG+daBiSZQjnBpzFxa0/xZm+3pbCdAQehHw==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz", + "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -4408,7 +4418,7 @@ }, "split": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/split/-/split-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", "dev": true, "requires": { @@ -4576,44 +4586,13 @@ "dev": true }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.0.tgz", + "integrity": "sha512-ivZ+x++JKBbMQP5Jp7xfT21HsGJ+AeNMV4grlREyowcgDilFiY7b+nmDwffA+iagItqth3W+9UW4DBHsak3P8Q==", "dev": true, "requires": { "chalk": "2.4.2", "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "tap-out": { @@ -4626,23 +4605,6 @@ "readable-stream": "2.2.9", "split": "1.0.0", "trim": "0.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", - "dev": true, - "requires": { - "buffer-shims": "~1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", - "util-deprecate": "~1.0.1" - } - } } }, "tape": { @@ -4694,16 +4656,24 @@ } }, "teeny-request": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.1.tgz", - "integrity": "sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz", + "integrity": "sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==", "dev": true, "requires": { "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^4.0.0", - "node-fetch": "^2.2.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", "stream-events": "^1.0.5", - "uuid": "^3.3.2" + "uuid": "^8.0.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", + "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", + "dev": true + } } }, "terser": { @@ -4876,9 +4846,9 @@ "dev": true }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "validate-npm-package-license": { diff --git a/package.json b/package.json index 6980c31d..4a08aa5a 100644 --- a/package.json +++ b/package.json @@ -71,25 +71,25 @@ }, "dependencies": {}, "devDependencies": { - "@babel/core": "7.11.6", - "@babel/preset-env": "7.11.5", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", "@rollup/plugin-alias": "3.1.1", "amble": "1.1.0", - "codecov": "3.7.2", - "cross-env": "6.0.3", - "eslint": "^7.10.0", + "codecov": "3.8.0", + "cross-env": "7.0.2", + "eslint": "7.12.1", "eslint-plugin-compat": "^3.8.0", - "eslint-plugin-jsdoc": "^30.6.4", + "eslint-plugin-jsdoc": "30.7.3", "jsdoc": "^3.6.6", "nyc": "^15.1.0", "recursive-install": "1.4.0", - "rollup": "2.26.11", + "rollup": "2.32.1", "rollup-plugin-babel": "4.4.0", "rollup-plugin-commonjs": "10.1.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-terser": "7.0.2", "shelljs": "0.8.4", - "tap-dancer": "0.2.0", + "tap-dancer": "0.3.0", "tape": "5.0.1", "tsd-jsdoc": "^2.5.0" }, diff --git a/plugins/api/builds/wtf-plugin-api.js b/plugins/api/builds/wtf-plugin-api.js new file mode 100644 index 00000000..17664302 --- /dev/null +++ b/plugins/api/builds/wtf-plugin-api.js @@ -0,0 +1,477 @@ +/* wtf-plugin-api 0.0.1 MIT */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.wtfImage = factory()); +}(this, (function () { 'use strict'; + + var normalize = function (title = '') { + title = title.replace(/ /g, '_'); + title = title.trim(); + title = encodeURIComponent(title); + return title; + }; + + var defaults = { + lang: 'en', + path: '/w/api.php' + }; + + var toUrlParams = function (obj) { + let arr = Object.entries(obj).map(([key, value]) => { + return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; + }); + return arr.join('&'); + }; + + var _fns = { + normalize: normalize, + defaults: defaults, + toUrlParams: toUrlParams + }; + + const { + normalize: normalize$1, + defaults: defaults$1, + toUrlParams: toUrlParams$1 + } = _fns; + const params = { + action: 'query', + rdnamespace: 0, + prop: 'redirects', + rdlimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$1(params); + url += `&titles=${normalize$1(title)}`; + + if (cursor) { + url += '&rdcontinue=' + cursor; + } + + return url; + }; + + const getRedirects = function (doc, http) { + let url = makeUrl(doc.title(), defaults$1); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].redirects || []; + }); + }; + + var getRedirects_1 = getRedirects; + + const { + normalize: normalize$2, + defaults: defaults$2, + toUrlParams: toUrlParams$2 + } = _fns; + const params$1 = { + action: 'query', + lhnamespace: 0, + prop: 'linkshere', + lhshow: '!redirect', + lhlimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$1 = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$2(params$1); + url += `&titles=${normalize$2(title)}`; + + if (cursor) { + url += '&lhcontinue=' + cursor; + } + + return url; + }; + + const getIncoming = function (doc, http) { + let url = makeUrl$1(doc.title(), defaults$2); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].linkshere || []; + }); + }; + + var getIncoming_1 = getIncoming; + + const { + normalize: normalize$3, + defaults: defaults$3, + toUrlParams: toUrlParams$3 + } = _fns; + const params$2 = { + action: 'query', + prop: 'pageviews', + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$2 = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$3(params$2); + url += `&titles=${normalize$3(title)}`; + + if (cursor) { + url += '&rdcontinue=' + cursor; + } + + return url; + }; + + const getPageViews = function (doc, http) { + let url = makeUrl$2(doc.title(), defaults$3); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].pageviews || []; + }); + }; + + var getPageViews_1 = getPageViews; + + const { + normalize: normalize$4, + defaults: defaults$4, + toUrlParams: toUrlParams$4 + } = _fns; + const params$3 = { + action: 'query', + tinamespace: 0, + prop: 'transcludedin', + tilimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$3 = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$4(params$3); + url += `&titles=${normalize$4(title)}`; + + if (cursor) { + url += '&ticontinue=' + cursor; + } + + return url; + }; // fetch all the pages that use a specific template + + + const getTransclusions = function (template, _options, http) { + let url = makeUrl$3(template, defaults$4); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].transcludedin || []; + }); + }; + + var getTransclusions_1 = getTransclusions; + + /* slow 1.1.0 MIT */ + //only do foo promises at a time. + var rateLimit = function rateLimit(arr, fn) { + var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; + return new Promise(function (resolve, reject) { + //some validation + if (!arr || !fn) { + reject('Error: missing required parameters to rate-limit function'); + return; + } + + if (arr.length === 0) { + resolve([]); + return; + } + + var results = []; + var n = limit - 1; + var pending = 0; //simple recursion, but with then/finally + + var go = function go(i) { + pending += 1; + var p = fn(arr[i]); + + if (!p.then) { + reject('Error: function must return a promise'); + return; + } + + p.then(function (r) { + results[i] = r; + }); + p["catch"](function (e) { + console.error(e); + results[i] = null; + }); + p["finally"](function () { + pending -= 1; + n += 1; //should we keep going? + + if (arr.length >= n + 1) { + go(n); + } else if (pending <= 0) { + //no more to start - are we the last to finish? + resolve(results); + } + }); + }; //fire-off first-n items + + + var init = arr.length < limit ? arr.length : limit; + + for (var i = 0; i < init; i += 1) { + go(i); + } + }); + }; + + var rateLimit_1 = rateLimit; + var methods = { + one: function one(arr, fn) { + return rateLimit_1(arr, fn, 1); + }, + two: function two(arr, fn) { + return rateLimit_1(arr, fn, 2); + }, + three: function three(arr, fn) { + return rateLimit_1(arr, fn, 3); + }, + four: function four(arr, fn) { + return rateLimit_1(arr, fn, 4); + }, + five: function five(arr, fn) { + return rateLimit_1(arr, fn, 5); + }, + ten: function ten(arr, fn) { + return rateLimit_1(arr, fn, 10); + }, + fifteen: function fifteen(arr, fn) { + return rateLimit_1(arr, fn, 15); + } + }; + methods.serial = methods.one; + methods.linear = methods.one; + methods.crawl = methods.three; + methods.walk = methods.five; + methods.run = methods.ten; + methods.sprint = methods.fifteen; + var src = methods; + + var slow = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': src + }); + + function getCjsExportFromNamespace (n) { + return n && n['default'] || n; + } + + var slow$1 = getCjsExportFromNamespace(slow); + + const chunkBy = function (arr, chunkSize = 5) { + let groups = []; + + for (let i = 0; i < arr.length; i += chunkSize) { + groups.push(arr.slice(i, i + chunkSize)); + } + + return groups; + }; + + const fetchCat = function (cat, options = {}, wtf) { + if (!cat) { + return { + docs: [], + categories: [] + }; + } + + return wtf.category(cat, options.lang).then(resp => { + let pages = resp.pages.map(o => o.title); + let groups = chunkBy(pages); + + const doit = function (group) { + return wtf.fetch(group, options); //returns a promise + }; //only allow three requests at a time + + + return slow$1.three(groups, doit).then(responses => { + //flatten the results + let docs = [].concat.apply([], responses); + return { + docs: docs, + categories: resp.categories + }; + }); + }); + }; + + var getCategory = fetchCat; + + const { + defaults: defaults$5, + toUrlParams: toUrlParams$5 + } = _fns; + const params$4 = { + format: 'json', + action: 'query', + generator: 'random', + grnnamespace: 14, + prop: 'revisions', + grnlimit: 1, + origin: '*' + }; + + const randomCategory = function (options = {}, http) { + options = Object.assign({}, defaults$5, options); + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$5(params$4); + return http(url).then(res => { + try { + let o = res.query.pages; + let key = Object.keys(o)[0]; + return o[key].title; + } catch (e) { + throw e; + } + }).catch(e => { + console.error(e); + return null; + }); + }; + + var getRandomCategory = randomCategory; + + const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; + + const chunkBy$1 = function (arr, chunkSize = 5) { + let groups = []; + + for (let i = 0; i < arr.length; i += chunkSize) { + groups.push(arr.slice(i, i + chunkSize)); + } + + return groups; + }; + + const fetchList = function (pages, options, wtf) { + // support a list of strings, or objects + if (pages[0] && isObject(pages[0])) { + pages = pages.map(o => o.title); + } // fetch in groups of 5 + + + let groups = chunkBy$1(pages); + + const doit = function (group) { + return wtf.fetch(group, options); //returns a promise + }; //only allow three requests at a time + + + return slow$1.three(groups, doit).then(res => { + // flatten into one list + return res.reduce((arr, a) => { + arr = arr.concat(a); + return arr; + }); + }); + }; + + var fetchList_1 = fetchList; + + const addMethod = function (models) { + // doc methods + models.Doc.prototype.getRedirects = function () { + return getRedirects_1(this, models.http); + }; + + models.Doc.prototype.getIncoming = function () { + return getIncoming_1(this, models.http); + }; + + models.Doc.prototype.getPageViews = function () { + return getPageViews_1(this, models.http); + }; // constructor methods + + + models.wtf.getRandomCategory = function (options) { + return getRandomCategory(options, models.http); + }; + + models.wtf.getTemplatePages = function (template, options) { + return getTransclusions_1(template, options, models.http); + }; + + models.wtf.getCategoryPages = function (category, options) { + return getCategory(category, options, models.wtf); + }; + + models.wtf.fetchList = function (list, options) { + return fetchList_1(list, options, models.wtf); + }; + }; + + var src$1 = addMethod; + + return src$1; + +}))); +//# sourceMappingURL=wtf-plugin-api.js.map diff --git a/plugins/api/builds/wtf-plugin-api.js.map b/plugins/api/builds/wtf-plugin-api.js.map new file mode 100644 index 00000000..48a000f6 --- /dev/null +++ b/plugins/api/builds/wtf-plugin-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"wtf-plugin-api.js","sources":["../src/_fns.js","../src/getRedirects.js","../src/getIncoming.js","../src/getPageViews.js","../src/getTransclusions.js","../node_modules/slow/builds/slow.mjs","../src/getCategory.js","../src/getRandomCategory.js","../src/fetchList.js","../src/index.js"],"sourcesContent":["exports.normalize = function (title = '') {\n title = title.replace(/ /g, '_')\n title = title.trim()\n title = encodeURIComponent(title)\n return title\n}\n\nexports.defaults = {\n lang: 'en',\n path: '/w/api.php'\n}\n\nexports.toUrlParams = function (obj) {\n let arr = Object.entries(obj).map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`\n })\n return arr.join('&')\n}\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n rdnamespace: 0,\n prop: 'redirects',\n rdlimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, cursor) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (cursor) {\n url += '&rdcontinue=' + cursor\n }\n return url\n}\n\nconst getRedirects = function (doc, http) {\n let url = makeUrl(doc.title(), defaults)\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return []\n }\n return res.query.pages[pages[0]].redirects || []\n })\n}\nmodule.exports = getRedirects\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n lhnamespace: 0,\n prop: 'linkshere',\n lhshow: '!redirect',\n lhlimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, cursor) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (cursor) {\n url += '&lhcontinue=' + cursor\n }\n return url\n}\n\nconst getIncoming = function (doc, http) {\n let url = makeUrl(doc.title(), defaults)\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return []\n }\n return res.query.pages[pages[0]].linkshere || []\n })\n}\nmodule.exports = getIncoming\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n prop: 'pageviews',\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, cursor) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (cursor) {\n url += '&rdcontinue=' + cursor\n }\n return url\n}\n\nconst getPageViews = function (doc, http) {\n let url = makeUrl(doc.title(), defaults)\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return []\n }\n return res.query.pages[pages[0]].pageviews || []\n })\n}\nmodule.exports = getPageViews\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n tinamespace: 0,\n prop: 'transcludedin',\n tilimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, cursor) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (cursor) {\n url += '&ticontinue=' + cursor\n }\n return url\n}\n\n// fetch all the pages that use a specific template\nconst getTransclusions = function (template, _options, http) {\n let url = makeUrl(template, defaults)\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return []\n }\n return res.query.pages[pages[0]].transcludedin || []\n })\n}\nmodule.exports = getTransclusions\n","/* slow 1.1.0 MIT */\n//only do foo promises at a time.\nvar rateLimit = function rateLimit(arr, fn) {\n var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n return new Promise(function (resolve, reject) {\n //some validation\n if (!arr || !fn) {\n reject('Error: missing required parameters to rate-limit function');\n return;\n }\n\n if (arr.length === 0) {\n resolve([]);\n return;\n }\n\n var results = [];\n var n = limit - 1;\n var pending = 0; //simple recursion, but with then/finally\n\n var go = function go(i) {\n pending += 1;\n var p = fn(arr[i]);\n\n if (!p.then) {\n reject('Error: function must return a promise');\n return;\n }\n\n p.then(function (r) {\n results[i] = r;\n });\n p[\"catch\"](function (e) {\n console.error(e);\n results[i] = null;\n });\n p[\"finally\"](function () {\n pending -= 1;\n n += 1; //should we keep going?\n\n if (arr.length >= n + 1) {\n go(n);\n } else if (pending <= 0) {\n //no more to start - are we the last to finish?\n resolve(results);\n }\n });\n }; //fire-off first-n items\n\n\n var init = arr.length < limit ? arr.length : limit;\n\n for (var i = 0; i < init; i += 1) {\n go(i);\n }\n });\n};\n\nvar rateLimit_1 = rateLimit;\n\nvar methods = {\n one: function one(arr, fn) {\n return rateLimit_1(arr, fn, 1);\n },\n two: function two(arr, fn) {\n return rateLimit_1(arr, fn, 2);\n },\n three: function three(arr, fn) {\n return rateLimit_1(arr, fn, 3);\n },\n four: function four(arr, fn) {\n return rateLimit_1(arr, fn, 4);\n },\n five: function five(arr, fn) {\n return rateLimit_1(arr, fn, 5);\n },\n ten: function ten(arr, fn) {\n return rateLimit_1(arr, fn, 10);\n },\n fifteen: function fifteen(arr, fn) {\n return rateLimit_1(arr, fn, 15);\n }\n};\nmethods.serial = methods.one;\nmethods.linear = methods.one;\nmethods.crawl = methods.three;\nmethods.walk = methods.five;\nmethods.run = methods.ten;\nmethods.sprint = methods.fifteen;\nvar src = methods;\n\nexport default src;\n","const slow = require('slow')\n\nconst chunkBy = function (arr, chunkSize = 5) {\n let groups = []\n for (let i = 0; i < arr.length; i += chunkSize) {\n groups.push(arr.slice(i, i + chunkSize))\n }\n return groups\n}\n\nconst fetchCat = function (cat, options = {}, wtf) {\n if (!cat) {\n return { docs: [], categories: [] }\n }\n return wtf.category(cat, options.lang).then((resp) => {\n let pages = resp.pages.map((o) => o.title)\n let groups = chunkBy(pages)\n\n const doit = function (group) {\n return wtf.fetch(group, options) //returns a promise\n }\n //only allow three requests at a time\n return slow.three(groups, doit).then((responses) => {\n //flatten the results\n let docs = [].concat.apply([], responses)\n return {\n docs: docs,\n categories: resp.categories\n }\n })\n })\n}\n\nmodule.exports = fetchCat\n","const { defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n format: 'json',\n action: 'query',\n generator: 'random',\n grnnamespace: 14,\n prop: 'revisions',\n grnlimit: 1,\n origin: '*'\n}\n\nconst randomCategory = function (options = {}, http) {\n options = Object.assign({}, defaults, options)\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n return http(url)\n .then((res) => {\n try {\n let o = res.query.pages\n let key = Object.keys(o)[0]\n return o[key].title\n } catch (e) {\n throw e\n }\n })\n .catch((e) => {\n console.error(e)\n return null\n })\n}\nmodule.exports = randomCategory\n","const slow = require('slow')\nconst isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\n}\n\nconst chunkBy = function (arr, chunkSize = 5) {\n let groups = []\n for (let i = 0; i < arr.length; i += chunkSize) {\n groups.push(arr.slice(i, i + chunkSize))\n }\n return groups\n}\n\nconst fetchList = function (pages, options, wtf) {\n // support a list of strings, or objects\n if (pages[0] && isObject(pages[0])) {\n pages = pages.map((o) => o.title)\n }\n // fetch in groups of 5\n let groups = chunkBy(pages)\n\n const doit = function (group) {\n return wtf.fetch(group, options) //returns a promise\n }\n //only allow three requests at a time\n return slow.three(groups, doit).then((res) => {\n // flatten into one list\n return res.reduce((arr, a) => {\n arr = arr.concat(a)\n return arr\n })\n })\n}\nmodule.exports = fetchList\n","const getRedirects = require('./getRedirects')\nconst getIncoming = require('./getIncoming')\nconst getPageViews = require('./getPageViews')\nconst getTransclusions = require('./getTransclusions')\nconst getCategory = require('./getCategory')\nconst getRandomCategory = require('./getRandomCategory')\nconst fetchList = require('./fetchList')\n\nconst addMethod = function (models) {\n // doc methods\n models.Doc.prototype.getRedirects = function () {\n return getRedirects(this, models.http)\n }\n models.Doc.prototype.getIncoming = function () {\n return getIncoming(this, models.http)\n }\n models.Doc.prototype.getPageViews = function () {\n return getPageViews(this, models.http)\n }\n\n // constructor methods\n models.wtf.getRandomCategory = function (options) {\n return getRandomCategory(options, models.http)\n }\n models.wtf.getTemplatePages = function (template, options) {\n return getTransclusions(template, options, models.http)\n }\n models.wtf.getCategoryPages = function (category, options) {\n return getCategory(category, options, models.wtf)\n }\n models.wtf.fetchList = function (list, options) {\n return fetchList(list, options, models.wtf)\n }\n}\nmodule.exports = addMethod\n"],"names":["title","replace","trim","encodeURIComponent","lang","path","obj","arr","Object","entries","map","key","value","join","normalize","defaults","toUrlParams","require$$0","params","action","rdnamespace","prop","rdlimit","format","origin","redirects","makeUrl","options","cursor","url","domain","getRedirects","doc","http","then","res","pages","keys","query","length","lhnamespace","lhshow","lhlimit","getIncoming","linkshere","getPageViews","pageviews","tinamespace","tilimit","getTransclusions","template","_options","transcludedin","rateLimit","fn","limit","arguments","undefined","Promise","resolve","reject","results","n","pending","go","i","p","r","e","console","error","init","rateLimit_1","methods","one","two","three","four","five","ten","fifteen","serial","linear","crawl","walk","run","sprint","src","chunkBy","chunkSize","groups","push","slice","fetchCat","cat","wtf","docs","categories","category","resp","o","doit","group","fetch","slow","responses","concat","apply","generator","grnnamespace","grnlimit","randomCategory","assign","catch","isObject","prototype","toString","call","fetchList","reduce","a","addMethod","models","Doc","getRandomCategory","getTemplatePages","getCategoryPages","getCategory","list"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/api/builds/wtf-plugin-api.min.js b/plugins/api/builds/wtf-plugin-api.min.js new file mode 100644 index 00000000..8b3e1290 --- /dev/null +++ b/plugins/api/builds/wtf-plugin-api.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).wtfImage=e()}(this,(function(){"use strict";var t={normalize:function(t=""){return t=(t=t.replace(/ /g,"_")).trim(),t=encodeURIComponent(t)},defaults:{lang:"en",path:"/w/api.php"},toUrlParams:function(t){return Object.entries(t).map(([t,e])=>`${encodeURIComponent(t)}=${encodeURIComponent(e)}`).join("&")}};const{normalize:e,defaults:n,toUrlParams:r}=t,o={action:"query",rdnamespace:0,prop:"redirects",rdlimit:500,format:"json",origin:"*",redirects:!0};var i=function(t,i){return i(function(t,n,i){let a=`https://${n.lang}.wikipedia.org/${n.path}?`;return n.domain&&(a=`https://${n.domain}/${n.path}?`),a+=r(o),a+="&titles="+e(t),i&&(a+="&rdcontinue="+i),a}(t.title(),n)).then(t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?[]:t.query.pages[e[0]].redirects||[]})};const{normalize:a,defaults:u,toUrlParams:c}=t,s={action:"query",lhnamespace:0,prop:"linkshere",lhshow:"!redirect",lhlimit:500,format:"json",origin:"*",redirects:!0};var l=function(t,e){return e(function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=c(s),r+="&titles="+a(t),n&&(r+="&lhcontinue="+n),r}(t.title(),u)).then(t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?[]:t.query.pages[e[0]].linkshere||[]})};const{normalize:p,defaults:f,toUrlParams:h}=t,g={action:"query",prop:"pageviews",format:"json",origin:"*",redirects:!0};var d=function(t,e){return e(function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=h(g),r+="&titles="+p(t),n&&(r+="&rdcontinue="+n),r}(t.title(),f)).then(t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?[]:t.query.pages[e[0]].pageviews||[]})};const{normalize:m,defaults:y,toUrlParams:w}=t,$={action:"query",tinamespace:0,prop:"transcludedin",tilimit:500,format:"json",origin:"*",redirects:!0};var v=function(t,e,n){return n(function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=w($),r+="&titles="+m(t),n&&(r+="&ticontinue="+n),r}(t,y)).then(t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?[]:t.query.pages[e[0]].transcludedin||[]})},j=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;return new Promise((function(r,o){if(t&&e)if(0!==t.length)for(var i=[],a=n-1,u=0,c=function n(c){u+=1;var s=e(t[c]);s.then?(s.then((function(t){i[c]=t})),s.catch((function(t){console.error(t),i[c]=null})),s.finally((function(){u-=1,a+=1,t.length>=a+1?n(a):u<=0&&r(i)}))):o("Error: function must return a promise")},s=t.length{let r=function(t,e=5){let n=[];for(let r=0;rt.title));return O.three(r,(function(t){return n.fetch(t,e)})).then(e=>({docs:[].concat.apply([],e),categories:t.categories}))}):{docs:[],categories:[]}};const{defaults:U,toUrlParams:z}=t,C={format:"json",action:"query",generator:"random",grnnamespace:14,prop:"revisions",grnlimit:1,origin:"*"};var I=function(t={},e){let n=`https://${(t=Object.assign({},U,t)).lang}.wikipedia.org/${t.path}?`;return t.domain&&(n=`https://${t.domain}/${t.path}?`),n+=z(C),e(n).then(t=>{try{let e=t.query.pages;return e[Object.keys(e)[0]].title}catch(t){throw t}}).catch(t=>(console.error(t),null))};var R=function(t,e,n){var r;t[0]&&((r=t[0])&&"[object Object]"===Object.prototype.toString.call(r))&&(t=t.map(t=>t.title));let o=function(t,e=5){let n=[];for(let r=0;rt.reduce((t,e)=>t=t.concat(e)))};return function(t){t.Doc.prototype.getRedirects=function(){return i(this,t.http)},t.Doc.prototype.getIncoming=function(){return l(this,t.http)},t.Doc.prototype.getPageViews=function(){return d(this,t.http)},t.wtf.getRandomCategory=function(e){return I(e,t.http)},t.wtf.getTemplatePages=function(e,n){return v(e,n,t.http)},t.wtf.getCategoryPages=function(e,n){return P(e,n,t.wtf)},t.wtf.fetchList=function(e,n){return R(e,n,t.wtf)}}})); diff --git a/plugins/api/builds/wtf-plugin-api.mjs b/plugins/api/builds/wtf-plugin-api.mjs new file mode 100644 index 00000000..6c22d10d --- /dev/null +++ b/plugins/api/builds/wtf-plugin-api.mjs @@ -0,0 +1,468 @@ +/* wtf-plugin-api 0.0.1 MIT */ +var normalize = function (title = '') { + title = title.replace(/ /g, '_'); + title = title.trim(); + title = encodeURIComponent(title); + return title; +}; + +var defaults = { + lang: 'en', + path: '/w/api.php' +}; + +var toUrlParams = function (obj) { + let arr = Object.entries(obj).map(([key, value]) => { + return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; + }); + return arr.join('&'); +}; + +var _fns = { + normalize: normalize, + defaults: defaults, + toUrlParams: toUrlParams +}; + +const { + normalize: normalize$1, + defaults: defaults$1, + toUrlParams: toUrlParams$1 +} = _fns; +const params = { + action: 'query', + rdnamespace: 0, + prop: 'redirects', + rdlimit: 500, + format: 'json', + origin: '*', + redirects: true +}; + +const makeUrl = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$1(params); + url += `&titles=${normalize$1(title)}`; + + if (cursor) { + url += '&rdcontinue=' + cursor; + } + + return url; +}; + +const getRedirects = function (doc, http) { + let url = makeUrl(doc.title(), defaults$1); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].redirects || []; + }); +}; + +var getRedirects_1 = getRedirects; + +const { + normalize: normalize$2, + defaults: defaults$2, + toUrlParams: toUrlParams$2 +} = _fns; +const params$1 = { + action: 'query', + lhnamespace: 0, + prop: 'linkshere', + lhshow: '!redirect', + lhlimit: 500, + format: 'json', + origin: '*', + redirects: true +}; + +const makeUrl$1 = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$2(params$1); + url += `&titles=${normalize$2(title)}`; + + if (cursor) { + url += '&lhcontinue=' + cursor; + } + + return url; +}; + +const getIncoming = function (doc, http) { + let url = makeUrl$1(doc.title(), defaults$2); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].linkshere || []; + }); +}; + +var getIncoming_1 = getIncoming; + +const { + normalize: normalize$3, + defaults: defaults$3, + toUrlParams: toUrlParams$3 +} = _fns; +const params$2 = { + action: 'query', + prop: 'pageviews', + format: 'json', + origin: '*', + redirects: true +}; + +const makeUrl$2 = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$3(params$2); + url += `&titles=${normalize$3(title)}`; + + if (cursor) { + url += '&rdcontinue=' + cursor; + } + + return url; +}; + +const getPageViews = function (doc, http) { + let url = makeUrl$2(doc.title(), defaults$3); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].pageviews || []; + }); +}; + +var getPageViews_1 = getPageViews; + +const { + normalize: normalize$4, + defaults: defaults$4, + toUrlParams: toUrlParams$4 +} = _fns; +const params$3 = { + action: 'query', + tinamespace: 0, + prop: 'transcludedin', + tilimit: 500, + format: 'json', + origin: '*', + redirects: true +}; + +const makeUrl$3 = function (title, options, cursor) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$4(params$3); + url += `&titles=${normalize$4(title)}`; + + if (cursor) { + url += '&ticontinue=' + cursor; + } + + return url; +}; // fetch all the pages that use a specific template + + +const getTransclusions = function (template, _options, http) { + let url = makeUrl$3(template, defaults$4); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].transcludedin || []; + }); +}; + +var getTransclusions_1 = getTransclusions; + +/* slow 1.1.0 MIT */ +//only do foo promises at a time. +var rateLimit = function rateLimit(arr, fn) { + var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; + return new Promise(function (resolve, reject) { + //some validation + if (!arr || !fn) { + reject('Error: missing required parameters to rate-limit function'); + return; + } + + if (arr.length === 0) { + resolve([]); + return; + } + + var results = []; + var n = limit - 1; + var pending = 0; //simple recursion, but with then/finally + + var go = function go(i) { + pending += 1; + var p = fn(arr[i]); + + if (!p.then) { + reject('Error: function must return a promise'); + return; + } + + p.then(function (r) { + results[i] = r; + }); + p["catch"](function (e) { + console.error(e); + results[i] = null; + }); + p["finally"](function () { + pending -= 1; + n += 1; //should we keep going? + + if (arr.length >= n + 1) { + go(n); + } else if (pending <= 0) { + //no more to start - are we the last to finish? + resolve(results); + } + }); + }; //fire-off first-n items + + + var init = arr.length < limit ? arr.length : limit; + + for (var i = 0; i < init; i += 1) { + go(i); + } + }); +}; + +var rateLimit_1 = rateLimit; +var methods = { + one: function one(arr, fn) { + return rateLimit_1(arr, fn, 1); + }, + two: function two(arr, fn) { + return rateLimit_1(arr, fn, 2); + }, + three: function three(arr, fn) { + return rateLimit_1(arr, fn, 3); + }, + four: function four(arr, fn) { + return rateLimit_1(arr, fn, 4); + }, + five: function five(arr, fn) { + return rateLimit_1(arr, fn, 5); + }, + ten: function ten(arr, fn) { + return rateLimit_1(arr, fn, 10); + }, + fifteen: function fifteen(arr, fn) { + return rateLimit_1(arr, fn, 15); + } +}; +methods.serial = methods.one; +methods.linear = methods.one; +methods.crawl = methods.three; +methods.walk = methods.five; +methods.run = methods.ten; +methods.sprint = methods.fifteen; +var src = methods; + +var slow = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': src +}); + +function getCjsExportFromNamespace (n) { + return n && n['default'] || n; +} + +var slow$1 = getCjsExportFromNamespace(slow); + +const chunkBy = function (arr, chunkSize = 5) { + let groups = []; + + for (let i = 0; i < arr.length; i += chunkSize) { + groups.push(arr.slice(i, i + chunkSize)); + } + + return groups; +}; + +const fetchCat = function (cat, options = {}, wtf) { + if (!cat) { + return { + docs: [], + categories: [] + }; + } + + return wtf.category(cat, options.lang).then(resp => { + let pages = resp.pages.map(o => o.title); + let groups = chunkBy(pages); + + const doit = function (group) { + return wtf.fetch(group, options); //returns a promise + }; //only allow three requests at a time + + + return slow$1.three(groups, doit).then(responses => { + //flatten the results + let docs = [].concat.apply([], responses); + return { + docs: docs, + categories: resp.categories + }; + }); + }); +}; + +var getCategory = fetchCat; + +const { + defaults: defaults$5, + toUrlParams: toUrlParams$5 +} = _fns; +const params$4 = { + format: 'json', + action: 'query', + generator: 'random', + grnnamespace: 14, + prop: 'revisions', + grnlimit: 1, + origin: '*' +}; + +const randomCategory = function (options = {}, http) { + options = Object.assign({}, defaults$5, options); + let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + + if (options.domain) { + url = `https://${options.domain}/${options.path}?`; + } + + url += toUrlParams$5(params$4); + return http(url).then(res => { + try { + let o = res.query.pages; + let key = Object.keys(o)[0]; + return o[key].title; + } catch (e) { + throw e; + } + }).catch(e => { + console.error(e); + return null; + }); +}; + +var getRandomCategory = randomCategory; + +const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; +}; + +const chunkBy$1 = function (arr, chunkSize = 5) { + let groups = []; + + for (let i = 0; i < arr.length; i += chunkSize) { + groups.push(arr.slice(i, i + chunkSize)); + } + + return groups; +}; + +const fetchList = function (pages, options, wtf) { + // support a list of strings, or objects + if (pages[0] && isObject(pages[0])) { + pages = pages.map(o => o.title); + } // fetch in groups of 5 + + + let groups = chunkBy$1(pages); + + const doit = function (group) { + return wtf.fetch(group, options); //returns a promise + }; //only allow three requests at a time + + + return slow$1.three(groups, doit).then(res => { + // flatten into one list + return res.reduce((arr, a) => { + arr = arr.concat(a); + return arr; + }); + }); +}; + +var fetchList_1 = fetchList; + +const addMethod = function (models) { + // doc methods + models.Doc.prototype.getRedirects = function () { + return getRedirects_1(this, models.http); + }; + + models.Doc.prototype.getIncoming = function () { + return getIncoming_1(this, models.http); + }; + + models.Doc.prototype.getPageViews = function () { + return getPageViews_1(this, models.http); + }; // constructor methods + + + models.wtf.getRandomCategory = function (options) { + return getRandomCategory(options, models.http); + }; + + models.wtf.getTemplatePages = function (template, options) { + return getTransclusions_1(template, options, models.http); + }; + + models.wtf.getCategoryPages = function (category, options) { + return getCategory(category, options, models.wtf); + }; + + models.wtf.fetchList = function (list, options) { + return fetchList_1(list, options, models.wtf); + }; +}; + +var src$1 = addMethod; + +export default src$1; diff --git a/plugins/api/package-lock.json b/plugins/api/package-lock.json index 5295ff4a..ada8b584 100644 --- a/plugins/api/package-lock.json +++ b/plugins/api/package-lock.json @@ -4,10 +4,2296 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.1.tgz", + "integrity": "sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==", + "dev": true + }, + "@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", + "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz", + "integrity": "sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.12.0", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", + "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", + "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", + "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", + "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", + "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.1", + "@babel/types": "^7.12.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@types/estree": { + "version": "0.0.45", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", + "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "dev": true + }, + "@types/node": { + "version": "14.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz", + "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", + "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001135", + "electron-to-chromium": "^1.3.571", + "escalade": "^3.1.0", + "node-releases": "^1.1.61" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001153", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001153.tgz", + "integrity": "sha512-qv14w7kWwm2IW7DBvAKWlCqGTmV2XxNtSejJBVplwRjhkohHuhRUpeSlPjtu9erru0+A12zCDUiSmvx/AcqVRA==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": 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=", + "dev": true + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-equal": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "electron-to-chromium": { + "version": "1.3.584", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.584.tgz", + "integrity": "sha512-NB3DzrTzJFhWkUp+nl2KtUtoFzrfGXTir2S+BU4tXGyXH9vlluPuFpE3pTKeH7+PY460tHLjKzh6K2+TWwW+Ww==", + "dev": true + }, + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "dev": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-core-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", + "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "jest-worker": { + "version": "26.6.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.1.tgz", + "integrity": "sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node-releases": { + "version": "1.1.64", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.64.tgz", + "integrity": "sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg==", + "dev": true + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-is": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "re-emitter": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", + "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "dev": true + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "dev": true, + "requires": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + } + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "requires": { + "through": "~2.3.4" + } + }, + "rollup": { + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz", + "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==", + "dev": true, + "requires": { + "fsevents": "~2.1.2" + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-commonjs": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", + "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-filesize-check": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize-check/-/rollup-plugin-filesize-check-0.0.1.tgz", + "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", + "dev": true + }, + "rollup-plugin-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", + "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.5.0" + } + }, + "rollup-plugin-node-resolve": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", + "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", + "dev": true, + "requires": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } + }, "slow": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/slow/-/slow-1.1.0.tgz", "integrity": "sha512-NEPfKulZIDhCsEccS23VXE7nfhBhAAPMcYmbry3YZTk50buXGLNm1vsfeIWy+EdOyU/fk+6usnf1zCxPCNJ4Rg==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "requires": { + "through": "2" + } + }, + "string.prototype.trim": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tap-dancer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.0.tgz", + "integrity": "sha512-ivZ+x++JKBbMQP5Jp7xfT21HsGJ+AeNMV4grlREyowcgDilFiY7b+nmDwffA+iagItqth3W+9UW4DBHsak3P8Q==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "tap-out": "3.0.0" + } + }, + "tap-out": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", + "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "dev": true, + "requires": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + } + }, + "tape": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + } + }, + "terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true } } } diff --git a/plugins/api/package.json b/plugins/api/package.json index e455aa32..ffe4b486 100644 --- a/plugins/api/package.json +++ b/plugins/api/package.json @@ -34,17 +34,17 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "rollup": "2.32.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "4.0.0", "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "0.2.0", - "tape": "4.13.2" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.0", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/api/rollup.config.js b/plugins/api/rollup.config.js index 3dd09db4..ba56fba6 100644 --- a/plugins/api/rollup.config.js +++ b/plugins/api/rollup.config.js @@ -7,7 +7,7 @@ import nodeResolve from 'rollup-plugin-node-resolve' import { version } from './package.json' console.log('\n 📦 - running rollup..\n') -const name = 'wtf-plugin-image' +const name = 'wtf-plugin-api' const banner = `/* ${name} ${version} MIT */` export default [ // === es-module === diff --git a/plugins/api/tests/fns.test.js b/plugins/api/tests/fns.test.js index c21eda5f..761b2c53 100644 --- a/plugins/api/tests/fns.test.js +++ b/plugins/api/tests/fns.test.js @@ -7,29 +7,29 @@ const opts = { test('smoketests', function (t) { let doc = wtf('') - t.equal(typeof doc.redirects, 'function', 'has redirect method') - t.equal(typeof doc.incomingLinks, 'function', 'has incomingLinks method') - t.equal(typeof doc.pageViews, 'function', 'has pageViews method') + t.equal(typeof doc.getRedirects, 'function', 'has getRedirects method') + t.equal(typeof doc.getIncoming, 'function', 'has getIncoming method') + t.equal(typeof doc.getPageViews, 'function', 'has getPageViews method') t.end() }) -test('pageViews', (t) => { +test('getPageViews', (t) => { t.plan(1) let doc = wtf('') doc.title('Toronto Raptors') doc.lang('en') - doc.pageViews(opts).then(function (byDate) { + doc.getPageViews(opts).then(function (byDate) { let dates = Object.keys(byDate) t.ok(dates.length > 5, `got pageViews for ${dates.length} days`) }) }) -test('redirects', (t) => { +test('getRedirects', (t) => { t.plan(1) let doc = wtf('') doc.title('Toronto Raptors') doc.lang('en') - doc.redirects(opts).then(function (links) { + doc.getRedirects(opts).then(function (links) { t.ok(links.length > 3, `got ${links.length} redirects for Toronto Raptors`) }) }) @@ -39,7 +39,7 @@ test('incomingLinks', (t) => { let doc = wtf('') doc.title('Marty Embry') doc.lang('en') - doc.incomingLinks(opts).then(function (links) { + doc.getIncoming(opts).then(function (links) { t.ok(links.length > 3, `got ${links.length} links for Marty Embry`) }) }) diff --git a/scratch.js b/scratch.js index 253eacf8..07c046f7 100644 --- a/scratch.js +++ b/scratch.js @@ -5,25 +5,6 @@ wtf.extend(require('./plugins/api/src')) // var str = `[[Image:Levellers declaration and standard.gif|thumb|Woodcut from a [[Diggers]] document by [[William Everard (Digger)|William Everard]]]]` // console.log(wtf(str).json()) -// wtf.fetch('Toronto Raptors', 'en').then((doc) => { -// doc.pageViews().then((res) => { -// console.log(res) -// console.log('done') -// }) -// // console.log(doc.lang()) -// // console.log(doc.images().map((j) => j.url())) -// }) - -// wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then((pages) => { -// wtf.fetchList(pages).then((docs) => { -// docs.forEach((doc) => console.log(doc.sentences(0).text())) -// }) -// }) - -// wtf.getCategoryPages('Category:Swiss skeleton racers').then(function (list) { -// console.log(list) -// }) - wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then(function (pages) { wtf.fetchList(pages).then((docs) => { docs.forEach((doc) => { From 7c4299adba202de350166299a5f7005ff4e950f7 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Fri, 30 Oct 2020 12:36:31 -0400 Subject: [PATCH 019/117] reformat tests for novar --- README.md | 4 +- plugins/category/tests/misc.test.js | 4 +- plugins/html/tests/html.test.js | 12 +- plugins/html/tests/interwiki.test.js | 8 +- plugins/html/tests/stress.test.js | 14 +- plugins/html/tests/table.test.js | 18 +- plugins/i18n/tests/misc.test.js | 14 +- plugins/latex/tests/stress.test.js | 14 +- plugins/markdown/tests/markdown.test.js | 12 +- plugins/markdown/tests/stress.test.js | 14 +- plugins/markdown/tests/table.test.js | 18 +- plugins/person/tests/birthDate.test.js | 4 +- plugins/person/tests/isAlive.test.js | 4 +- plugins/wikitext/tests/misc.test.js | 6 +- plugins/wikitext/tests/stress.test.js | 14 +- plugins/wikitext/tests/table.test.js | 14 +- scratch.js | 1 - src/_version.js | 2 +- tests/Document.test.js | 1341 +++++++++++++++-------- tests/Section.test.js | 146 ++- tests/api.test.js | 118 +- tests/comments.test.js | 10 +- tests/coord.test.js | 30 +- tests/currencies.test.js | 8 +- tests/date.test.js | 40 +- tests/domain.test.js | 4 +- tests/encoding.test.js | 16 +- tests/extend.test.js | 14 +- tests/fmt.test.js | 28 +- tests/html.test.js | 4 +- tests/i18n.test.js | 30 +- tests/images.test.js | 20 +- tests/infobox.test.js | 28 +- tests/interwiki.test.js | 12 +- tests/json.test.js | 34 +- tests/links.test.js | 18 +- tests/lists.test.js | 44 +- tests/math.test.js | 20 +- tests/misc.test.js | 38 +- tests/more-templates.test.js | 72 +- tests/nesting.test.js | 22 +- tests/options.test.js | 30 +- tests/page.test.js | 47 +- tests/paragraphs.test.js | 38 +- tests/redirect.test.js | 38 +- tests/reference.test.js | 62 +- tests/sections.test.js | 16 +- tests/sentences.test.js | 26 +- tests/start-end.test.js | 28 +- tests/stockexchange.test.js | 117 +- tests/stress.test.js | 38 +- tests/table-span.test.js | 10 +- tests/table.test.js | 54 +- tests/template.test.js | 76 +- tests/templates-data.test.js | 30 +- tests/templates-inline.test.js | 26 +- tests/text.test.js | 12 +- tests/tracklist.test.js | 20 +- tests/traverse.test.js | 10 +- tests/unit.test.js | 32 +- tests/xml.test.js | 22 +- 61 files changed, 1766 insertions(+), 1240 deletions(-) diff --git a/README.md b/README.md index 54ebc378..a5e19904 100644 --- a/README.md +++ b/README.md @@ -220,7 +220,7 @@ wtf.fetch('Ziggy Stardust', 'fr').then((doc) => { | [classify](./plugins/classify) | person/place/thing | | [summary](./plugins/summary) | short description text | | [person](./plugins/person) | birth/death information | -| [category](./plugins/category) | parse all articles in a category | +| [api](./plugins/api) | fetch more data from the API | | [i18n](./plugins/i18n) | improves multilingual template coverage | | [wtf-mlb](https://github.com/spencermountain/wtf-mlb) | fetch baseball data | | [wtf-nhl](https://github.com/spencermountain/wtf-nhl) | fetch hockey data | @@ -431,7 +431,7 @@ let result = await wtf.category('Category:Politicians_from_Paris') //} ``` -to fetch and parse all pages in a category, in an optimized way, see [wtf-plugin-category](./plugins/category) +to fetch and parse all pages in a category, in an optimized way, see [wtf-plugin-api](./plugins/api) ### fetch random article: diff --git a/plugins/category/tests/misc.test.js b/plugins/category/tests/misc.test.js index 2175107e..d4f3b34c 100644 --- a/plugins/category/tests/misc.test.js +++ b/plugins/category/tests/misc.test.js @@ -1,5 +1,5 @@ -var test = require('tape') -var wtf = require('./_lib') +const test = require('tape') +const wtf = require('./_lib') // this seems too much network traffic to run each test test('ensure functions are there', function (t) { diff --git a/plugins/html/tests/html.test.js b/plugins/html/tests/html.test.js index 18ad7654..f3390826 100644 --- a/plugins/html/tests/html.test.js +++ b/plugins/html/tests/html.test.js @@ -1,15 +1,15 @@ -var test = require('tape') -var wtf = require('./_lib') -var tidy = str => { +const test = require('tape') +const wtf = require('./_lib') +const tidy = (str) => { str = str.replace(/\s[\s]+/g, ' ') str = str.replace(/\n/g, '') str = str.replace(/ >/g, '>') return str } -test('basic-html', t => { - var have = wtf('that cat is [[a]] cool dude').html() - var want = ` +test('basic-html', (t) => { + let have = wtf('that cat is [[a]] cool dude').html() + let want = `

diff --git a/plugins/html/tests/interwiki.test.js b/plugins/html/tests/interwiki.test.js index 422f64cb..1ee7c99c 100644 --- a/plugins/html/tests/interwiki.test.js +++ b/plugins/html/tests/interwiki.test.js @@ -1,7 +1,7 @@ -var test = require('tape') -var wtf = require('./_lib') +const test = require('tape') +const wtf = require('./_lib') -test('expand external interwiki link', t => { +test('expand external interwiki link', (t) => { let str = `[[heroeswiki:cool]]` let doc = wtf(str) let html = doc.link().html() @@ -14,7 +14,7 @@ test('expand external interwiki link', t => { t.end() }) -test('expand internal interwiki link', t => { +test('expand internal interwiki link', (t) => { let str = `[[fr:cool]]` let doc = wtf(str) diff --git a/plugins/html/tests/stress.test.js b/plugins/html/tests/stress.test.js index 5550c82f..75877607 100644 --- a/plugins/html/tests/stress.test.js +++ b/plugins/html/tests/stress.test.js @@ -1,17 +1,17 @@ -var test = require('tape') -var wtf = require('./_lib') -var fs = require('fs') -var path = require('path') +const test = require('tape') +const wtf = require('./_lib') +const fs = require('fs') +const path = require('path') function from_file(page) { - var file = '../../../tests/cache/' + page + '.txt' + let file = '../../../tests/cache/' + page + '.txt' file = path.join(__dirname, file) - var str = fs.readFileSync(file, 'utf-8') + const str = fs.readFileSync(file, 'utf-8') return wtf(str) } module.exports = from_file -var pages = [ +const pages = [ '2008-British-motorcycle-Grand-Prix', 'AACTA-Award-for-Outstanding-Achievement-in-Short-Film-Screen-Craft', 'Alanine—oxo-acid-transaminase', diff --git a/plugins/html/tests/table.test.js b/plugins/html/tests/table.test.js index 6afb3e6d..8f2f5c35 100644 --- a/plugins/html/tests/table.test.js +++ b/plugins/html/tests/table.test.js @@ -1,6 +1,6 @@ -var test = require('tape') -var wtf = require('./_lib') -var tidy = (str) => { +const test = require('tape') +const wtf = require('./_lib') +const tidy = (str) => { str = str.replace(/\s[\s]+/g, ' ') str = str.replace(/\n/g, '') str = str.replace(/ >/g, '>') @@ -8,7 +8,7 @@ var tidy = (str) => { } test('table-header', (t) => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- ! Header 1 ! Header 2 @@ -23,8 +23,8 @@ test('table-header', (t) => { | row 2, cell 3 |}` - var have = wtf(str).table().html() - var want = ` + const have = wtf(str).table().html() + const want = ` @@ -53,7 +53,7 @@ test('table-header', (t) => { }) test('no-header', (t) => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- | row 1, cell 1 | row 1, cell 2 @@ -62,8 +62,8 @@ test('no-header', (t) => { | row 2, cell 2 |}` - var have = wtf(str).table().html() - var want = ` + const have = wtf(str).table().html() + const want = `
diff --git a/plugins/i18n/tests/misc.test.js b/plugins/i18n/tests/misc.test.js index 821f9d89..1d8b022f 100644 --- a/plugins/i18n/tests/misc.test.js +++ b/plugins/i18n/tests/misc.test.js @@ -1,7 +1,7 @@ -var test = require('tape') -var wtf = require('./_lib') +const test = require('tape') +const wtf = require('./_lib') -test('flag', t => { +test('flag', (t) => { let str = ` {{bendera|USA}}` let doc = wtf(str) t.equal(doc.templates().length, 0, 'no templates') @@ -9,7 +9,7 @@ test('flag', t => { t.end() }) -test('main', t => { +test('main', (t) => { let str = ` {{hlavný článok|USA}}` let doc = wtf(str) let templates = doc.templates() @@ -18,7 +18,7 @@ test('main', t => { t.end() }) -test('start date', t => { +test('start date', (t) => { let strA = `{{start date|1993|02|24}}` let strB = `{{početni datum|1993|02|24}}` let docA = wtf(strA) @@ -28,7 +28,7 @@ test('start date', t => { t.end() }) -test('persondata', t => { +test('persondata', (t) => { let str = `{{personendaten|Full_name=c00l}}` let doc = wtf(str) let templates = doc.templates() @@ -38,7 +38,7 @@ test('persondata', t => { t.end() }) -test('citation', t => { +test('citation', (t) => { let str = ` {{Cita libru |url=cool.com |title= |last= |first= |date= |website= |publisher= |access-date= |quote=}} ` let doc = wtf(str) diff --git a/plugins/latex/tests/stress.test.js b/plugins/latex/tests/stress.test.js index 56fe1d02..a2dfec80 100644 --- a/plugins/latex/tests/stress.test.js +++ b/plugins/latex/tests/stress.test.js @@ -1,17 +1,17 @@ -var test = require('tape') -var wtf = require('./_lib') -var fs = require('fs') -var path = require('path') +const test = require('tape') +const wtf = require('./_lib') +const fs = require('fs') +const path = require('path') function from_file(page) { - var file = '../../../tests/cache/' + page + '.txt' + let file = '../../../tests/cache/' + page + '.txt' file = path.join(__dirname, file) - var str = fs.readFileSync(file, 'utf-8') + const str = fs.readFileSync(file, 'utf-8') return wtf(str) } module.exports = from_file -var pages = [ +const pages = [ '2008-British-motorcycle-Grand-Prix', 'AACTA-Award-for-Outstanding-Achievement-in-Short-Film-Screen-Craft', 'Alanine—oxo-acid-transaminase', diff --git a/plugins/markdown/tests/markdown.test.js b/plugins/markdown/tests/markdown.test.js index 08897c25..01f11b69 100644 --- a/plugins/markdown/tests/markdown.test.js +++ b/plugins/markdown/tests/markdown.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./_lib') +const test = require('tape') +const wtf = require('./_lib') -test('basic-markdown', t => { - var md = wtf('he is [[Spencer Kelly|so cool]] and [http://cool.com fresh]').markdown() +test('basic-markdown', (t) => { + let md = wtf('he is [[Spencer Kelly|so cool]] and [http://cool.com fresh]').markdown() t.equal( md, 'he is [so cool](./Spencer_Kelly) and [fresh](http://cool.com)', @@ -33,8 +33,8 @@ hello world`, t.end() }) -test('markdown-tricks', t => { - var md = wtf('the is [[he]] nice').markdown() +test('markdown-tricks', (t) => { + let md = wtf('the is [[he]] nice').markdown() t.equal(md, 'the is [he](./he) nice', 'matches whole-word') md = wtf('the is [[he]]. nice').markdown() diff --git a/plugins/markdown/tests/stress.test.js b/plugins/markdown/tests/stress.test.js index 85870d7b..8c2e9e89 100644 --- a/plugins/markdown/tests/stress.test.js +++ b/plugins/markdown/tests/stress.test.js @@ -1,17 +1,17 @@ -var test = require('tape') -var wtf = require('./_lib') -var fs = require('fs') -var path = require('path') +const test = require('tape') +const wtf = require('./_lib') +const fs = require('fs') +const path = require('path') function from_file(page) { - var file = '../../../tests/cache/' + page + '.txt' + let file = '../../../tests/cache/' + page + '.txt' file = path.join(__dirname, file) - var str = fs.readFileSync(file, 'utf-8') + const str = fs.readFileSync(file, 'utf-8') return wtf(str) } module.exports = from_file -var pages = [ +const pages = [ '2008-British-motorcycle-Grand-Prix', 'AACTA-Award-for-Outstanding-Achievement-in-Short-Film-Screen-Craft', 'Alanine—oxo-acid-transaminase', diff --git a/plugins/markdown/tests/table.test.js b/plugins/markdown/tests/table.test.js index 812043cd..e00cbac2 100644 --- a/plugins/markdown/tests/table.test.js +++ b/plugins/markdown/tests/table.test.js @@ -1,11 +1,11 @@ -var test = require('tape') -var wtf = require('./_lib') -var tidy = (str) => { +const test = require('tape') +const wtf = require('./_lib') +const tidy = (str) => { return str.trim() } test('table-header', (t) => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- ! Header 1 ! Header 2 @@ -20,8 +20,8 @@ test('table-header', (t) => { | row 2, cell 3 |}` - var have = wtf(str).table().markdown() - var want = ` + const have = wtf(str).table().markdown() + const want = ` | Header 1 | Header 2 | Header 3 | | --- | --- | --- | | row 1, cell 1 | row 1, cell 2 | row 1, cell 3 | @@ -32,7 +32,7 @@ test('table-header', (t) => { }) test('no-header', (t) => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- | row 1, cell 1 | row 1, cell 2 @@ -43,8 +43,8 @@ test('no-header', (t) => { | row 2, cell 3 |}` - var have = wtf(str).table().markdown() - var want = ` + const have = wtf(str).table().markdown() + const want = ` | | | | | --- | --- | --- | | row 1, cell 1 | row 1, cell 2 | row 1, cell 3 | diff --git a/plugins/person/tests/birthDate.test.js b/plugins/person/tests/birthDate.test.js index 98c8c883..e279853b 100644 --- a/plugins/person/tests/birthDate.test.js +++ b/plugins/person/tests/birthDate.test.js @@ -1,5 +1,5 @@ -var test = require('tape') -var wtf = require('./_lib') +const test = require('tape') +const wtf = require('./_lib') test('sentence-birthDate', (t) => { let str = `'''Tom Anselmi''' (born {{circa|1956}}) is a Canadian [[sport]]s [[Senior management|executive]].` diff --git a/plugins/person/tests/isAlive.test.js b/plugins/person/tests/isAlive.test.js index 3ce507d7..03285100 100644 --- a/plugins/person/tests/isAlive.test.js +++ b/plugins/person/tests/isAlive.test.js @@ -1,5 +1,5 @@ -var test = require('tape') -var wtf = require('./_lib') +const test = require('tape') +const wtf = require('./_lib') test('sentence-isAlive', (t) => { // let str = `'''Tom Anselmi''' (born {{circa|1956}}) is a Canadian [[sport]]s [[Senior management|executive]].` diff --git a/plugins/wikitext/tests/misc.test.js b/plugins/wikitext/tests/misc.test.js index 66a3d52a..bec32021 100644 --- a/plugins/wikitext/tests/misc.test.js +++ b/plugins/wikitext/tests/misc.test.js @@ -1,7 +1,7 @@ -var test = require('tape') -var wtf = require('./_lib') +const test = require('tape') +const wtf = require('./_lib') -var tidy = (str) => { +const tidy = (str) => { str = str.replace(/\s[\s]+/g, ' ') str = str.replace(/\n/g, '') str = str.trim() diff --git a/plugins/wikitext/tests/stress.test.js b/plugins/wikitext/tests/stress.test.js index e364c490..5aa603b0 100644 --- a/plugins/wikitext/tests/stress.test.js +++ b/plugins/wikitext/tests/stress.test.js @@ -1,17 +1,17 @@ -var test = require('tape') -var wtf = require('./_lib') -var fs = require('fs') -var path = require('path') +const test = require('tape') +const wtf = require('./_lib') +const fs = require('fs') +const path = require('path') function from_file(page) { - var file = '../../../tests/cache/' + page + '.txt' + let file = '../../../tests/cache/' + page + '.txt' file = path.join(__dirname, file) - var str = fs.readFileSync(file, 'utf-8') + const str = fs.readFileSync(file, 'utf-8') return wtf(str) } module.exports = from_file -var pages = [ +const pages = [ '2008-British-motorcycle-Grand-Prix', 'AACTA-Award-for-Outstanding-Achievement-in-Short-Film-Screen-Craft', 'Alanine—oxo-acid-transaminase', diff --git a/plugins/wikitext/tests/table.test.js b/plugins/wikitext/tests/table.test.js index 832fb304..5af36389 100644 --- a/plugins/wikitext/tests/table.test.js +++ b/plugins/wikitext/tests/table.test.js @@ -1,11 +1,11 @@ -var test = require('tape') -var wtf = require('./_lib') -var tidy = (str) => { +const test = require('tape') +const wtf = require('./_lib') +const tidy = (str) => { return str.trim() } test('table-header', (t) => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- ! Header 1 ! Header 2 @@ -20,7 +20,7 @@ test('table-header', (t) => { | row 2, cell 3 |}` - var have = wtf(str).table().wikitext() + const have = wtf(str).table().wikitext() t.equal(tidy(have), tidy(str), 'with-header') @@ -28,7 +28,7 @@ test('table-header', (t) => { }) test('no-header', (t) => { - var str = `{| class="wikitable" + const str = `{| class="wikitable" |- | row 1, cell 1 | row 1, cell 2 @@ -39,7 +39,7 @@ test('no-header', (t) => { | row 2, cell 3 |}` - var have = wtf(str).table().wikitext() + const have = wtf(str).table().wikitext() t.equal(tidy(have), tidy(str), 'no-header') diff --git a/scratch.js b/scratch.js index 07c046f7..a01374d4 100644 --- a/scratch.js +++ b/scratch.js @@ -1,6 +1,5 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/api/src')) -// wtf.extend(require('./plugins/i18n/src')) // var str = `[[Image:Levellers declaration and standard.gif|thumb|Woodcut from a [[Diggers]] document by [[William Everard (Digger)|William Everard]]]]` // console.log(wtf(str).json()) diff --git a/src/_version.js b/src/_version.js index 0f240653..c2248b4f 100644 --- a/src/_version.js +++ b/src/_version.js @@ -1 +1 @@ -module.exports = '8.5.1' \ No newline at end of file +module.exports = '8.5.1' diff --git a/tests/Document.test.js b/tests/Document.test.js index ed5270e5..c2289910 100644 --- a/tests/Document.test.js +++ b/tests/Document.test.js @@ -41,7 +41,7 @@ test('pageID - get - should initially be null', (t) => { }) test('pageID - get - if the pageID is already set than get it from internal object', (t) => { - let doc = wtf('', {pageID: 1}) + let doc = wtf('', { pageID: 1 }) t.equal(doc.pageID(), 1, 'the pageID equals 1') t.end() }) @@ -61,15 +61,15 @@ test('wikidata - get - should initially be null', (t) => { }) test('wikidata - get - if the wikidata is already set than get it from internal object', (t) => { - let doc = wtf('', {wikidata: 'Q42'}) - t.equal(doc.wikidata(), 'Q42', 'the wikidata equals \'Q42\'') + let doc = wtf('', { wikidata: 'Q42' }) + t.equal(doc.wikidata(), 'Q42', "the wikidata equals 'Q42'") t.end() }) test('wikidata - get / set - if the wikidata is set then it should return the same ', (t) => { let doc = wtf('') doc.wikidata('Q42') - t.equal(doc.wikidata(), 'Q42', 'the wikidata equals \'Q42\'') + t.equal(doc.wikidata(), 'Q42', "the wikidata equals 'Q42'") t.end() }) @@ -81,15 +81,15 @@ test('domain - get - should initially be null', (t) => { }) test('domain - get - if the domain is already set than get it from internal object', (t) => { - let doc = wtf('', {domain: 'wikidata.org'}) - t.equal(doc.domain(), 'wikidata.org', 'the domain equals \'wikidata.org\'') + let doc = wtf('', { domain: 'wikidata.org' }) + t.equal(doc.domain(), 'wikidata.org', "the domain equals 'wikidata.org'") t.end() }) test('domain - get / set - if the domain is set then it should return the same ', (t) => { let doc = wtf('') doc.domain('wikidata.org') - t.equal(doc.domain(), 'wikidata.org', 'the domain equals \'wikidata.org\'') + t.equal(doc.domain(), 'wikidata.org', "the domain equals 'wikidata.org'") t.end() }) @@ -101,15 +101,15 @@ test('language - get - should initially be null', (t) => { }) test('language - get - if the language is already set than get it from internal object', (t) => { - let doc = wtf('', {language: 'nl'}) - t.equal(doc.language(), 'nl', 'the language equals \'nl\'') + let doc = wtf('', { language: 'nl' }) + t.equal(doc.language(), 'nl', "the language equals 'nl'") t.end() }) test('language - get / set - if the language is set then it should return the same ', (t) => { let doc = wtf('') doc.language('nl') - t.equal(doc.language(), 'nl', 'the language equals \'nl\'') + t.equal(doc.language(), 'nl', "the language equals 'nl'") t.end() }) @@ -121,15 +121,15 @@ test('lang - get - should initially be null', (t) => { }) test('lang - get - if the lang is already set than get it from internal object', (t) => { - let doc = wtf('', {language: 'nl'}) - t.equal(doc.lang(), 'nl', 'the lang equals \'nl\'') + let doc = wtf('', { language: 'nl' }) + t.equal(doc.lang(), 'nl', "the lang equals 'nl'") t.end() }) test('lang - get / set - if the lang is set then it should return the same ', (t) => { let doc = wtf('') doc.lang('nl') - t.equal(doc.lang(), 'nl', 'the lang equals \'nl\'') + t.equal(doc.lang(), 'nl', "the lang equals 'nl'") t.end() }) @@ -141,13 +141,13 @@ test('url - get - if there is no title return null', (t) => { }) test('url - get - if lang and domain are undefined then default to en.wikipedia.org', (t) => { - let doc = wtf('', {title: 'Barack Obama'}) + let doc = wtf('', { title: 'Barack Obama' }) t.equal(doc.url(), 'https://en.wikipedia.org/wiki/Barack_Obama', 'the url equals the right page') t.end() }) test('url - get - if lang and domain are set then use them', (t) => { - let doc = wtf('', {title: 'Barack Obama', language: 'military', domain: 'wikia.org'}) + let doc = wtf('', { title: 'Barack Obama', language: 'military', domain: 'wikia.org' }) t.equal(doc.url(), 'https://military.wikia.org/wiki/Barack_Obama', 'the url equals the right page') t.end() }) @@ -160,21 +160,21 @@ test('namespace - get - should initially be null', (t) => { }) test('namespace - get - if the namespace is already set than get it from internal object', (t) => { - let doc = wtf('', {ns: 'talk'}) - t.equal(doc.namespace(), 'talk', 'the namespace equals \'talk\'') + let doc = wtf('', { ns: 'talk' }) + t.equal(doc.namespace(), 'talk', "the namespace equals 'talk'") t.end() }) test('namespace - get - if the namespace is already set the other way than get it from internal object', (t) => { - let doc = wtf('', {namespace: 'talk'}) - t.equal(doc.namespace(), 'talk', 'the namespace equals \'talk\'') + let doc = wtf('', { namespace: 'talk' }) + t.equal(doc.namespace(), 'talk', "the namespace equals 'talk'") t.end() }) test('namespace - get / set - if the namespace is set then it should return the same ', (t) => { let doc = wtf('') doc.namespace('talk') - t.equal(doc.namespace(), 'talk', 'the namespace equals \'talk\'') + t.equal(doc.namespace(), 'talk', "the namespace equals 'talk'") t.end() }) @@ -186,21 +186,21 @@ test('ns - get - should initially be null', (t) => { }) test('ns - get - if the ns is already set than get it from internal object', (t) => { - let doc = wtf('', {ns: 'talk'}) - t.equal(doc.ns(), 'talk', 'the ns equals \'talk\'') + let doc = wtf('', { ns: 'talk' }) + t.equal(doc.ns(), 'talk', "the ns equals 'talk'") t.end() }) test('ns - get - if the ns is already set the other way than get it from internal object', (t) => { - let doc = wtf('', {ns: 'talk'}) - t.equal(doc.ns(), 'talk', 'the ns equals \'talk\'') + let doc = wtf('', { ns: 'talk' }) + t.equal(doc.ns(), 'talk', "the ns equals 'talk'") t.end() }) test('ns - get / set - if the ns is set then it should return the same ', (t) => { let doc = wtf('') doc.ns('talk') - t.equal(doc.ns(), 'talk', 'the ns equals \'talk\'') + t.equal(doc.ns(), 'talk', "the ns equals 'talk'") t.end() }) @@ -212,7 +212,7 @@ test('isRedirect - get - should initially be false', (t) => { }) test('isRedirect - get - if the type of page is should default to page and return false', (t) => { - let doc = wtf('', {type: 'redirect'}) + let doc = wtf('', { type: 'redirect' }) t.equal(doc.isRedirect(), false, 'the isRedirect equals false') t.end() }) @@ -229,7 +229,6 @@ test('isRedirect - get - if the page is too long to be a redirect page than retu t.end() }) - //redirectTo -- same as redirectsTo & redirect & redirects test('redirectTo - get - should initially be null', (t) => { let doc = wtf('') @@ -239,7 +238,7 @@ test('redirectTo - get - should initially be null', (t) => { test('redirectTo - get - if the page is a redirect than return the target page', (t) => { let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - t.deepEqual(doc.redirectTo(), {page: 'Doelpagina', raw: '[[Doelpagina]]'}, 'the redirectTo equals \'Doelpagina\'') + t.deepEqual(doc.redirectTo(), { page: 'Doelpagina', raw: '[[Doelpagina]]' }, "the redirectTo equals 'Doelpagina'") t.end() }) @@ -252,7 +251,7 @@ test('redirectsTo - get - should initially be null', (t) => { test('redirectsTo - get - if the page is a redirect than return the target page', (t) => { let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - t.deepEqual(doc.redirectsTo(), {page: 'Doelpagina', raw: '[[Doelpagina]]'}, 'the redirectsTo equals \'Doelpagina\'') + t.deepEqual(doc.redirectsTo(), { page: 'Doelpagina', raw: '[[Doelpagina]]' }, "the redirectsTo equals 'Doelpagina'") t.end() }) @@ -265,7 +264,7 @@ test('redirect - get - should initially be null', (t) => { test('redirect - get - if the page is a redirect than return the target page', (t) => { let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - t.deepEqual(doc.redirect(), {page: 'Doelpagina', raw: '[[Doelpagina]]'}, 'the redirect equals \'Doelpagina\'') + t.deepEqual(doc.redirect(), { page: 'Doelpagina', raw: '[[Doelpagina]]' }, "the redirect equals 'Doelpagina'") t.end() }) @@ -278,7 +277,7 @@ test('redirects - get - should initially be null', (t) => { test('redirects - get - if the page is a redirect than return the target page', (t) => { let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - t.deepEqual(doc.redirects(), {page: 'Doelpagina', raw: '[[Doelpagina]]'}, 'the redirects equals \'Doelpagina\'') + t.deepEqual(doc.redirects(), { page: 'Doelpagina', raw: '[[Doelpagina]]' }, "the redirects equals 'Doelpagina'") t.end() }) @@ -316,7 +315,7 @@ test('categories - get - should initially be []', (t) => { }) test('categories - get - if the categories is in the option. ignore it', (t) => { - let doc = wtf('', {categories: ['Q42']}) + let doc = wtf('', { categories: ['Q42'] }) t.deepEqual(doc.categories(), [], 'the categories equals []') t.end() }) @@ -374,7 +373,7 @@ test('sections - get - should initially be []', (t) => { }) test('sections - get - if the sections is in the option. ignore it', (t) => { - let doc = wtf('', {sections: ['Q42']}) + let doc = wtf('', { sections: ['Q42'] }) t.deepEqual(doc.sections(), [], 'the sections equals []') t.end() }) @@ -385,7 +384,11 @@ test('sections - get - if the clue is a undefined / unset return the list of cat const expected = [321, 401, 0] - t.deepEqual(doc.sections().map(s => s.text().length), expected, 'the sections in the wiki text') + t.deepEqual( + doc.sections().map((s) => s.text().length), + expected, + 'the sections in the wiki text' + ) t.end() }) @@ -421,7 +424,7 @@ test('paragraphs - get - should initially be []', (t) => { }) test('paragraphs - get - if the paragraphs is in the option. ignore it', (t) => { - let doc = wtf('', {paragraphs: ['Q42']}) + let doc = wtf('', { paragraphs: ['Q42'] }) t.deepEqual(doc.paragraphs(), [], 'the paragraphs equals []') t.end() }) @@ -433,7 +436,11 @@ test('paragraphs - get - if the clue is a undefined / unset return the list of p //I used the length of the paragraphs as an analogue for the content. const expected = [804, 66, 567, 474, 169, 159, 136, 167, 137, 451, 44, 17] - t.deepEqual(doc.paragraphs().map((p) => p.text().length), expected, 'the paragraphs in the wiki text') + t.deepEqual( + doc.paragraphs().map((p) => p.text().length), + expected, + 'the paragraphs in the wiki text' + ) t.end() }) @@ -453,7 +460,11 @@ test('paragraphs - get - if the clue is a string (not number) return all the par //I used the length of the paragraphs as an analogue for the content. const expected = [804, 66, 567, 474, 169, 159, 136, 167, 137, 451, 44, 17] - t.deepEqual(doc.paragraphs('string').map((p) => p.text().length), expected, 'the paragraphs in the wiki text') + t.deepEqual( + doc.paragraphs('string').map((p) => p.text().length), + expected, + 'the paragraphs in the wiki text' + ) t.end() }) @@ -493,7 +504,7 @@ test('sentences - get - should initially be []', (t) => { }) test('sentences - get - if the sentences is in the option. ignore it', (t) => { - let doc = wtf('', {sentences: ['Q42']}) + let doc = wtf('', { sentences: ['Q42'] }) t.deepEqual(doc.sentences(), [], 'the sentences equals []') t.end() }) @@ -503,9 +514,49 @@ test('sentences - get - if the clue is a undefined / unset return the list of se let doc = wtf(str) //I used the length of the sentences as an analogue for the content. - const expected = [90, 77, 104, 55, 62, 58, 94, 45, 91, 75, 43, 66, 126, 128, 100, 210, 83, 187, 43, 56, 101, 65, 103, 90, 68, 136, 91, 75, 122, 14, 116, 48, 98, 186, 17] + const expected = [ + 90, + 77, + 104, + 55, + 62, + 58, + 94, + 45, + 91, + 75, + 43, + 66, + 126, + 128, + 100, + 210, + 83, + 187, + 43, + 56, + 101, + 65, + 103, + 90, + 68, + 136, + 91, + 75, + 122, + 14, + 116, + 48, + 98, + 186, + 17, + ] - t.deepEqual(doc.sentences().map((p) => p.text().length), expected, 'the sentences in the wiki text') + t.deepEqual( + doc.sentences().map((p) => p.text().length), + expected, + 'the sentences in the wiki text' + ) t.end() }) @@ -523,9 +574,49 @@ test('sentences - get - if the clue is a string (not number) return all the sent let doc = wtf(str) //I used the length of the paragraphs as an analogue for the content. - const expected = [90, 77, 104, 55, 62, 58, 94, 45, 91, 75, 43, 66, 126, 128, 100, 210, 83, 187, 43, 56, 101, 65, 103, 90, 68, 136, 91, 75, 122, 14, 116, 48, 98, 186, 17] + const expected = [ + 90, + 77, + 104, + 55, + 62, + 58, + 94, + 45, + 91, + 75, + 43, + 66, + 126, + 128, + 100, + 210, + 83, + 187, + 43, + 56, + 101, + 65, + 103, + 90, + 68, + 136, + 91, + 75, + 122, + 14, + 116, + 48, + 98, + 186, + 17, + ] - t.deepEqual(doc.sentences('string').map((p) => p.text().length), expected, 'the sentences in the wiki text') + t.deepEqual( + doc.sentences('string').map((p) => p.text().length), + expected, + 'the sentences in the wiki text' + ) t.end() }) //sentence @@ -546,7 +637,7 @@ test('images - get - should initially be []', (t) => { }) test('images - get - if the images is in the option. ignore it', (t) => { - let doc = wtf('', {images: ['Q42']}) + let doc = wtf('', { images: ['Q42'] }) t.deepEqual(doc.images(), [], 'the images equals []') t.end() }) @@ -558,7 +649,11 @@ test('images - get - if the clue is a undefined / unset return the list of image //I used the length of the paragraphs as an analogue for the content. const expected = [82, 89] - t.deepEqual(doc.images().map((p) => p.url().length), expected, 'the images in the wiki text') + t.deepEqual( + doc.images().map((p) => p.url().length), + expected, + 'the images in the wiki text' + ) t.end() }) @@ -578,7 +673,11 @@ test('images - get - if the clue is a string (not number) return all the images' //I used the length of the paragraphs as an analogue for the content. const expected = [82, 89] - t.deepEqual(doc.images('string').map((p) => p.url().length), expected, 'the images in the wiki text') + t.deepEqual( + doc.images('string').map((p) => p.url().length), + expected, + 'the images in the wiki text' + ) t.end() }) @@ -589,7 +688,11 @@ test('images - get - also get images from galeries', (t) => { //I used the length of the paragraphs as an analogue for the content. const expected = [137, 67, 137, 222, 120] - t.deepEqual(doc.images('string').map((p) => p.url().length), expected, 'the images in the wiki text') + t.deepEqual( + doc.images('string').map((p) => p.url().length), + expected, + 'the images in the wiki text' + ) t.end() }) @@ -611,7 +714,11 @@ test('links - get - return all links on the page', (t) => { const expected = [41, 71, 82, 94, 38, 40, 110, 40] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.links().map(l => JSON.stringify(l.json()).length), expected, 'returns all links') + t.deepEqual( + doc.links().map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all links' + ) t.end() }) @@ -629,7 +736,11 @@ test('links - get - if the clue is a string return the link with that content', let doc = wtf(str) //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(JSON.stringify(doc.links('Jace Rocker')[0].json()).length, 40, 'the link at index the content \'Jace Rocker\'') + t.deepEqual( + JSON.stringify(doc.links('Jace Rocker')[0].json()).length, + 40, + "the link at index the content 'Jace Rocker'" + ) t.end() }) @@ -640,7 +751,11 @@ test('links - get - if the clue is any other type then return all links', (t) => const expected = [41, 71, 82, 94, 38, 40, 110, 40] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.links([]).map(l => JSON.stringify(l.json()).length), expected, 'returns all links') + t.deepEqual( + doc.links([]).map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all links' + ) t.end() }) @@ -652,7 +767,11 @@ test('interwiki - get - return all interwiki on the page', (t) => { const expected = [82, 94] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.interwiki().map(l => JSON.stringify(l.json()).length), expected, 'returns all interwiki') + t.deepEqual( + doc.interwiki().map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all interwiki' + ) t.end() }) @@ -672,7 +791,11 @@ test('interwiki - get - if the clue is any other type then return all interwiki' const expected = [82, 94] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.interwiki([]).map(l => JSON.stringify(l.json()).length), expected, 'returns all interwiki') + t.deepEqual( + doc.interwiki([]).map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all interwiki' + ) t.end() }) @@ -684,7 +807,11 @@ test('lists - get - return all lists on the page', (t) => { const expected = [1946, 815, 4911, 197, 2290, 428] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.lists().map(l => JSON.stringify(l.json()).length), expected, 'returns all lists') + t.deepEqual( + doc.lists().map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all lists' + ) t.end() }) @@ -704,7 +831,11 @@ test('lists - get - if the clue is any other type then return all lists', (t) => const expected = [1946, 815, 4911, 197, 2290, 428] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.lists('string').map(l => JSON.stringify(l.json()).length), expected, 'returns all lists') + t.deepEqual( + doc.lists('string').map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all lists' + ) t.end() }) //tables @@ -715,7 +846,11 @@ test('tables - get - return all tables', (t) => { const expected = [1638, 783] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.tables().map(l => JSON.stringify(l.json()).length), expected, 'returns all tables') + t.deepEqual( + doc.tables().map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all tables' + ) t.end() }) @@ -735,7 +870,11 @@ test('tables - get - if the clue is any other type then return all tables', (t) const expected = [1638, 783] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.tables('string').map(l => JSON.stringify(l.json()).length), expected, 'returns all tables') + t.deepEqual( + doc.tables('string').map((l) => JSON.stringify(l.json()).length), + expected, + 'returns all tables' + ) t.end() }) @@ -747,7 +886,11 @@ test('templates - get - return all templates', (t) => { const expected = [13, 12, 5, 4, 4, 7, 7, 18] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.templates().map(te => te.template.length), expected, 'returns all templates') + t.deepEqual( + doc.templates().map((te) => te.template.length), + expected, + 'returns all templates' + ) t.end() }) @@ -767,7 +910,11 @@ test('templates - get - if the clue is any other type then return all templates' const expected = [13, 12, 5, 4, 4, 7, 7, 18] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.templates().map(te => te.template.length), expected, 'returns all templates') + t.deepEqual( + doc.templates().map((te) => te.template.length), + expected, + 'returns all templates' + ) t.end() }) @@ -776,10 +923,49 @@ test('references - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [19, 3, 33, 32, 44, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 31, 71, 0, 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 10, 0, 0, 0] + const expected = [ + 19, + 3, + 33, + 32, + 44, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 0, + 31, + 71, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 13, + 13, + 0, + 0, + 10, + 0, + 0, + 0, + ] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.references().map(r => r.title().length), expected, 'returns all references') + t.deepEqual( + doc.references().map((r) => r.title().length), + expected, + 'returns all references' + ) t.end() }) @@ -796,10 +982,49 @@ test('references - get - if the clue is any other type then return all reference let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [19, 3, 33, 32, 44, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 31, 71, 0, 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 10, 0, 0, 0] + const expected = [ + 19, + 3, + 33, + 32, + 44, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 0, + 31, + 71, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 13, + 13, + 0, + 0, + 10, + 0, + 0, + 0, + ] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.references('string').map(re => re.title().length), expected, 'returns all references') + t.deepEqual( + doc.references('string').map((re) => re.title().length), + expected, + 'returns all references' + ) t.end() }) @@ -808,10 +1033,49 @@ test('citations - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [19, 3, 33, 32, 44, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 31, 71, 0, 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 10, 0, 0, 0] + const expected = [ + 19, + 3, + 33, + 32, + 44, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 0, + 31, + 71, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 13, + 13, + 0, + 0, + 10, + 0, + 0, + 0, + ] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.citations().map(c => c.title().length), expected, 'returns all citations') + t.deepEqual( + doc.citations().map((c) => c.title().length), + expected, + 'returns all citations' + ) t.end() }) @@ -828,10 +1092,49 @@ test('citations - get - if the clue is any other type then return all references let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [19, 3, 33, 32, 44, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 31, 71, 0, 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 10, 0, 0, 0] + const expected = [ + 19, + 3, + 33, + 32, + 44, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 0, + 31, + 71, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 13, + 13, + 0, + 0, + 10, + 0, + 0, + 0, + ] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.citations('string').map(ci => ci.title().length), expected, 'returns all citations') + t.deepEqual( + doc.citations('string').map((ci) => ci.title().length), + expected, + 'returns all citations' + ) t.end() }) @@ -844,13 +1147,13 @@ test('coordinates - get - return all coordinates', (t) => { { display: 'inline,title', template: 'coord', - props: {region: 'US_type:city'}, + props: { region: 'US_type:city' }, lat: 39.18861, lon: -120.10889, }, { template: 'coord', - props: {type: 'city'}, + props: { type: 'city' }, lat: 39.18861, lon: -120.10889, }, @@ -866,7 +1169,7 @@ test('coordinates - get - if the clue is a number return the coordinates at that const expected = { template: 'coord', - props: {type: 'city'}, + props: { type: 'city' }, lat: 39.18861, lon: -120.10889, } @@ -883,13 +1186,13 @@ test('coordinates - get - if the clue is any other type then return all coordina { display: 'inline,title', template: 'coord', - props: {region: 'US_type:city'}, + props: { region: 'US_type:city' }, lat: 39.18861, lon: -120.10889, }, { template: 'coord', - props: {type: 'city'}, + props: { type: 'city' }, lat: 39.18861, lon: -120.10889, }, @@ -936,7 +1239,11 @@ test('references - get - return all templates', (t) => { const expected = [201, 201, 89] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.infoboxes().map(i => JSON.stringify(i.json()).length), expected, 'returns all references') + t.deepEqual( + doc.infoboxes().map((i) => JSON.stringify(i.json()).length), + expected, + 'returns all references' + ) t.end() }) @@ -954,7 +1261,11 @@ test('references - get - if the clue is any other type then return all reference const expected = [201, 201, 89] //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.infoboxes('string').map(info => JSON.stringify(info.json()).length), expected, 'returns all references') + t.deepEqual( + doc.infoboxes('string').map((info) => JSON.stringify(info.json()).length), + expected, + 'returns all references' + ) t.end() }) @@ -963,7 +1274,8 @@ test('text - get - get the text version of the document', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Remote-Data-Services.txt'), 'utf-8') let doc = wtf(str) - const expected = 'Remote Data Services (RDS, formerly known as Advanced Data Connector or ADC) is a Microsoft technology used in conjunction with ActiveX Data Objects (ADO) that allowed the retrieval of a set of data from a database server, which the client then altered in some way and then sent back to the server for further processing. With the popular adoption of Transact-SQL, which extends SQL with such programming constructs as loops and conditional statements, this became less necessary and it was eventually deprecated in Microsoft Data Access Components version 2.7. Microsoft produced SOAP Toolkit 2.0, which allows clients to do this via an open XML-based standard.\n\n\n * MSDN Remote Data Service (RDS) description' + const expected = + 'Remote Data Services (RDS, formerly known as Advanced Data Connector or ADC) is a Microsoft technology used in conjunction with ActiveX Data Objects (ADO) that allowed the retrieval of a set of data from a database server, which the client then altered in some way and then sent back to the server for further processing. With the popular adoption of Transact-SQL, which extends SQL with such programming constructs as loops and conditional statements, this became less necessary and it was eventually deprecated in Microsoft Data Access Components version 2.7. Microsoft produced SOAP Toolkit 2.0, which allows clients to do this via an open XML-based standard.\n\n\n * MSDN Remote Data Service (RDS) description' t.deepEqual(doc.text(), expected, 'Text version of the document') t.end() }) @@ -982,7 +1294,8 @@ test('plaintext - get - get the plaintext version of the document', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Remote-Data-Services.txt'), 'utf-8') let doc = wtf(str) - const expected = 'Remote Data Services (RDS, formerly known as Advanced Data Connector or ADC) is a Microsoft technology used in conjunction with ActiveX Data Objects (ADO) that allowed the retrieval of a set of data from a database server, which the client then altered in some way and then sent back to the server for further processing. With the popular adoption of Transact-SQL, which extends SQL with such programming constructs as loops and conditional statements, this became less necessary and it was eventually deprecated in Microsoft Data Access Components version 2.7. Microsoft produced SOAP Toolkit 2.0, which allows clients to do this via an open XML-based standard.\n\n\n * MSDN Remote Data Service (RDS) description' + const expected = + 'Remote Data Services (RDS, formerly known as Advanced Data Connector or ADC) is a Microsoft technology used in conjunction with ActiveX Data Objects (ADO) that allowed the retrieval of a set of data from a database server, which the client then altered in some way and then sent back to the server for further processing. With the popular adoption of Transact-SQL, which extends SQL with such programming constructs as loops and conditional statements, this became less necessary and it was eventually deprecated in Microsoft Data Access Components version 2.7. Microsoft produced SOAP Toolkit 2.0, which allows clients to do this via an open XML-based standard.\n\n\n * MSDN Remote Data Service (RDS) description' t.deepEqual(doc.plaintext(), expected, 'Text version of the document') t.end() }) @@ -1012,7 +1325,6 @@ test('json - get - get the json version of the document', (t) => { test('plurals / singular - all should exist', (t) => { let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - let singels = [ 'section', 'infobox', @@ -1039,211 +1351,312 @@ test('plurals / singular - all should exist', (t) => { let doc = wtf(str) let singels = { - 'section': [ + section: [ { clue: undefined, json: true, expected: { - 'title': '', - 'depth': 0, - 'paragraphs': [{ - 'sentences': [{ - 'text': 'Arts Club of Chicago is a private club located in the Near North Side community area of Chicago in Cook County, Illinois, United States, a block east of the Magnificent Mile, that exhibits international contemporary art.', - 'links': [{ - 'text': 'Near North Side', - 'type': 'internal', - 'page': 'Near North Side, Chicago', - }, { - 'text': 'community area', - 'type': 'internal', - 'page': 'Community areas of Chicago', - }, {'type': 'internal', 'page': 'Chicago'}, { - 'type': 'internal', - 'page': 'Cook County, Illinois', - }, {'type': 'internal', 'page': 'Magnificent Mile'}, { - 'text': 'contemporary art', - 'type': 'internal', - 'page': 'contemporary art', - }], - 'formatting': {'bold': ['Arts Club of Chicago']}, - }, { - 'text': 'It was founded in 1916, inspired by the success of the Art Institute of Chicago\'s handling of the Armory Show.', - 'links': [{'type': 'internal', 'page': 'Art Institute of Chicago'}, { - 'type': 'internal', - 'page': 'Armory Show', - }], - }, {'text': 'Its founding was viewed as a statement that art had become an important component of civilized urban life.'}, { - 'text': 'The Arts Club is said to have been pro-Modernist from its founding.', - 'links': [{'text': 'Modernist', 'type': 'internal', 'page': 'Modernism'}], - }, {'text': 'The Club strove to break new ground with its shows, rather than collect the works of established artists as the Art Institute does.'}], - }, { - 'sentences': [{ - 'text': 'The club presented Pablo Picasso\'s first United States showing.', - 'links': [{'type': 'internal', 'page': 'Pablo Picasso'}], - }, { - 'text': 'In addition, the 1951 exhibition by Jean Dubuffet and his "Anticultural Positions" lecture at the Arts Club were tremendous influences on what would become the mid-1960s Imagist movement.', - 'links': [{'type': 'internal', 'page': 'Jean Dubuffet'}, {'type': 'internal', 'page': 'Imagist'}], - }, { - 'text': 'Another important presentation in the history of the Arts Club was the Fernand Léger showing of Le Ballet Mecanique.', - 'links': [{'type': 'internal', 'page': 'Fernand Léger'}], - 'formatting': {'italic': ['Le Ballet Mecanique']}, - }], - }, { - 'sentences': [{ - 'text': 'The Club\'s move in 1997 to its current location at 201 E. Ontario Street was not without controversy because the club demolished its former interior space designed by Ludwig Mies van der Rohe and moved only the central staircase to the new gallery space.', - 'links': [{'type': 'internal', 'page': 'Ludwig Mies van der Rohe'}], - }, {'text': 'However, the new space is 19000 sqft, which is 7000 sqft larger than the old space.'}], - }], - 'templates': [{ - 'date': 'August 2016', - 'template': 'use mdy dates', - }, {'template': 'good article'}, { - 'display': 'inline', - 'template': 'coord', - 'lat': 41.89327, - 'lon': -87.62251, - }], - 'infoboxes': [{ - 'name': {'text': 'Arts Club of Chicago'}, - 'pushpin_map': {'text': 'United States Chicago Near North Side'}, - 'coordinates': {'text': '41.89327°N, -87.62251°W'}, - 'map_caption': { - 'text': 'Location within Chicago\'s Near North Side community area', - 'links': [{ - 'text': 'Near North Side', - 'type': 'internal', - 'page': 'Near North Side, Chicago', - }, {'text': 'community area', 'type': 'internal', 'page': 'Community areas of Chicago'}], + title: '', + depth: 0, + paragraphs: [ + { + sentences: [ + { + text: + 'Arts Club of Chicago is a private club located in the Near North Side community area of Chicago in Cook County, Illinois, United States, a block east of the Magnificent Mile, that exhibits international contemporary art.', + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { + text: 'community area', + type: 'internal', + page: 'Community areas of Chicago', + }, + { type: 'internal', page: 'Chicago' }, + { + type: 'internal', + page: 'Cook County, Illinois', + }, + { type: 'internal', page: 'Magnificent Mile' }, + { + text: 'contemporary art', + type: 'internal', + page: 'contemporary art', + }, + ], + formatting: { bold: ['Arts Club of Chicago'] }, + }, + { + text: + "It was founded in 1916, inspired by the success of the Art Institute of Chicago's handling of the Armory Show.", + links: [ + { type: 'internal', page: 'Art Institute of Chicago' }, + { + type: 'internal', + page: 'Armory Show', + }, + ], + }, + { + text: + 'Its founding was viewed as a statement that art had become an important component of civilized urban life.', + }, + { + text: 'The Arts Club is said to have been pro-Modernist from its founding.', + links: [{ text: 'Modernist', type: 'internal', page: 'Modernism' }], + }, + { + text: + 'The Club strove to break new ground with its shows, rather than collect the works of established artists as the Art Institute does.', + }, + ], + }, + { + sentences: [ + { + text: "The club presented Pablo Picasso's first United States showing.", + links: [{ type: 'internal', page: 'Pablo Picasso' }], + }, + { + text: + 'In addition, the 1951 exhibition by Jean Dubuffet and his "Anticultural Positions" lecture at the Arts Club were tremendous influences on what would become the mid-1960s Imagist movement.', + links: [ + { type: 'internal', page: 'Jean Dubuffet' }, + { type: 'internal', page: 'Imagist' }, + ], + }, + { + text: + 'Another important presentation in the history of the Arts Club was the Fernand Léger showing of Le Ballet Mecanique.', + links: [{ type: 'internal', page: 'Fernand Léger' }], + formatting: { italic: ['Le Ballet Mecanique'] }, + }, + ], + }, + { + sentences: [ + { + text: + "The Club's move in 1997 to its current location at 201 E. Ontario Street was not without controversy because the club demolished its former interior space designed by Ludwig Mies van der Rohe and moved only the central staircase to the new gallery space.", + links: [{ type: 'internal', page: 'Ludwig Mies van der Rohe' }], + }, + { text: 'However, the new space is 19000 sqft, which is 7000 sqft larger than the old space.' }, + ], + }, + ], + templates: [ + { + date: 'August 2016', + template: 'use mdy dates', + }, + { template: 'good article' }, + { + display: 'inline', + template: 'coord', + lat: 41.89327, + lon: -87.62251, + }, + ], + infoboxes: [ + { + name: { text: 'Arts Club of Chicago' }, + pushpin_map: { text: 'United States Chicago Near North Side' }, + coordinates: { text: '41.89327°N, -87.62251°W' }, + map_caption: { + text: "Location within Chicago's Near North Side community area", + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, + ], + }, + image: { text: '20070701 Arts Club of Chicago.JPG' }, + established: { text: '1916 (current location since April 4, 1997)' }, + location: { + text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', + links: [ + { type: 'internal', page: 'Chicago' }, + { + type: 'internal', + page: 'Illinois', + }, + { text: '🇺🇸', type: 'internal', page: 'united states' }, + ], + }, + website: { + text: 'www.artsclubchicago.org', + links: [ + { + text: 'www.artsclubchicago.org', + type: 'external', + site: 'http://www.artsclubchicago.org', + }, + ], + }, }, - 'image': {'text': '20070701 Arts Club of Chicago.JPG'}, - 'established': {'text': '1916 (current location since April 4, 1997)'}, - 'location': { - 'text': '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', - 'links': [{'type': 'internal', 'page': 'Chicago'}, { - 'type': 'internal', - 'page': 'Illinois', - }, {'text': '🇺🇸', 'type': 'internal', 'page': 'united states'}], + ], + references: [ + { + url: 'http://www.encyclopedia.chicagohistory.org/pages/70.html', + author: 'Kruty, Paul', + title: 'Armory Show of 1913', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', }, - 'website': { - 'text': 'www.artsclubchicago.org', - 'links': [{ - 'text': 'www.artsclubchicago.org', - 'type': 'external', - 'site': 'http://www.artsclubchicago.org', - }], + { + url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', + author: 'Warren, Lynne', + title: 'Art', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', + }, + { + url: 'http://www.encyclopedia.chicagohistory.org/pages/83.html', + author: 'Roeder George H., Jr.', + title: 'Artists, Education and Culture of', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', }, - }], - 'references': [{ - 'url': 'http://www.encyclopedia.chicagohistory.org/pages/70.html', - 'author': 'Kruty, Paul', - 'title': 'Armory Show of 1913', - 'accessdate': 'June 27, 2007', - 'year': '2005', - 'publisher': 'Chicago Historical Society', - 'work': 'The Electronic Encyclopedia of Chicago', - 'template': 'citation', - 'type': 'web', - }, { - 'url': 'http://www.encyclopedia.chicagohistory.org/pages/72.html', - 'author': 'Warren, Lynne', - 'title': 'Art', - 'accessdate': 'June 27, 2007', - 'year': '2005', - 'publisher': 'Chicago Historical Society', - 'work': 'The Electronic Encyclopedia of Chicago', - 'template': 'citation', - 'type': 'web', - }, { - 'url': 'http://www.encyclopedia.chicagohistory.org/pages/83.html', - 'author': 'Roeder George H., Jr.', - 'title': 'Artists, Education and Culture of', - 'accessdate': 'June 27, 2007', - 'year': '2005', - 'publisher': 'Chicago Historical Society', - 'work': 'The Electronic Encyclopedia of Chicago', - 'template': 'citation', - 'type': 'web', - }, { - 'url': 'http://www.aiachicago.org/special_features/1996_Design_Awards/Unbuilt/Awards/Winners/unbuilt_171.html', - 'archive-url': 'https://web.archive.org/web/20011124011911/http://www.aiachicago.org/special_features/1996_Design_Awards/Unbuilt/Awards/Winners/unbuilt_171.html', - 'dead-url': 'yes', - 'archive-date': 'November 24, 2001', - 'title': 'Honor : The Arts Club of Chicago', - 'accessdate': 'June 28, 2007', - 'publisher': 'American Institute of Architects Chicago', - 'template': 'citation', - 'type': 'web', - }, { - 'url': 'http://www.artn.com/Building.pdf', - 'title': 'The Arts Club of Chicago Building Fact Sheet', - 'accessdate': 'June 29, 2007', - 'publisher': 'www.artn.com', - 'format': 'PDF', - 'archiveurl': 'https://web.archive.org/web/20060615211113/http://www.artn.com/Building.pdf', - 'archivedate': 'June 15, 2006', - 'template': 'citation', - 'type': 'web', - }], + { + url: + 'http://www.aiachicago.org/special_features/1996_Design_Awards/Unbuilt/Awards/Winners/unbuilt_171.html', + 'archive-url': + 'https://web.archive.org/web/20011124011911/http://www.aiachicago.org/special_features/1996_Design_Awards/Unbuilt/Awards/Winners/unbuilt_171.html', + 'dead-url': 'yes', + 'archive-date': 'November 24, 2001', + title: 'Honor : The Arts Club of Chicago', + accessdate: 'June 28, 2007', + publisher: 'American Institute of Architects Chicago', + template: 'citation', + type: 'web', + }, + { + url: 'http://www.artn.com/Building.pdf', + title: 'The Arts Club of Chicago Building Fact Sheet', + accessdate: 'June 29, 2007', + publisher: 'www.artn.com', + format: 'PDF', + archiveurl: 'https://web.archive.org/web/20060615211113/http://www.artn.com/Building.pdf', + archivedate: 'June 15, 2006', + template: 'citation', + type: 'web', + }, + ], }, }, { clue: 1, json: true, expected: { - 'title': 'Mission and purpose', - 'depth': 0, - 'paragraphs': [{ - 'sentences': [{'text': 'The inaugural mission of the club was "to encourage higher standards of art, maintain galleries for that purpose, and to promote the mutual acquaintance of art lovers and art workers."'}, { - 'text': 'This mission arose from the contemporary Chicago active art scene, which had 30 commercial art galleries showing traditional art and an internationally recognized museum.', - 'links': [{'text': 'art galleries', 'type': 'internal', 'page': 'art gallery'}], - }, { - 'text': 'Additionally, the local mass media gave equitable coverage to the visual arts.', - 'links': [{'text': 'mass media', 'type': 'internal', 'page': 'mass media'}, { - 'text': 'visual arts', - 'type': 'internal', - 'page': 'visual art', - }], - }, { - 'text': 'The art scene also had enough clubs and organizations for musicians, writers and artists.', - 'links': [{'text': 'artists', 'type': 'internal', 'page': 'artist'}], - }, { - 'text': 'Unfortunately, the lively art scene did not adequately represent the avant-garde art.', - 'links': [{'text': 'avant-garde', 'type': 'internal', 'page': 'avant-garde'}], - }, {'text': 'The local galleries emphasized American, English and the occasional French work, emphasizing prints and drawings.'}, {'text': 'This necessitated trips to New York City, London or Paris for Chicagoans who wanted to buy art.'}], - }, {'sentences': [{'text': 'The club does not generally show traveling exhibitions curated by others.'}, {'text': 'Instead, it curates its own exhibits, often with very original works.'}, {'text': 'This places emphasis on cutting edge and avant-garde art.'}]}], - 'references': [{'template': 'citation', 'type': 'inline', 'data': {}, 'inline': {}}], + title: 'Mission and purpose', + depth: 0, + paragraphs: [ + { + sentences: [ + { + text: + 'The inaugural mission of the club was "to encourage higher standards of art, maintain galleries for that purpose, and to promote the mutual acquaintance of art lovers and art workers."', + }, + { + text: + 'This mission arose from the contemporary Chicago active art scene, which had 30 commercial art galleries showing traditional art and an internationally recognized museum.', + links: [{ text: 'art galleries', type: 'internal', page: 'art gallery' }], + }, + { + text: 'Additionally, the local mass media gave equitable coverage to the visual arts.', + links: [ + { text: 'mass media', type: 'internal', page: 'mass media' }, + { + text: 'visual arts', + type: 'internal', + page: 'visual art', + }, + ], + }, + { + text: 'The art scene also had enough clubs and organizations for musicians, writers and artists.', + links: [{ text: 'artists', type: 'internal', page: 'artist' }], + }, + { + text: 'Unfortunately, the lively art scene did not adequately represent the avant-garde art.', + links: [{ text: 'avant-garde', type: 'internal', page: 'avant-garde' }], + }, + { + text: + 'The local galleries emphasized American, English and the occasional French work, emphasizing prints and drawings.', + }, + { + text: + 'This necessitated trips to New York City, London or Paris for Chicagoans who wanted to buy art.', + }, + ], + }, + { + sentences: [ + { text: 'The club does not generally show traveling exhibitions curated by others.' }, + { text: 'Instead, it curates its own exhibits, often with very original works.' }, + { text: 'This places emphasis on cutting edge and avant-garde art.' }, + ], + }, + ], + references: [{ template: 'citation', type: 'inline', data: {}, inline: {} }], }, }, ], - 'infobox': [ + infobox: [ { clue: undefined, json: true, expected: { - name: {text: 'Arts Club of Chicago'}, - pushpin_map: {text: 'United States Chicago Near North Side'}, - coordinates: {text: '41.89327°N, -87.62251°W'}, + name: { text: 'Arts Club of Chicago' }, + pushpin_map: { text: 'United States Chicago Near North Side' }, + coordinates: { text: '41.89327°N, -87.62251°W' }, map_caption: { - text: 'Location within Chicago\'s Near North Side community area', - links: [{ - text: 'Near North Side', - type: 'internal', - page: 'Near North Side, Chicago', - }, {text: 'community area', type: 'internal', page: 'Community areas of Chicago'}], + text: "Location within Chicago's Near North Side community area", + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, + ], }, - image: {text: '20070701 Arts Club of Chicago.JPG'}, - established: {text: '1916 (current location since April 4, 1997)'}, + image: { text: '20070701 Arts Club of Chicago.JPG' }, + established: { text: '1916 (current location since April 4, 1997)' }, location: { text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', - links: [{text: undefined, type: 'internal', page: 'Chicago'}, { - text: undefined, - type: 'internal', - page: 'Illinois', - }, {text: '🇺🇸', type: 'internal', page: 'united states'}], + links: [ + { text: undefined, type: 'internal', page: 'Chicago' }, + { + text: undefined, + type: 'internal', + page: 'Illinois', + }, + { text: '🇺🇸', type: 'internal', page: 'united states' }, + ], }, website: { text: 'www.artsclubchicago.org', - links: [{text: 'www.artsclubchicago.org', type: 'external', site: 'http://www.artsclubchicago.org'}], + links: [{ text: 'www.artsclubchicago.org', type: 'external', site: 'http://www.artsclubchicago.org' }], }, }, }, @@ -1251,75 +1664,88 @@ test('plurals / singular - all should exist', (t) => { clue: 0, json: true, expected: { - name: {text: 'Arts Club of Chicago'}, - pushpin_map: {text: 'United States Chicago Near North Side'}, - coordinates: {text: '41.89327°N, -87.62251°W'}, + name: { text: 'Arts Club of Chicago' }, + pushpin_map: { text: 'United States Chicago Near North Side' }, + coordinates: { text: '41.89327°N, -87.62251°W' }, map_caption: { - text: 'Location within Chicago\'s Near North Side community area', - links: [{ - text: 'Near North Side', - type: 'internal', - page: 'Near North Side, Chicago', - }, {text: 'community area', type: 'internal', page: 'Community areas of Chicago'}], + text: "Location within Chicago's Near North Side community area", + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, + ], }, - image: {text: '20070701 Arts Club of Chicago.JPG'}, - established: {text: '1916 (current location since April 4, 1997)'}, + image: { text: '20070701 Arts Club of Chicago.JPG' }, + established: { text: '1916 (current location since April 4, 1997)' }, location: { text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', - links: [{text: undefined, type: 'internal', page: 'Chicago'}, { - text: undefined, - type: 'internal', - page: 'Illinois', - }, {text: '🇺🇸', type: 'internal', page: 'united states'}], + links: [ + { text: undefined, type: 'internal', page: 'Chicago' }, + { + text: undefined, + type: 'internal', + page: 'Illinois', + }, + { text: '🇺🇸', type: 'internal', page: 'united states' }, + ], }, website: { text: 'www.artsclubchicago.org', - links: [{text: 'www.artsclubchicago.org', type: 'external', site: 'http://www.artsclubchicago.org'}], + links: [{ text: 'www.artsclubchicago.org', type: 'external', site: 'http://www.artsclubchicago.org' }], }, }, }, ], - 'sentence': [ + sentence: [ { clue: undefined, json: true, expected: { - text: 'Arts Club of Chicago is a private club located in the Near North Side community area of Chicago in Cook County, Illinois, United States, a block east of the Magnificent Mile, that exhibits international contemporary art.', + text: + 'Arts Club of Chicago is a private club located in the Near North Side community area of Chicago in Cook County, Illinois, United States, a block east of the Magnificent Mile, that exhibits international contemporary art.', links: [ { text: 'Near North Side', type: 'internal', page: 'Near North Side, Chicago', }, - {text: 'community area', type: 'internal', page: 'Community areas of Chicago'}, + { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, { text: undefined, type: 'internal', page: 'Chicago', }, - {text: undefined, type: 'internal', page: 'Cook County, Illinois'}, { + { text: undefined, type: 'internal', page: 'Cook County, Illinois' }, + { text: undefined, type: 'internal', page: 'Magnificent Mile', }, - {text: 'contemporary art', type: 'internal', page: 'contemporary art'}, + { text: 'contemporary art', type: 'internal', page: 'contemporary art' }, ], - formatting: {bold: ['Arts Club of Chicago']}, + formatting: { bold: ['Arts Club of Chicago'] }, }, }, { clue: 1, json: true, expected: { - 'text': 'It was founded in 1916, inspired by the success of the Art Institute of Chicago\'s handling of the Armory Show.', - 'links': [{'type': 'internal', 'page': 'Art Institute of Chicago'}, { - 'type': 'internal', - 'page': 'Armory Show', - }], + text: + "It was founded in 1916, inspired by the success of the Art Institute of Chicago's handling of the Armory Show.", + links: [ + { type: 'internal', page: 'Art Institute of Chicago' }, + { + type: 'internal', + page: 'Armory Show', + }, + ], }, }, ], - 'citation': [ + citation: [ { clue: undefined, json: true, @@ -1339,19 +1765,19 @@ test('plurals / singular - all should exist', (t) => { clue: 1, json: true, expected: { - 'url': 'http://www.encyclopedia.chicagohistory.org/pages/72.html', - 'author': 'Warren, Lynne', - 'title': 'Art', - 'accessdate': 'June 27, 2007', - 'year': '2005', - 'publisher': 'Chicago Historical Society', - 'work': 'The Electronic Encyclopedia of Chicago', - 'template': 'citation', - 'type': 'web', + url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', + author: 'Warren, Lynne', + title: 'Art', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', }, }, ], - 'reference': [ + reference: [ { clue: undefined, json: true, @@ -1371,164 +1797,212 @@ test('plurals / singular - all should exist', (t) => { clue: 1, json: true, expected: { - 'url': 'http://www.encyclopedia.chicagohistory.org/pages/72.html', - 'author': 'Warren, Lynne', - 'title': 'Art', - 'accessdate': 'June 27, 2007', - 'year': '2005', - 'publisher': 'Chicago Historical Society', - 'work': 'The Electronic Encyclopedia of Chicago', - 'template': 'citation', - 'type': 'web', + url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', + author: 'Warren, Lynne', + title: 'Art', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', }, }, ], - 'coordinate': [ + coordinate: [ { clue: undefined, - expected: {display: 'inline', template: 'coord', lat: 41.89327, lon: -87.62251}, + expected: { display: 'inline', template: 'coord', lat: 41.89327, lon: -87.62251 }, }, { clue: 1, expected: undefined, }, ], - 'table': [ + table: [ { clue: undefined, json: true, - expected: [{ - Name: { - text: 'Fine Arts Building', - links: [{text: 'Fine Arts Building', type: 'internal', page: 'Fine Arts Building (Chicago)'}], + expected: [ + { + Name: { + text: 'Fine Arts Building', + links: [{ text: 'Fine Arts Building', type: 'internal', page: 'Fine Arts Building (Chicago)' }], + }, + 'Street Address': { + text: '401 S. Michigan Avenue', + links: [{ text: 'Michigan Avenue', type: 'internal', page: 'Michigan Avenue (Chicago)' }], + }, + Years: { text: '1916-18' }, + 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, + }, + { + Name: { text: '' }, + 'Street Address': { text: '610 S. Michigan Avenue' }, + Years: { text: '1918-24' }, + 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, + }, + { + Name: { + text: 'Wrigley Building (north tower)', + links: [{ text: undefined, type: 'internal', page: 'Wrigley Building' }], + }, + 'Street Address': { text: '410 N. Michigan Avenue' }, + Years: { text: '1924-36' }, + 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, }, - 'Street Address': { - text: '401 S. Michigan Avenue', - links: [{text: 'Michigan Avenue', type: 'internal', page: 'Michigan Avenue (Chicago)'}], + { + Name: { + text: 'Wrigley Building (south tower)', + links: [{ text: undefined, type: 'internal', page: 'Wrigley Building' }], + }, + 'Street Address': { text: '410 N. Michigan Avenue' }, + Years: { text: '1936-47' }, + 'Architect/Interior Designer': { text: 'Arthur Heun/Elizabeth "Bobsy" Goodspeed Chapman' }, }, - Years: {text: '1916-18'}, - 'Architect/Interior Designer': {text: 'Arthur Heun/Rue Winterbotham Carpenter'}, - }, { - Name: {text: ''}, - 'Street Address': {text: '610 S. Michigan Avenue'}, - Years: {text: '1918-24'}, - 'Architect/Interior Designer': {text: 'Arthur Heun/Rue Winterbotham Carpenter'}, - }, { - Name: { - text: 'Wrigley Building (north tower)', - links: [{text: undefined, type: 'internal', page: 'Wrigley Building'}], + { + Name: { text: '' }, + 'Street Address': { text: '109 E. Ontario Street' }, + Years: { text: '1951-95' }, + 'Architect/Interior Designer': { + text: 'Ludwig Mies van der Rohe', + links: [{ text: undefined, type: 'internal', page: 'Ludwig Mies van der Rohe' }], + }, }, - 'Street Address': {text: '410 N. Michigan Avenue'}, - Years: {text: '1924-36'}, - 'Architect/Interior Designer': {text: 'Arthur Heun/Rue Winterbotham Carpenter'}, - }, { - Name: { - text: 'Wrigley Building (south tower)', - links: [{text: undefined, type: 'internal', page: 'Wrigley Building'}], + { + Name: { text: '' }, + 'Street Address': { text: '222 W. Superior Street' }, + Years: { text: '1995-97' }, + 'Architect/Interior Designer': { text: '' }, }, - 'Street Address': {text: '410 N. Michigan Avenue'}, - Years: {text: '1936-47'}, - 'Architect/Interior Designer': {text: 'Arthur Heun/Elizabeth "Bobsy" Goodspeed Chapman'}, - }, { - Name: {text: ''}, - 'Street Address': {text: '109 E. Ontario Street'}, - Years: {text: '1951-95'}, - 'Architect/Interior Designer': { - text: 'Ludwig Mies van der Rohe', - links: [{text: undefined, type: 'internal', page: 'Ludwig Mies van der Rohe'}], + { + Name: { text: '' }, + 'Street Address': { text: '201 E. Ontario Street' }, + Years: { text: '1997-' }, + 'Architect/Interior Designer': { text: 'Vinci/Hamp Architects, Inc.' }, }, - }, { - Name: {text: ''}, - 'Street Address': {text: '222 W. Superior Street'}, - Years: {text: '1995-97'}, - 'Architect/Interior Designer': {text: ''}, - }, { - Name: {text: ''}, - 'Street Address': {text: '201 E. Ontario Street'}, - Years: {text: '1997-'}, - 'Architect/Interior Designer': {text: 'Vinci/Hamp Architects, Inc.'}, - }], - + ], }, { clue: 1, json: true, - expected: [{ - 'Name': {'text': 'Mrs. Robert McGann'}, - 'Years': {'text': '1916-18'}, - }, { - 'Name': {'text': 'Rue Winterbotham Carpenter'}, - 'Years': {'text': '1918-31'}, - }, { - 'Name': {'text': 'Elizabeth "Bobsy" Goodspeed'}, - 'Years': {'text': '1932-40'}, - }, { - 'Name': {'text': 'Mrs. William B. Hale'}, - 'Years': {'text': '1940', 'number': 1940}, - }, { - 'Name': {'text': 'Rue Winterbotham Shaw'}, - 'Years': {'text': '1940-79'}, - }, { - 'Name': {'text': 'Mrs. Roger Barnett'}, - 'Years': {'text': '1979', 'number': 1979}, - }, { - 'Name': {'text': 'James Phinney Baxter IV'}, - 'Years': {'text': '1979-81'}, - }, { - 'Name': {'text': 'Stanley M. Freehling'}, - 'Years': {'text': '1981–2005'}, - }, {'Name': {'text': 'Marilynn B. Alsdorf'}, 'Years': {'text': '2006–2011'}}, { - 'Name': {'text': 'Sophia Shaw'}, - 'Years': {'text': '2011–2013'}, - }, {'Name': {'text': 'Helyn Goldenberg'}, 'Years': {'text': '2013–present'}}], + expected: [ + { + Name: { text: 'Mrs. Robert McGann' }, + Years: { text: '1916-18' }, + }, + { + Name: { text: 'Rue Winterbotham Carpenter' }, + Years: { text: '1918-31' }, + }, + { + Name: { text: 'Elizabeth "Bobsy" Goodspeed' }, + Years: { text: '1932-40' }, + }, + { + Name: { text: 'Mrs. William B. Hale' }, + Years: { text: '1940', number: 1940 }, + }, + { + Name: { text: 'Rue Winterbotham Shaw' }, + Years: { text: '1940-79' }, + }, + { + Name: { text: 'Mrs. Roger Barnett' }, + Years: { text: '1979', number: 1979 }, + }, + { + Name: { text: 'James Phinney Baxter IV' }, + Years: { text: '1979-81' }, + }, + { + Name: { text: 'Stanley M. Freehling' }, + Years: { text: '1981–2005' }, + }, + { Name: { text: 'Marilynn B. Alsdorf' }, Years: { text: '2006–2011' } }, + { + Name: { text: 'Sophia Shaw' }, + Years: { text: '2011–2013' }, + }, + { Name: { text: 'Helyn Goldenberg' }, Years: { text: '2013–present' } }, + ], }, ], - 'list': [ + list: [ { clue: undefined, json: true, - expected: [{ - 'text': 'Red Petals, plate steel, steel wire, sheet aluminum, soft-iron bolts, and aluminum paint, 1942, by Alexander Calder', - 'formatting': {'italic': ['Red Petals']}, - }, { - 'text': 'Main Staircase for The Arts Club of Chicago, steel, travertine marble, 1948-1951, by Ludwig Mies van der Rohe', - 'formatting': {'italic': ['Main Staircase for The Arts Club of Chicago']}, - }, { - 'text': 'Untitled, charcoal on ivory laid paper, 1922, by Henri Matisse', - 'links': [{'text': 'charcoal', 'type': 'internal', 'page': 'charcoal'}], - 'formatting': {'italic': ['Untitled']}, - }, { - 'text': 'Personage and Birds in Front of the Sun (Personnage et oiseaux devant le soleil), ink and gouache on paper, 1942, by Joan Miró', - 'formatting': {'italic': ['Personage and Birds in Front of the Sun (Personnage et oiseaux devant le soleil)']}, - }, { - 'text': 'This Thing is Made to Perpetuate My Memory (Cette Chose est faite pour perpetuer mon souvenir), ink, gouache or watercolor, and silver and bronze paint on board, 1915, by Francis Picabia', - 'formatting': {'italic': ['This Thing is Made to Perpetuate My Memory (Cette Chose est faite pour perpetuer mon souvenir)']}, - }, { - 'text': 'Head of a Woman (Tete de femme), red and black chalk with chalk wash on tan laid paper, laid down on lightweight Japanese paper, 1922, by Pablo Picasso', - 'formatting': {'italic': ['Head of a Woman (Tete de femme)']}, - }], + expected: [ + { + text: + 'Red Petals, plate steel, steel wire, sheet aluminum, soft-iron bolts, and aluminum paint, 1942, by Alexander Calder', + formatting: { italic: ['Red Petals'] }, + }, + { + text: + 'Main Staircase for The Arts Club of Chicago, steel, travertine marble, 1948-1951, by Ludwig Mies van der Rohe', + formatting: { italic: ['Main Staircase for The Arts Club of Chicago'] }, + }, + { + text: 'Untitled, charcoal on ivory laid paper, 1922, by Henri Matisse', + links: [{ text: 'charcoal', type: 'internal', page: 'charcoal' }], + formatting: { italic: ['Untitled'] }, + }, + { + text: + 'Personage and Birds in Front of the Sun (Personnage et oiseaux devant le soleil), ink and gouache on paper, 1942, by Joan Miró', + formatting: { + italic: ['Personage and Birds in Front of the Sun (Personnage et oiseaux devant le soleil)'], + }, + }, + { + text: + 'This Thing is Made to Perpetuate My Memory (Cette Chose est faite pour perpetuer mon souvenir), ink, gouache or watercolor, and silver and bronze paint on board, 1915, by Francis Picabia', + formatting: { + italic: [ + 'This Thing is Made to Perpetuate My Memory (Cette Chose est faite pour perpetuer mon souvenir)', + ], + }, + }, + { + text: + 'Head of a Woman (Tete de femme), red and black chalk with chalk wash on tan laid paper, laid down on lightweight Japanese paper, 1922, by Pablo Picasso', + formatting: { italic: ['Head of a Woman (Tete de femme)'] }, + }, + ], }, { clue: 1, json: true, - expected: [{ - 'text': 'Fitzgerald, Michael C. (1984). Making Modernism: Picasso and the Creation of the Market for Twentieth Century Art. Farrar Straus & Giroux. ISBN: 0-37410-611-8.', - 'formatting': {'italic': ['Making Modernism: Picasso and the Creation of the Market for Twentieth Century Art']}, - }, { - 'text': 'Shaw, Sophia (ed.) (1997). The Arts Club of Chicago: The Collection 1916-1996. The Arts Club of Chicago. ISBN: 0-96434-403-3.', - 'links': [{ - 'text': 'The Arts Club of Chicago: The Collection 1916-1996', - 'type': 'external', - 'site': 'https://web.archive.org/web/20060918054331/http://www.press.uchicago.edu/cgi-bin/hfs.cgi/00/13456.ctl', - }], - 'formatting': {'italic': ['The Arts Club of Chicago: The Collection 1916-1996']}, - }, { - 'text': 'Wells, James M. (1992). The Arts Club of Chicago: Seventy-Fifth Anniversary.', - 'formatting': {'italic': ['The Arts Club of Chicago: Seventy-Fifth Anniversary']}, - }], + expected: [ + { + text: + 'Fitzgerald, Michael C. (1984). Making Modernism: Picasso and the Creation of the Market for Twentieth Century Art. Farrar Straus & Giroux. ISBN: 0-37410-611-8.', + formatting: { + italic: ['Making Modernism: Picasso and the Creation of the Market for Twentieth Century Art'], + }, + }, + { + text: + 'Shaw, Sophia (ed.) (1997). The Arts Club of Chicago: The Collection 1916-1996. The Arts Club of Chicago. ISBN: 0-96434-403-3.', + links: [ + { + text: 'The Arts Club of Chicago: The Collection 1916-1996', + type: 'external', + site: + 'https://web.archive.org/web/20060918054331/http://www.press.uchicago.edu/cgi-bin/hfs.cgi/00/13456.ctl', + }, + ], + formatting: { italic: ['The Arts Club of Chicago: The Collection 1916-1996'] }, + }, + { + text: 'Wells, James M. (1992). The Arts Club of Chicago: Seventy-Fifth Anniversary.', + formatting: { italic: ['The Arts Club of Chicago: Seventy-Fifth Anniversary'] }, + }, + ], }, ], - 'link': [ + link: [ { clue: undefined, json: true, @@ -1541,10 +2015,10 @@ test('plurals / singular - all should exist', (t) => { { clue: 1, json: true, - expected: {'text': 'community area', 'type': 'internal', 'page': 'Community areas of Chicago'}, + expected: { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, }, ], - 'image': [ + image: [ { clue: undefined, json: true, @@ -1558,31 +2032,34 @@ test('plurals / singular - all should exist', (t) => { clue: 1, json: true, expected: { - 'file': 'File:20070711 Mies van der Rohe Staircase.JPG', - 'thumb': 'https://wikipedia.org/wiki/Special:Redirect/file/20070711_Mies_van_der_Rohe_Staircase.JPG?width=300', - 'url': 'https://wikipedia.org/wiki/Special:Redirect/file/20070711_Mies_van_der_Rohe_Staircase.JPG', - 'caption': 'Mies van der Rohe staircase and Alexander Calder mobile', - 'links': [], + file: 'File:20070711 Mies van der Rohe Staircase.JPG', + thumb: 'https://wikipedia.org/wiki/Special:Redirect/file/20070711_Mies_van_der_Rohe_Staircase.JPG?width=300', + url: 'https://wikipedia.org/wiki/Special:Redirect/file/20070711_Mies_van_der_Rohe_Staircase.JPG', + caption: 'Mies van der Rohe staircase and Alexander Calder mobile', + links: [], }, }, ], - 'template': [ - {clue: undefined, expected: {date: 'August 2016', template: 'use mdy dates'}}, - {clue: 1, expected: {'template': 'good article'}}, + template: [ + { clue: undefined, expected: { date: 'August 2016', template: 'use mdy dates' } }, + { clue: 1, expected: { template: 'good article' } }, ], - 'category': [ - {clue: undefined, expected: '1916 establishments in Illinois'}, - {clue: 1, expected: 'Museums in Chicago'}, + category: [ + { clue: undefined, expected: '1916 establishments in Illinois' }, + { clue: 1, expected: 'Museums in Chicago' }, ], } Object.keys(singels).forEach((fn) => { - singels[fn].forEach(testCase => { + singels[fn].forEach((testCase) => { const result = testCase.json ? doc[fn](testCase.clue).json() : doc[fn](testCase.clue) //console.log(JSON.stringify(result)) - t.deepEqual(JSON.stringify(result), JSON.stringify(testCase.expected), 'expect doc.' + fn + '(' + testCase.clue + ') to equal ' + testCase.expected) + t.deepEqual( + JSON.stringify(result), + JSON.stringify(testCase.expected), + 'expect doc.' + fn + '(' + testCase.clue + ') to equal ' + testCase.expected + ) }) - }) t.end() }) diff --git a/tests/Section.test.js b/tests/Section.test.js index ac332548..6aee15a1 100644 --- a/tests/Section.test.js +++ b/tests/Section.test.js @@ -48,7 +48,11 @@ test('sentences - get', (t) => { let sec = wtf(str).section(3) const expected = [109, 229, 118, 120, 95, 94, 192, 107, 138, 143, 165, 155, 39, 100, 197, 101] - t.deepEqual(sec.sentences().map(s => s.text().length), expected, 'the index should equal the expected') + t.deepEqual( + sec.sentences().map((s) => s.text().length), + expected, + 'the index should equal the expected' + ) t.end() }) @@ -66,7 +70,11 @@ test('paragraphs - get', (t) => { let sec = wtf(str).section(3) const expected = [675, 1141, 299] - t.deepEqual(sec.paragraphs().map(s => s.text().length), expected, 'the paragraphs should equal the expected') + t.deepEqual( + sec.paragraphs().map((s) => s.text().length), + expected, + 'the paragraphs should equal the expected' + ) t.end() }) @@ -100,7 +108,11 @@ test('links - get', (t) => { let sec = wtf(str).section(3) const expected = [12, 10, 19, 34, 30, 25, 19, 25, 7, 21] - t.deepEqual(sec.links().map(l => l.href().length), expected, 'the links should equal the expected') + t.deepEqual( + sec.links().map((l) => l.href().length), + expected, + 'the links should equal the expected' + ) t.end() }) @@ -126,7 +138,11 @@ test('tables - get', (t) => { let sec = wtf(str).section(1) const expected = [18] - t.deepEqual(sec.tables().map(s => s.keyValue().length), expected, 'the tables should equal the expected') + t.deepEqual( + sec.tables().map((s) => s.keyValue().length), + expected, + 'the tables should equal the expected' + ) t.end() }) @@ -144,7 +160,11 @@ test('templates - get', (t) => { let sec = wtf(str).section(0) const expected = [148, 195, 54, 49, 727, 176, 182, 399, 70, 23, 18, 18, 21] - t.deepEqual(sec.templates().map(s => JSON.stringify(s).length), expected, 'the templates should equal the expected') + t.deepEqual( + sec.templates().map((s) => JSON.stringify(s).length), + expected, + 'the templates should equal the expected' + ) t.end() }) @@ -170,7 +190,11 @@ test('infoboxes - get', (t) => { let sec = wtf(str).section(0) const expected = [33] - t.deepEqual(sec.infoboxes().map(s => JSON.stringify(s).length), expected, 'the infoboxes should equal the expected') + t.deepEqual( + sec.infoboxes().map((s) => JSON.stringify(s).length), + expected, + 'the infoboxes should equal the expected' + ) t.end() }) @@ -188,7 +212,11 @@ test('coordinates - get', (t) => { let sec = wtf(str).section(0) const expected = [70] - t.deepEqual(sec.coordinates().map(s => JSON.stringify(s).length), expected, 'the coordinates should equal the expected') + t.deepEqual( + sec.coordinates().map((s) => JSON.stringify(s).length), + expected, + 'the coordinates should equal the expected' + ) t.end() }) @@ -213,7 +241,11 @@ test('lists - get', (t) => { let sec = wtf(str).section('See also') const expected = [22] - t.deepEqual(sec.lists().map(s => JSON.stringify(s.lines()).length), expected, 'the lists should equal the expected') + t.deepEqual( + sec.lists().map((s) => JSON.stringify(s.lines()).length), + expected, + 'the lists should equal the expected' + ) t.end() }) @@ -233,7 +265,11 @@ test('images - get', (t) => { let sec = wtf(str).section('Background') const expected = [124, 79, 89] - t.deepEqual(sec.images().map(s => s.url().length), expected, 'the images should equal the expected') + t.deepEqual( + sec.images().map((s) => s.url().length), + expected, + 'the images should equal the expected' + ) t.end() }) @@ -250,7 +286,11 @@ test('images - get', (t) => { let sec = wtf(str).section(0) const expected = [] - t.deepEqual(sec.images().map(s => s.url().length), expected, 'the images should equal the expected') + t.deepEqual( + sec.images().map((s) => s.url().length), + expected, + 'the images should equal the expected' + ) t.end() }) @@ -259,8 +299,47 @@ test('references - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - const expected = [15, 104, 58, 38, 50, 0, 0, 0, 30, 33, 34, 0, 71, 0, 56, 85, 16, 59, 64, 29, 0, 0, 0, 0, 0, 26, 60, 0, 35, 87, 90, 42, 0, 0] - t.deepEqual(sec.references().map(s => s.title().length), expected, 'the references should equal the expected') + const expected = [ + 15, + 104, + 58, + 38, + 50, + 0, + 0, + 0, + 30, + 33, + 34, + 0, + 71, + 0, + 56, + 85, + 16, + 59, + 64, + 29, + 0, + 0, + 0, + 0, + 0, + 26, + 60, + 0, + 35, + 87, + 90, + 42, + 0, + 0, + ] + t.deepEqual( + sec.references().map((s) => s.title().length), + expected, + 'the references should equal the expected' + ) t.end() }) @@ -276,8 +355,47 @@ test('references - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - const expected = [15, 104, 58, 38, 50, 0, 0, 0, 30, 33, 34, 0, 71, 0, 56, 85, 16, 59, 64, 29, 0, 0, 0, 0, 0, 26, 60, 0, 35, 87, 90, 42, 0, 0] - t.deepEqual(sec.citations().map(s => s.title().length), expected, 'the citations should equal the expected') + const expected = [ + 15, + 104, + 58, + 38, + 50, + 0, + 0, + 0, + 30, + 33, + 34, + 0, + 71, + 0, + 56, + 85, + 16, + 59, + 64, + 29, + 0, + 0, + 0, + 0, + 0, + 26, + 60, + 0, + 35, + 87, + 90, + 42, + 0, + 0, + ] + t.deepEqual( + sec.citations().map((s) => s.title().length), + expected, + 'the citations should equal the expected' + ) t.end() }) diff --git a/tests/api.test.js b/tests/api.test.js index 29c061ae..147ff141 100644 --- a/tests/api.test.js +++ b/tests/api.test.js @@ -1,15 +1,15 @@ -var test = require('tape') -var fs = require('fs') -var path = require('path') -var wtf = require('./lib') -var docs = require('./lib/api.json') +const test = require('tape') +const fs = require('fs') +const path = require('path') +const wtf = require('./lib') +const docs = require('./lib/api.json') //read cached file -var readFile = function(file) { +const readFile = function (file) { return fs.readFileSync(path.join(__dirname, 'cache', file + '.txt'), 'utf-8') } -var pages = [ +const pages = [ 'al_Haytham', 'Mozilla-Firefox', 'anarchism', @@ -19,14 +19,14 @@ var pages = [ 'jodie_emery', 'Allen-R.-Morris', 'United-Kingdom', - 'Irina-Saratovtseva' + 'Irina-Saratovtseva', ] -test('Document-methods-do-not-throw', t => { - pages.forEach(page => { - var doc = wtf(readFile(page)) - docs.Document.forEach(obj => { - var desc = obj.name + ' - ' + page +test('Document-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + docs.Document.forEach((obj) => { + const desc = obj.name + ' - ' + page doc[obj.name]() t.ok(true, desc) }) @@ -34,12 +34,12 @@ test('Document-methods-do-not-throw', t => { t.end() }) -test('Section-methods-do-not-throw', t => { - pages.forEach(page => { - var doc = wtf(readFile(page)) - var sec = doc.sections(0) - docs.Section.forEach(obj => { - var desc = obj.name + ' - ' + page +test('Section-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + const sec = doc.sections(0) + docs.Section.forEach((obj) => { + const desc = obj.name + ' - ' + page sec[obj.name]() t.ok(true, desc) }) @@ -47,12 +47,12 @@ test('Section-methods-do-not-throw', t => { t.end() }) -test('Sentence-methods-do-not-throw', t => { - pages.forEach(page => { - var doc = wtf(readFile(page)) - var sen = doc.sentences(0) - docs.Sentence.forEach(obj => { - var desc = obj.name + ' - ' + page +test('Sentence-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + const sen = doc.sentences(0) + docs.Sentence.forEach((obj) => { + const desc = obj.name + ' - ' + page sen[obj.name]() t.ok(true, desc) }) @@ -60,12 +60,12 @@ test('Sentence-methods-do-not-throw', t => { t.end() }) -test('Reference-methods-do-not-throw', t => { - pages.forEach(page => { - var doc = wtf(readFile(page)) - var sen = doc.references(0) - docs.Reference.forEach(obj => { - var desc = obj.name + ' - ' + page +test('Reference-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + const sen = doc.references(0) + docs.Reference.forEach((obj) => { + const desc = obj.name + ' - ' + page sen[obj.name]() t.ok(true, desc) }) @@ -73,12 +73,12 @@ test('Reference-methods-do-not-throw', t => { t.end() }) -test('Image-methods-do-not-throw', t => { - pages.forEach(page => { - var doc = wtf(readFile(page)) - var sen = doc.images(0) - docs.Image.forEach(obj => { - var desc = obj.name + ' - ' + page +test('Image-methods-do-not-throw', (t) => { + pages.forEach((page) => { + const doc = wtf(readFile(page)) + const sen = doc.images(0) + docs.Image.forEach((obj) => { + const desc = obj.name + ' - ' + page sen[obj.name]() t.ok(true, desc) }) @@ -86,8 +86,8 @@ test('Image-methods-do-not-throw', t => { t.end() }) -test('Infobox-methods-do-not-throw', t => { - var mypages = [ +test('Infobox-methods-do-not-throw', (t) => { + const mypages = [ 'al_Haytham', 'Mozilla-Firefox', 'toronto', @@ -95,13 +95,13 @@ test('Infobox-methods-do-not-throw', t => { 'royal_cinema', 'jodie_emery', 'Allen-R.-Morris', - 'Irina-Saratovtseva' + 'Irina-Saratovtseva', ] - mypages.forEach(page => { - var doc = wtf(readFile(page)) - var sen = doc.infoboxes(0) - docs.Infobox.forEach(obj => { - var desc = obj.name + ' - ' + page + mypages.forEach((page) => { + const doc = wtf(readFile(page)) + const sen = doc.infoboxes(0) + docs.Infobox.forEach((obj) => { + const desc = obj.name + ' - ' + page sen[obj.name]() t.ok(true, desc) }) @@ -109,13 +109,13 @@ test('Infobox-methods-do-not-throw', t => { t.end() }) -test('List-methods-do-not-throw', t => { - var mypages = ['al_Haytham', 'Mozilla-Firefox', 'toronto', 'toronto_star', 'jodie_emery', 'Allen-R.-Morris'] - mypages.forEach(page => { - var doc = wtf(readFile(page)) - var sen = doc.lists(0) - docs.List.forEach(obj => { - var desc = obj.name + ' - ' + page +test('List-methods-do-not-throw', (t) => { + const mypages = ['al_Haytham', 'Mozilla-Firefox', 'toronto', 'toronto_star', 'jodie_emery', 'Allen-R.-Morris'] + mypages.forEach((page) => { + const doc = wtf(readFile(page)) + const sen = doc.lists(0) + docs.List.forEach((obj) => { + const desc = obj.name + ' - ' + page sen[obj.name]() t.ok(true, desc) }) @@ -123,13 +123,13 @@ test('List-methods-do-not-throw', t => { t.end() }) -test('Table-methods-do-not-throw', t => { - var mypages = ['Mozilla-Firefox', 'toronto', 'Allen-R.-Morris', 'bluejays'] - mypages.forEach(page => { - var doc = wtf(readFile(page)) - var sen = doc.tables(0) - docs.Table.forEach(obj => { - var desc = obj.name + ' - ' + page +test('Table-methods-do-not-throw', (t) => { + const mypages = ['Mozilla-Firefox', 'toronto', 'Allen-R.-Morris', 'bluejays'] + mypages.forEach((page) => { + const doc = wtf(readFile(page)) + const sen = doc.tables(0) + docs.Table.forEach((obj) => { + const desc = obj.name + ' - ' + page sen[obj.name]() t.ok(true, desc) }) diff --git a/tests/comments.test.js b/tests/comments.test.js index 9ef46d30..3f4bf99a 100644 --- a/tests/comments.test.js +++ b/tests/comments.test.js @@ -1,9 +1,9 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('tricky comments', t => { - var str = `hello world` - var doc = wtf(str) +test('tricky comments', (t) => { + let str = `hello world` + const doc = wtf(str) t.equal(doc.text(), 'hello world', 'with brackets') t.equal(doc.references().length, 0, 'found no references') diff --git a/tests/coord.test.js b/tests/coord.test.js index e39c6571..72b0d34a 100644 --- a/tests/coord.test.js +++ b/tests/coord.test.js @@ -1,9 +1,9 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('coord formats', t => { - var str = `{{Coord|44.112|-87.913|display=title}}` - var obj = wtf(str).coordinates()[0] +test('coord formats', (t) => { + let str = `{{Coord|44.112|-87.913|display=title}}` + let obj = wtf(str).coordinates()[0] t.equal(obj.lat, 44.112, 'fmt-1-lat') t.equal(obj.lon, -87.913, 'fmt-1-lon') @@ -62,23 +62,23 @@ test('coord formats', t => { }) //thank you to https://github.com/gmaclennan/parse-dms/blob/master/test/index.js -test('Parse DMS', function(t) { - var str = `hi {{coord|59|12|7.7|N|02|15|39.6|W}} there` - var obj = wtf(str).coordinates(0) - var want = { +test('Parse DMS', function (t) { + const str = `hi {{coord|59|12|7.7|N|02|15|39.6|W}} there` + const obj = wtf(str).coordinates(0) + const want = { lat: 59.20214, - lon: -2.261 + lon: -2.261, } t.equal(obj.lat, want.lat, 'DMS-1-lat') t.equal(obj.lon, want.lon, 'DMS-1-lon') t.end() }) -test('Parse DMS-missing', function(t) { - var str = `hi {{coord|59|N|02|W}} there` - var obj = wtf(str).coordinates(0) - var want = { +test('Parse DMS-missing', function (t) { + const str = `hi {{coord|59|N|02|W}} there` + const obj = wtf(str).coordinates(0) + const want = { lat: 59, - lon: -2 + lon: -2, } t.equal(obj.lat, want.lat, 'DMS-2-lat') t.equal(obj.lon, want.lon, 'DMS-2-lon') diff --git a/tests/currencies.test.js b/tests/currencies.test.js index 0dde47ea..b84ca68b 100644 --- a/tests/currencies.test.js +++ b/tests/currencies.test.js @@ -1,7 +1,7 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('currency-templates', function(t) { +test('currency-templates', function (t) { let doc = wtf('hello {{GBP|123.45}} world.') t.equal(doc.text(), 'hello GB£123.45 world.', 'gbp') @@ -70,7 +70,7 @@ test('currency-templates', function(t) { t.end() }) -test('inrConvert-templates', function(t) { +test('inrConvert-templates', function (t) { let doc = wtf('{{INRConvert|93896}}') t.equal(doc.text(), 'inr 93896', 'inrConvert') diff --git a/tests/date.test.js b/tests/date.test.js index 592f38fd..42f711dc 100644 --- a/tests/date.test.js +++ b/tests/date.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('structured date templates', t => { - var arr = [ +test('structured date templates', (t) => { + const arr = [ ['{{Birth date|1993|2|24}}', 'February 24, 1993'], ['{{Birth date|1993|2|4|df=yes}}', 'February 4, 1993'], ['{{Birth date|1919|12|4|df=yes}}', 'December 4, 1919'], @@ -46,17 +46,17 @@ test('structured date templates', t => { ['{{Start date and age|1997|03|26}}', 'March 26, 1997'], ['{{Start date and age|1986|01|01|df=yes}}', 'January 1, 1986'], ['{{Start date and age|2019|03|08}}', 'March 8, 2019'], - ['{{Start date and age|2010|02|29|df=yes}}', 'February 29, 2010'] + ['{{Start date and age|2010|02|29|df=yes}}', 'February 29, 2010'], ] - arr.forEach(a => { - var str = wtf(a[0]).text() + arr.forEach((a) => { + const str = wtf(a[0]).text() t.equal(str, a[1], a[0] + ' ' + str) }) t.end() }) -test('hyphenated language-date templates', t => { - var arr = [ +test('hyphenated language-date templates', (t) => { + const arr = [ ['{{start-date|December 7, 1942}}', 'December 7, 1942'], ['{{birth-date|7 December 1941}}', '7 December 1941'], ['{{end-date|7 December 1941}}', '7 December 1941'], @@ -72,7 +72,7 @@ test('hyphenated language-date templates', t => { ['born on {{birth-date|17 June 1941}}', 'born on 17 June 1941'], [ 'around {{start-date|5:43PM HST, December 7th, 1941|tz=y}} this century', - 'around 5:43PM HST, December 7th, 1941 this century' + 'around 5:43PM HST, December 7th, 1941 this century', ], // ['{{Death-date and given age|2018|2|5|df=yes}}', 'February 5, 2018'], // ['{{birth date and age2 |1988|6|10 |1961|7|4 |df=y}}', '4 July 1961'], @@ -80,20 +80,20 @@ test('hyphenated language-date templates', t => { ['{{BirthDeathAge|B|1976|6|6|1990|8|8}}', 'June 6, 1976'], ['{{BirthDeathAge| |1976| | |1990| |}}', '1990'], ['{{BirthDeathAge| |1976| | |1990|8|8}}', 'August 8, 1990'], - ['{{BirthDeathAge|{{^}}|1976|{{^}}|{{^}}|2007|1|1}}', 'January 1, 2007'] + ['{{BirthDeathAge|{{^}}|1976|{{^}}|{{^}}|2007|1|1}}', 'January 1, 2007'], // ['{{Birth date based on age at death |age |1986|03|28}}', 'March 28, 1986'], // ['{{birth based on age as of date | 50 | 2017 | 02 | 16}}', '1966/1967'] ] - arr.forEach(a => { - var str = wtf(a[0]).text() + arr.forEach((a) => { + const str = wtf(a[0]).text() t.equal(str, a[1], a[0]) }) t.end() }) // test('date-data', t => { -// var obj = wtf('hello {{start date|1993|02|24|08|30}} world').sentences(0); -// var date = obj.dates(0); +// const obj = wtf('hello {{start date|1993|02|24|08|30}} world').sentences(0); +// const date = obj.dates(0); // t.equal(date.year, 1993, 'got-year'); // t.equal(date.month, 2, 'got-month'); // t.equal(date.date, 24, 'got-date'); @@ -103,8 +103,8 @@ test('hyphenated language-date templates', t => { // t.end(); // }); -test('age templates', t => { - var arr = [ +test('age templates', (t) => { + const arr = [ ['{{Age|1989|7|23|2003|7|14}}', '13'], ['{{Age|1989|7|23|2018|2|28}}', '28'], // ['{{Age|1989|7|23}}', '28'], //working but untestable @@ -126,7 +126,7 @@ test('age templates', t => { // ['{{age in years and days|2007|03|02|2008|03|02}}', '1 year, 0 days'], // ['{{age in days|19 Aug 2008|4 Sep 2010}}', '746'], // ['{{age in days|27 May 2002}}', '5,744'], - ['{{Age nts|1989|7|23|2003|7|14}}', '13'] + ['{{Age nts|1989|7|23|2003|7|14}}', '13'], // ['{{Age nts|1989|7|23}}', '28'], // // ['{{Age as of date|50|2016|1|1}}', '52–53'], @@ -135,8 +135,8 @@ test('age templates', t => { // ['{{Age as of date|50|2016|Feb|16}}', '52'], // ['{{Age as of date|50|2016|February|16}}', '52'], ] - arr.forEach(a => { - var str = wtf(a[0]).text() + arr.forEach((a) => { + const str = wtf(a[0]).text() t.equal(str, a[1], a[0]) }) t.end() diff --git a/tests/domain.test.js b/tests/domain.test.js index ee37d3c1..0a19540d 100644 --- a/tests/domain.test.js +++ b/tests/domain.test.js @@ -1,5 +1,5 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') test('domain - normal', (t) => { let str = `hello [[File:SpencerKelly.jpg]] world` diff --git a/tests/encoding.test.js b/tests/encoding.test.js index 30b479bb..895c557e 100644 --- a/tests/encoding.test.js +++ b/tests/encoding.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('mongo encoding in json', t => { - var str = ` +test('mongo encoding in json', (t) => { + const str = ` {{Infobox person | name = Jodie Emery | birth.date = January 4, 1985 @@ -23,18 +23,18 @@ hello world {{lkjsdf|foo=28|hs.he=90}}. ` let doc = wtf(str) let json = doc.json({ - encode: true + encode: true, }) - var table = json.sections[0].tables[0] + const table = json.sections[0].tables[0] t.equal(table[0]['Foo.bar'], undefined, 'table removed dot') t.ok(table[0]['Foo\\u002ebar'], 'has table encoding dot') t.ok(table[1]['Foo\\u002ebar'], 'has table encoding dot #2') - var template = json.sections[0].templates[0] + const template = json.sections[0].templates[0] t.equal(template['hs.he'], undefined, 'template removed dot') t.ok(template['hs\\u002ehe'], 'has template encoding dot') - var infobox = json.sections[0].infoboxes[0] + const infobox = json.sections[0].infoboxes[0] t.equal(infobox['birth.date'], undefined, 'infobox removed dot') t.ok(infobox['birth\\u002edate'], 'infobox encoding') t.end() diff --git a/tests/extend.test.js b/tests/extend.test.js index 0955e874..2bbdb4bf 100644 --- a/tests/extend.test.js +++ b/tests/extend.test.js @@ -1,9 +1,9 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('extend model', t => { - wtf.extend(models => { - models.Doc.prototype.countLinks = function() { +test('extend model', (t) => { + wtf.extend((models) => { + models.Doc.prototype.countLinks = function () { return this.links().length } }) @@ -14,7 +14,7 @@ test('extend model', t => { t.end() }) -test('extend templates', t => { +test('extend templates', (t) => { wtf.extend((models, templates) => { // add a new template templates.missing = (tmpl, list) => { @@ -32,7 +32,7 @@ test('extend templates', t => { t.end() }) -test('string template syntax', t => { +test('string template syntax', (t) => { wtf.extend((models, templates) => { templates.nest = 'inside' templates.ignore = '' diff --git a/tests/fmt.test.js b/tests/fmt.test.js index 7d7dc1db..22d02f6d 100644 --- a/tests/fmt.test.js +++ b/tests/fmt.test.js @@ -1,11 +1,11 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('bold/italics', t => { - var str = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]]. +test('bold/italics', (t) => { + const str = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]]. She is '''''very''''' good` - var sentence = wtf(str).sentences(0) + let sentence = wtf(str).sentences(0) t.deepEqual(sentence.bold(), ['K. Nicole Mitchell'], 'one bold') t.deepEqual(sentence.italic(), ['currently'], 'one italic') t.equal(sentence.links().length, 1, 'one link') @@ -16,31 +16,31 @@ test('bold/italics', t => { t.end() }) -test('inline mixquotes test', t => { - var str = `this is ''''four'''' and this is '''''five'''''` - var sentence = wtf(str).sentences(0) +test('inline mixquotes test', (t) => { + const str = `this is ''''four'''' and this is '''''five'''''` + const sentence = wtf(str).sentences(0) // t.deepEqual(sentence.fmt.bold, ['five', '\'four\''], 'two bold'); t.deepEqual(sentence.italic(), ['five'], 'five is italic') t.end() }) -test('inline mixquotes test', t => { - var arr = [ +test('inline mixquotes test', (t) => { + const arr = [ [`hello 'one' world`, `hello 'one' world`], [`hello ''two'' world`, `hello two world`], [`hello '''three''' world`, `hello three world`], [`hello ''''four'''' world`, `hello 'four' world`], [`hello '''''five''''' world`, `hello five world`], - [`hello ''''''six'''''' world`, `hello 'six' world`] + [`hello ''''''six'''''' world`, `hello 'six' world`], ] - arr.forEach(a => { + arr.forEach((a) => { t.equal(wtf(a[0]).text(), a[1], a[1]) }) t.end() }) -test('links-with-ticks', t => { - var doc = wtf(`hello '''[[Palme d'Or]]''' world`) +test('links-with-ticks', (t) => { + const doc = wtf(`hello '''[[Palme d'Or]]''' world`) t.equal(doc.text(), `hello Palme d'Or world`, 'text') t.equal(doc.links(0).page(), `Palme d'Or`, 'link') t.equal(doc.sentences(0).data.fmt.bold[0], `Palme d'Or`, 'fmt-bold') diff --git a/tests/html.test.js b/tests/html.test.js index 9ad5bec4..9eacf64b 100644 --- a/tests/html.test.js +++ b/tests/html.test.js @@ -1,5 +1,5 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') test('support bold and italics', (t) => { let doc = wtf(`hi world there`) diff --git a/tests/i18n.test.js b/tests/i18n.test.js index 96fe97b8..044e016c 100644 --- a/tests/i18n.test.js +++ b/tests/i18n.test.js @@ -1,9 +1,9 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('nihongo templates templates', t => { - var str = `hello {{Nihongo|Tokyo Tower|東京タワー|Tōkyō tawā}} world` - var doc = wtf(str) +test('nihongo templates templates', (t) => { + let str = `hello {{Nihongo|Tokyo Tower|東京タワー|Tōkyō tawā}} world` + let doc = wtf(str) t.equal(doc.text(), 'hello Tokyo Tower (東京タワー) world', 'sub english word') t.equal(doc.templates().length, 1, 'have template') t.equal(doc.templates(0).romaji, 'Tōkyō tawā', 'have translation') @@ -18,28 +18,26 @@ test('nihongo templates templates', t => { t.end() }) -test('hindi image', t => { - var str = `[[चित्र:Gandhis ashes.jpg|thumb|left|[[राज घाट और अन्य स्मारक|राज घाट]] ([[:en:Raj Ghat and other memorials|Raj Ghat]]):आगा खान पैलेस में गांधी की अस्थियां (पुणे, भारत) .]]` - var img = wtf(str) - .images(0) - .json() +test('hindi image', (t) => { + const str = `[[चित्र:Gandhis ashes.jpg|thumb|left|[[राज घाट और अन्य स्मारक|राज घाट]] ([[:en:Raj Ghat and other memorials|Raj Ghat]]):आगा खान पैलेस में गांधी की अस्थियां (पुणे, भारत) .]]` + const img = wtf(str).images(0).json() t.equal(img.file, 'चित्र:Gandhis ashes.jpg') t.end() }) -test('hindi categories', t => { - var str = ` +test('hindi categories', (t) => { + const str = ` [[श्रेणी:भारत के अर्थशास्त्री]] [[श्रेणी:महात्मा गांधी| ]]` - var img = wtf(str).json() + const img = wtf(str).json() t.equal(img.categories[0], 'भारत के अर्थशास्त्री', 'cat1') t.equal(img.categories[1], 'महात्मा गांधी', 'cat2') t.end() }) -test('lang template', t => { - var str = `i played {{lang-de|Die Seefahrer von Catan}}` - var doc = wtf(str) +test('lang template', (t) => { + let str = `i played {{lang-de|Die Seefahrer von Catan}}` + let doc = wtf(str) t.equal(doc.text(), 'i played Die Seefahrer von Catan', 'lang-de') str = `hi there {{lang-ru|тундра|italic=unset}} hello` diff --git a/tests/images.test.js b/tests/images.test.js index fc858e2e..eab84742 100644 --- a/tests/images.test.js +++ b/tests/images.test.js @@ -1,9 +1,9 @@ -var test = require('tape') -var wtf = require('./lib') -var readFile = require('./lib/_cachedPage') +const test = require('tape') +const wtf = require('./lib') +const readFile = require('./lib/_cachedPage') test('gallery-tag', (t) => { - var str = ` + const str = ` hey cool! ==Paintings== While his early works were often brilliant, luminous [[watercolor]]s, by 1887 he had switched firmly to oils. Zorn was a prolific artist. He became an international success as one of the most acclaimed portrait painters of his era. His sitters included three American Presidents, nobility, the Swedish king and queen and numerous members of high society. Zorn also painted portraits of family members, friends, and self-portraits. Zorn is also famous for his nude paintings. His fondness of painting full-figured women gave rise to the terms Zorn's ''kulla'' or ''dalakulla'', an unmarried woman or girl from [[Dalecarlia]], as the women were called in the local [[dialect]] of the region Zorn lived. @@ -18,9 +18,9 @@ File:Anders Zorn - Ateljéidyll.jpg|G''Studio Idyll'', 1918 The paintings have the freedom and energy of sketches, using warm and cool light and shade areas with contrasting areas of warm and cool tones, and an understanding of colour contrasts and reflected lights. Zorn's accomplished use of the brush allows the forms and the texture of the painted subject to reflect and transmit light. In addition to portraits and nudes, Zorn excelled in realistic depictions of water, as well as scenes depicting rustic life and customs. ` - var doc = wtf(str) + const doc = wtf(str) t.deepEqual(doc.sections('paintings').templates('gallery').length, 1, 'section-has-gallery') - var templ = doc.templates(0) + const templ = doc.templates(0) t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 5, '5 images') t.deepEqual(templ.images[0].caption.links(0).page(), 'Freyja', 'image has caption') @@ -29,7 +29,7 @@ The paintings have the freedom and energy of sketches, using warm and cool ligh }) test('gallery-tag-2', (t) => { - var doc = wtf(`hello + const doc = wtf(`hello Culex-female.jpg|Stechmücke @@ -43,7 +43,7 @@ test('gallery-tag-2', (t) => { foo`) - var templ = doc.templates(0) + const templ = doc.templates(0) t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 8, '8 images') t.deepEqual(templ.images[0].file, 'Culex-female.jpg', 'got filename') @@ -51,13 +51,13 @@ test('gallery-tag-2', (t) => { }) test('gallery-template', (t) => { - var str = `{{Gallery|width=200 |lines=4 + const str = `{{Gallery|width=200 |lines=4 |File:India1909PrevailingRaces.JPG|The map of the prevailing "races" of India (now discredited) based on the 1901 Census of British India. The Kurmi are shown both in the [[United Provinces of Agra and Oudh|United Provinces]] (UP) and the [[Central Provinces]]. |File:Kurmi sowing.jpg|An "ethnographic" photograph from 1916 showing Kurmi farmers, both men and women, sowing a field. |File:Kurmi threshing.jpg|Another ethnographic print from 1916 showing a Kurmi family employing its beasts of burden to thresh wheat. |File:Kurmi winnowing.jpg|A third print from the same collection showing the Kurmi family winnowing. }} ` - var templ = wtf(str).templates(0) + const templ = wtf(str).templates(0) t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 4, 'has 4 images') t.end() diff --git a/tests/infobox.test.js b/tests/infobox.test.js index 796c4fa0..979b3d6f 100644 --- a/tests/infobox.test.js +++ b/tests/infobox.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('infobox', function(t) { - var str = ` +test('infobox', function (t) { + const str = ` {{Infobox settlement | name = New York City | official_name = City of New York @@ -13,12 +13,12 @@ test('infobox', function(t) { The '''City of New York''', often called '''New York City''' ` - var arr = wtf(str).infoboxes() + const arr = wtf(str).infoboxes() t.equal(arr.length, 1, 'have one infobox') t.end() }) -test('node.js-infobox-logo', function(t) { +test('node.js-infobox-logo', function (t) { let str = `{{Infobox software | name = Node.js | logo = [[File:Node.js logo.svg|frameless]] @@ -33,14 +33,12 @@ test('node.js-infobox-logo', function(t) { | license = [[MIT license]]{{cite web|title=node/LICENSE at master|url=https://github.com/nodejs/node/blob/master/LICENSE|website=GitHub|publisher=Node.js Foundation|accessdate = 17 September 2018|date=17 September 2018}}{{cite web|title=The MIT License|url=https://opensource.org/licenses/MIT|website=Open Source Initiative|accessdate = 17 September 2018|date=17 September 2018}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`logo`], 'Node.js logo.svg', 'found logo val') t.end() }) -test('french-infobox', function(t) { +test('french-infobox', function (t) { let str = `{{Infobox Société | couleur boîte = 706D6E | titre blanc = oui @@ -51,9 +49,7 @@ test('french-infobox', function(t) { | chiffre d'affaires = found2 }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`secteurs d'activités`], 'found1', 'found secteurs val') t.equal(obj[`chiffre d'affaires`], 'found2', 'found chiffre val') t.equal(obj[`siège (ville)`], 'city', 'found city val') @@ -61,7 +57,7 @@ test('french-infobox', function(t) { t.end() }) -test('nested-london-infobox', function(t) { +test('nested-london-infobox', function (t) { let str = `{{Infobox country | common_name = United Kingdom | name = {{collapsible list @@ -73,9 +69,7 @@ test('nested-london-infobox', function(t) { }} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`common_name`], 'United Kingdom', 'found common_name val') t.equal(obj[`name`], 'hello', 'found name val') t.end() diff --git a/tests/interwiki.test.js b/tests/interwiki.test.js index d99483f1..6eee3b8d 100644 --- a/tests/interwiki.test.js +++ b/tests/interwiki.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('interwiki text', t => { - var doc = wtf('hi [[as:Plancton]] there') +test('interwiki text', (t) => { + let doc = wtf('hi [[as:Plancton]] there') t.equal(doc.text(), 'hi Plancton there', 'strip full interwiki') doc = wtf(`hi [[wiktionary:Plancton]] there [[zh:天問|天問]]`) @@ -11,7 +11,7 @@ test('interwiki text', t => { t.end() }) -test('expand external interwiki link', t => { +test('expand external interwiki link', (t) => { let str = `[[heroeswiki:cool]]` let doc = wtf(str) let obj = doc.link().json() @@ -32,7 +32,7 @@ test('expand external interwiki link', t => { t.end() }) -test('expand internal interwiki link', t => { +test('expand internal interwiki link', (t) => { let str = `[[fr:cool]]` let doc = wtf(str) let obj = doc.link().json() diff --git a/tests/json.test.js b/tests/json.test.js index c93f77a2..608d70d6 100644 --- a/tests/json.test.js +++ b/tests/json.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var readFile = require('./lib/_cachedPage') +const test = require('tape') +const readFile = require('./lib/_cachedPage') -test('json-output-default', t => { - var data = readFile('royal_cinema').json() +test('json-output-default', (t) => { + const data = readFile('royal_cinema').json() t.ok(data.title, 'title-exists') t.ok(data.categories, 'categories-exists') t.ok(data.sections, 'sections-exists') @@ -12,8 +12,8 @@ test('json-output-default', t => { t.end() }) -test('json-output-options', t => { - var options = { +test('json-output-options', (t) => { + const options = { title: false, pageID: false, categories: false, @@ -23,9 +23,9 @@ test('json-output-options', t => { images: false, sections: false, - plaintext: true + plaintext: true, } - var data = readFile('royal_cinema').json(options) + const data = readFile('royal_cinema').json(options) t.ok(!data.title, 'title-gone') t.ok(!data.categories, 'categories-gone') t.ok(!data.citations, 'citations-gone') @@ -37,12 +37,12 @@ test('json-output-options', t => { t.end() }) -test('section-output', t => { - var doc = readFile('royal_cinema') - var data = doc.section(0).json({ +test('section-output', (t) => { + const doc = readFile('royal_cinema') + const data = doc.section(0).json({ links: false, formatting: false, - sentences: true + sentences: true, }) t.equal(data.depth, 0, 'depth') t.ok(data.sentences[0].text, 'no formatting') @@ -51,17 +51,17 @@ test('section-output', t => { t.end() }) -test('sentence-output', t => { - var doc = readFile('royal_cinema') - var sen = doc.sentences(0) - var data = sen.json() +test('sentence-output', (t) => { + let doc = readFile('royal_cinema') + let sen = doc.sentences(0) + let data = sen.json() t.ok(data.text, 'text') t.ok(data.links, 'links') t.ok(data.formatting, 'formatting') data = sen.json({ links: false, - formatting: false + formatting: false, }) t.ok(data.text, 'text') t.ok(!data.links, 'links') diff --git a/tests/links.test.js b/tests/links.test.js index 92d6f645..9ca12503 100644 --- a/tests/links.test.js +++ b/tests/links.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') test('document-links', (t) => { - var str = `before [[the shining|movie]] + const str = `before [[the shining|movie]] {| ! h1 !! h2 || h3 |- @@ -21,7 +21,7 @@ after now * [[three]] * four ` - var links = wtf(str).links() + const links = wtf(str).links() t.equal(links.length, 3, 'found-all-links') t.ok( links.find((l) => l.text()), @@ -42,14 +42,14 @@ after now }) test('anchor-links', (t) => { - var str = `[[Doug Ford#Personal Life]]` - var link = wtf(str).links(0) + let str = `[[Doug Ford#Personal Life]]` + let link = wtf(str).links(0) t.equal(link.page(), 'Doug Ford', 'page1') t.equal(link.text(), undefined, 'text1') t.equal(link.anchor(), 'Personal Life', 'anchor1') str = `[[Toronto_Blue_Jays#Problems|Tranno J birds]]` - var doc = wtf(str) + const doc = wtf(str) link = doc.links(0) t.equal(link.page(), 'Toronto_Blue_Jays', 'page2') t.equal(link.text(), 'Tranno J birds', 'text2') @@ -83,9 +83,9 @@ test('title-case-links', (t) => { }) test('tricksy-links', (t) => { - var doc = wtf(`[[US]]9999.2`) + const doc = wtf(`[[US]]9999.2`) t.equal(doc.text(), 'US9999.2', 'link-nospace') - // var doc = wtf('then [[John Entwistle|John [Entwistle]]] and I'); + // const doc = wtf('then [[John Entwistle|John [Entwistle]]] and I'); // t.equal(doc.links(0).page, 'John Entwistle', 'page without bracket'); // t.equal(doc.links(0).text, 'John [Entwistle]', 'text with bracket'); t.end() diff --git a/tests/lists.test.js b/tests/lists.test.js index 8c56eb35..78e11c5f 100644 --- a/tests/lists.test.js +++ b/tests/lists.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('list-templates', function(t) { - var arr = [ +test('list-templates', function (t) { + const arr = [ [`pagelist`, `{{Pagelist|X1|X2|X3|X4|X5}}`], [`catlist`, `{{Catlist|1989|1990|1991|1992|1993}}`], [`br`, `{{br separated entries|entry1|entry2| }}`], @@ -17,7 +17,7 @@ test('list-templates', function(t) { * [[cow]] * [[sheep]] * [[pig]] - }}` + }}`, ], [ `bare anchored list`, @@ -27,12 +27,12 @@ test('list-templates', function(t) { |So on ... |Last entry -}}` - ] +}}`, + ], ] - arr.forEach(a => { - var doc = wtf(a[1]) - var len = doc.templates().length + arr.forEach((a) => { + const doc = wtf(a[1]) + const len = doc.templates().length t.equal(len, 0, a[0] + ' count') t.notEqual(doc.text(), '', a[0] + ' text exists') t.notEqual(doc.text(), a[1], a[0] + ' text changed') @@ -40,16 +40,16 @@ test('list-templates', function(t) { t.end() }) -test('collapsible list', function(t) { - var str = `{{Collapsible list +test('collapsible list', function (t) { + let str = `{{Collapsible list | title = [[European Free Trade Association]] members | [[Iceland]] | [[Liechtenstein]] | [[Norway]] | [[Switzerland]] }}` - var doc = wtf(str) - var tmpl = doc.templates(0) || {} + let doc = wtf(str) + let tmpl = doc.templates(0) || {} t.equal(tmpl.title, 'European Free Trade Association members', 'got title 1') t.equal(tmpl.list.length, 4, 'got list') t.equal(tmpl.list[1], 'Liechtenstein', 'got list member') @@ -77,10 +77,10 @@ test('collapsible list', function(t) { t.end() }) -test('unbulleted list', function(t) { - var str = `{{unbulleted list|first item|second item|third item|}}` - var doc = wtf(str) - var tmpl = doc.templates(0) || {} +test('unbulleted list', function (t) { + const str = `{{unbulleted list|first item|second item|third item|}}` + const doc = wtf(str) + const tmpl = doc.templates(0) || {} t.equal(tmpl.title, undefined, 'got title 3') t.equal(tmpl.list.length, 3, 'got list3') t.equal(tmpl.list[1], 'second item', 'got list member3') @@ -88,10 +88,10 @@ test('unbulleted list', function(t) { t.end() }) -test('ordered list', function(t) { - var str = `{{Ordered list|first item|second item|third item|}}` - var doc = wtf(str) - var tmpl = doc.templates(0) || {} +test('ordered list', function (t) { + const str = `{{Ordered list|first item|second item|third item|}}` + const doc = wtf(str) + const tmpl = doc.templates(0) || {} t.equal(tmpl.title, undefined, 'got title 4') t.equal(tmpl.list.length, 3, 'got list4') t.equal(tmpl.list[1], 'second item', 'got list member4') diff --git a/tests/math.test.js b/tests/math.test.js index 1fd3089c..b00cebab 100644 --- a/tests/math.test.js +++ b/tests/math.test.js @@ -1,10 +1,10 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('math-simple', t => { - var str = `hello {{math|big=1|1 + 2 {{=}} 3}} world` - var doc = wtf(str) - var tmpl = doc.templates(0) || {} +test('math-simple', (t) => { + let str = `hello {{math|big=1|1 + 2 {{=}} 3}} world` + let doc = wtf(str) + let tmpl = doc.templates(0) || {} t.equal(tmpl.formula, '1 + 2 = 3', 'tmpl formula') t.equal(doc.text(), 'hello\n\n1 + 2 = 3\n\nworld', 'text output') @@ -28,15 +28,15 @@ test('math-simple', t => { t.end() }) -test('math-weirder', t => { - var str = ` +test('math-weirder', (t) => { + const str = ` f(x) = egin{cases} 1 & -1 le x < 0 rac{1}{2} & x = 0 1 - x^2 & ext{otherwise} end{cases} ` - var doc = wtf(str) - var tmpl = doc.templates(0) || {} + const doc = wtf(str) + const tmpl = doc.templates(0) || {} t.ok(tmpl.formula.length > 10, 'tmpl formula') t.equal(doc.text(), '', 'no text output') t.end() diff --git a/tests/misc.test.js b/tests/misc.test.js index 7ebfd75f..8ea3d8f0 100644 --- a/tests/misc.test.js +++ b/tests/misc.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('small headings', t => { - var str = ` +test('small headings', (t) => { + const str = ` hello ===gdbserver=== hi there @@ -13,7 +13,7 @@ Displays memory at the specified virtual address using the specified format. ===xp=== here too ` - var sections = wtf(str).sections() + const sections = wtf(str).sections() t.equal(sections[1].title(), 'gdbserver', 'first heading exists') t.equal(sections[2].title(), 'x', 'x exists') t.ok(sections[3].title, 'xp', 'xp exists') @@ -21,8 +21,8 @@ here too t.end() }) -test('font-size', t => { - var str = 'hello {{small|(1995-1997)}} world' +test('font-size', (t) => { + let str = 'hello {{small|(1995-1997)}} world' t.equal(wtf(str).plaintext(), 'hello (1995-1997) world', '{{small}}') str = 'hello {{huge|world}}' @@ -33,10 +33,10 @@ test('font-size', t => { t.end() }) -test('external links', t => { - var str = `The [http://w110.bcn.cat/portal/site/Eixample] is the quarter designed` - var obj = wtf(str) - var link = obj.sentences(0).links(0) +test('external links', (t) => { + let str = `The [http://w110.bcn.cat/portal/site/Eixample] is the quarter designed` + let obj = wtf(str) + let link = obj.sentences(0).links(0) t.equal(link.text(), '', 'link-text') t.equal(link.site(), 'http://w110.bcn.cat/portal/site/Eixample', 'link-site') t.equal(link.type(), 'external', 'link-type') @@ -50,8 +50,8 @@ test('external links', t => { t.end() }) -test('misc templates', t => { - var arr = [ +test('misc templates', (t) => { + const arr = [ [`hello {{refn|group=groupname|name=name|Contents of the footnote}} world`, 'hello world'], [`hello {{tag|ref|content=haha}} world`, 'hello haha world'], [`{{convert|70|m}}`, '70 m'], @@ -80,16 +80,16 @@ test('misc templates', t => { [`{{hlist|Winner|Runner-up|Third place|item_style=color:blue;|indent=2}}`, 'Winner · Runner-up · Third place'], [ `{{block indent |1=The material to be indented here. May include markup, paragraph breaks, etc.}}`, - 'The material to be indented here. May include markup, paragraph breaks, etc.' + 'The material to be indented here. May include markup, paragraph breaks, etc.', ], [`{{Ordered list |entry1 |entry2| entry3 }}`, '1. entry1\n\n2. entry2\n\n3. entry3'], - [`{{unbulleted list|first item|second item|third item}}`, 'first item\n\nsecond item\n\nthird item'] + [`{{unbulleted list|first item|second item|third item}}`, 'first item\n\nsecond item\n\nthird item'], ] - arr.forEach(a => { - var str = wtf(a[0]).plaintext() + arr.forEach((a) => { + const str = wtf(a[0]).plaintext() t.equal(str, a[1], a[0].substr(2, 12).replace(/\|.*/, '')) }) - // var str = ` {{Monthyear}}`; - // var str = ` {{Time ago| Jan 6 2018|magnitude=weeks}}`; + // const str = ` {{Monthyear}}`; + // const str = ` {{Time ago| Jan 6 2018|magnitude=weeks}}`; t.end() }) diff --git a/tests/more-templates.test.js b/tests/more-templates.test.js index c104a792..50e1c7b7 100644 --- a/tests/more-templates.test.js +++ b/tests/more-templates.test.js @@ -1,10 +1,10 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('imdb', t => { - var str = `{{IMDb title | 0426883 | Alpha Dog }}` - var doc = wtf(str) - var obj = doc.templates(0) +test('imdb', (t) => { + let str = `{{IMDb title | 0426883 | Alpha Dog }}` + let doc = wtf(str) + let obj = doc.templates(0) t.equal(obj.template, 'imdb title', 'imdb') t.equal(obj.id, '0426883', 'id1') t.equal(obj.title, 'Alpha Dog', 'title') @@ -17,18 +17,18 @@ test('imdb', t => { t.end() }) -test('taxon', t => { - var str = `{{Taxon info|Felis|parent}}` - var doc = wtf(str) - var obj = doc.templates(0) +test('taxon', (t) => { + const str = `{{Taxon info|Felis|parent}}` + const doc = wtf(str) + const obj = doc.templates(0) t.equal(obj.taxon, 'Felis', 'taxon') t.end() }) -test('generic-list', t => { - var str = `{{Portal bar|portal 1|portal 2}}` - var doc = wtf(str) - var obj = doc.templates(0) +test('generic-list', (t) => { + const str = `{{Portal bar|portal 1|portal 2}}` + const doc = wtf(str) + const obj = doc.templates(0) t.equal(obj.template, 'portal bar', 'name') t.equal(obj.list[0], 'portal 1', 'list1') t.equal(obj.list[1], 'portal 2', 'list2') @@ -36,10 +36,10 @@ test('generic-list', t => { t.end() }) -test('redirect-list', t => { - var str = `{{Redirect|City of Toronto|the municipal government|Municipal government of Toronto|the historical part of the city prior to the 1998 amalgamation|Old Toronto}}` - var doc = wtf(str) - var obj = doc.templates(0) +test('redirect-list', (t) => { + const str = `{{Redirect|City of Toronto|the municipal government|Municipal government of Toronto|the historical part of the city prior to the 1998 amalgamation|Old Toronto}}` + const doc = wtf(str) + const obj = doc.templates(0) t.equal(obj.template, 'redirect', 'name') t.equal(obj.redirect, 'City of Toronto', 'main') t.equal(obj.links[0].page, 'Municipal government of Toronto', 'list1') @@ -48,15 +48,13 @@ test('redirect-list', t => { t.end() }) -test('templates-in-templates', t => { - var str = `{{marriage|[[Mileva Marić]]
|1903|1919|end=div}}
{{nowrap|{{marriage|[[Elsa Löwenthal]]
|1919|1936|end=died}}{{cite book |editor-last=Heilbron |editor-first=John L. |title=The Oxford Companion to the History of Modern Science |url=https://books.google.com/books?id=abqjP-_KfzkC&pg=PA233 |date=2003 |publisher=Oxford University Press |isbn=978-0-19-974376-6 |page=233}}{{sfnp|Pais|1982|p=301}}}}` - var ref = wtf(str) - .citations(0) - .json() +test('templates-in-templates', (t) => { + const str = `{{marriage|[[Mileva Marić]]
|1903|1919|end=div}}
{{nowrap|{{marriage|[[Elsa Löwenthal]]
|1919|1936|end=died}}{{cite book |editor-last=Heilbron |editor-first=John L. |title=The Oxford Companion to the History of Modern Science |url=https://books.google.com/books?id=abqjP-_KfzkC&pg=PA233 |date=2003 |publisher=Oxford University Press |isbn=978-0-19-974376-6 |page=233}}{{sfnp|Pais|1982|p=301}}}}` + const ref = wtf(str).citations(0).json() t.equal(ref.template, 'citation', 'cite-book') t.equal(ref.url, 'https://books.google.com/books?id=abqjP-_KfzkC&pg=PA233', 'url') t.equal(ref.isbn, '978-0-19-974376-6', 'isbn') - var templates = wtf(str).templates() + const templates = wtf(str).templates() t.equal(templates[0].template, 'marriage', 'marriage1') t.equal(templates[1].template, 'marriage', 'marriage2') t.equal(templates[1].spouse, 'Elsa Löwenthal', 'marriage-1-name') @@ -65,8 +63,8 @@ test('templates-in-templates', t => { t.end() }) -test('support-nowrap-in-infobox', t => { - var str = ` +test('support-nowrap-in-infobox', (t) => { + const str = ` {{Infobox scientist | name = Albert Einstein | image = Einstein 1921 by F Schmutzer - restoration.jpg @@ -76,17 +74,17 @@ test('support-nowrap-in-infobox', t => { | chiffre = {{nobr|912 millions}} }} ` - var infobox = wtf(str).infoboxes(0) - var data = infobox.json() + const infobox = wtf(str).infoboxes(0) + const data = infobox.json() t.equal(data.name.text, 'Albert Einstein', 'got infobox datad') t.equal(data.spouse.text, 'Elsa Löwenthal (m. 1919-1936)', 'got tricky marriage value') t.equal(data.chiffre.text, '912 millions', 'got infobox nobr') t.end() }) -test('inline-templates', t => { - var str = `he married {{marriage|[[Elsa Löwenthal]]
|1919|1936|end=died}} in Peterburough` - var doc = wtf(str) +test('inline-templates', (t) => { + let str = `he married {{marriage|[[Elsa Löwenthal]]
|1919|1936|end=died}} in Peterburough` + let doc = wtf(str) t.equal(doc.text(), 'he married Elsa Löwenthal (m. 1919-1936) in Peterburough', 'inline marriage text') str = `he married {{marriage|Johnny-boy}} in Peterburough` @@ -95,18 +93,18 @@ test('inline-templates', t => { t.end() }) -test('three-layer-templates', t => { - var str = `she married {{nowrap| {{nowrap| {{marriage|Johnny-boy}} }}}}` - var doc = wtf(str) +test('three-layer-templates', (t) => { + const str = `she married {{nowrap| {{nowrap| {{marriage|Johnny-boy}} }}}}` + const doc = wtf(str) t.equal(doc.text(), 'she married Johnny-boy', '3-template inline') t.equal(doc.templates(0).template, 'marriage', '3-template result') t.end() }) -test('austria-hungary', t => { - var str = `{{short description|Constitutional monarchic union from 1867 to October 1918}} {{For|modern relations|Austria{{ndash}}Hungary relations}} {{Use dmy dates|date=December 2014}} {{Infobox former country | native_name ={{native name|de|Österreichisch-Ungarische Monarchie}}
{{native name|hu|Osztrák-Magyar Monarchia}} | conventional_long_name = Austria-Hungary{{nobold|[[#Structure and name|↓]]}} | common_name= Austria{{ndash}}Hungary | continent=Europe | region = Central Europe | era= [[New Imperialism]]/[[World War I]] | status= | status_text= | year_start =1867 | year_end =1918 | date_start = 1 March | date_end = 11 November | p1 = Austrian Empire | flag_p1 = Flag of the Habsburg Monarchy.svg | s1 = Republic of German-Austria | s2 = Hungarian Democratic Republic | s3 = First Czechoslovak Republic | s4 = West Ukrainian People's Republic | s5 = Second Polish Republic | s6 = Kingdom of Romania | s7 = Kingdom of Serbs, Croats and Slovenes | s8 = Kingdom of Italy | flag_s1 = Flag of Austria.svg | flag_s2 = Flag of Hungary (1918-1919; 3-2 aspect ratio).svg | flag_s3 = Flag of the Czech Republic.svg | flag_s4 = Flag of the Ukranian State.svg | flag_s5 = Flag of Poland.svg | flag_s6 = Flag of Romania.svg | flag_s7 = Flag of Yugoslavia (1918–1943).svg | flag_s8 = Flag of Italy (1861-1946) crowned.svg | image_flag = Flag of Austria-Hungary (1869-1918).svg | flag_type = Civil Ensign | flag = List of Austrian flags | image_coat = Imperial Coat of Arms of the Empire of Austria.svg | symbol_type = Coat of arms | image_map = Austro-Hungarian Monarchy (1914).svg | image_map_caption = Austria-Hungary on the eve of [[World War I]] | national_motto = {{lang|la|Indivisibiliter ac Inseparabiliter}}
{{small|"Indivisibly and Inseparably"}} | national_anthem = {{lang|de|Gott erhalte Gott beschütze}}
{{small|"God shall save, God shall protect"}} | official_languages = [[Austrian German|German]], [[Hungarian language|Hungarian]]Fisher, Gilman. [https://books.google.com/?id=TLkUAAAAYAAJ&pg=PA47 ''The Essentials of Geography for School Year 1888–1889'', p. 47]. New England Publishing Company (Boston), 1888. Retrieved 20 August 2014. | common_languages = [[Czech language|Czech]], [[Croatian language|Croatian]], [[Italian language|Italian]], [[Polish language|Polish]], [[Romani language|Romani]], [[Romanian language|Romanian]], [[Rusyn language|Rusyn]], [[Serbian language|Serbian]], [[Slovak language|Slovak]], [[Slovene language|Slovene]], [[Ukrainian language|Ukrainian]], and [[Yiddish language|Yiddish]]{{refn|From the ''Encyclopædia Britannica'' (1878), although note that ''this'' "Romani" refers to the language of those described by the ''EB'' as "Gypsies"; the ''EB''{{'}}s "Romani or Wallachian" refers to what is today known as Romanian; Rosyn and Ukrainian correspond to dialects of what the ''EB'' refers to as "[[Ruthenian language|Ruthenian]]"; and Yiddish was the common language of the [[Austrian Jews]], although [[Hebrew language|Hebrew]] was also known by many.}} | religion = 76.6% [[Catholic]] (incl. 64–66% [[Latin Church|Latin]] & 10–12% [[Eastern Catholic|Eastern]])
8.9% [[Protestantism|Protestant]] ([[Lutheranism|Lutheran]], [[Calvinism|Reformed]], [[Unitarianism|Unitarian]])
8.7% [[Eastern Orthodox Church|Orthodox]]
4.4% [[Jewish]]
1.3% [[Muslim]]
{{small|(1910 censusGeographischer Atlas zur Vaterlandskunde, 1911, Tabelle 3.)}} | capital = [[Vienna]] (main)
[[Budapest]] | demonym = Austro-Hungarian | government_type = [[Dual monarchy|Dual]] [[Parliamentary system|parliamentary]] [[constitutional monarchy]] [[personal union]], under a [[liberal autocracy]] in Austria, and parliamentarism in Hungary | title_leader = [[Emperor of Austria|Emperor]]-[[King of Hungary|King]] | leader1 = [[Franz Joseph I of Austria|Franz Joseph I]] | year_leader1 = 1867–1916 | leader2 = [[Charles I of Austria|Charles I & IV]] | year_leader2 = 1916–1918 | representative1 = [[Count Friedrich Ferdinand von Beust|Friedrich von Beust]] (first) | representative2 = [[Heinrich Lammasch]] (last) | year_representative1 = 1867 | year_representative2 = 1918 | title_representative = [[Minister-President of Austria|Minister-President
of Austria]] | deputy1 = [[Gyula Andrássy]] (first) | deputy2 = [[János Hadik]] (last) | year_deputy1 = 1867–1871 | year_deputy2 = 1918 | title_deputy = [[List of Prime Ministers of Hungary|Prime Minister
of Hungary]] | legislature = 2 national legislatures: | type_house1 = [[Imperial Council (Austria)|Imperial Council]] | house1 = [[Herrenhaus (Austria)|Herrenhaus]]
[[Abgeordnetenhaus (Austria)|Abgeordnetenhaus]] | type_house2 = [[Diet of Hungary]] | house2 = [[House of Magnates of Hungary|House of Magnates]]
[[House of Representatives of Hungary|House of Representatives]] | stat_area1 = 676,615 | stat_area2 = 681,727 | stat_pop1 = 52,800,000 | stat_year1 = 1914 | stat_year2 = 1918 | event_start =[[Austro-Hungarian Compromise of 1867|1867 Compromise]] | event_end =[[Aftermath of World War I#Austria-Hungary|Dissolution]] | event_post = Treaties of [[Treaty of Saint-Germain-en-Laye (1919)|Saint-Germain-en-Laye]] and [[Treaty of Trianon|Trianon]] | date_post = 10 September 1919 and 4 June 1920 | event1 = [[Czechoslovakia|Czechoslovak]] indep. | date_event1 = 28 October 1918 | event2 = [[State of Slovenes, Croats and Serbs|State of SCS]] indep. | date_event2 = 29 October 1918 | event3 = [[Banat, Bačka and Baranja|Vojvodina]] lost to [[Kingdom of Serbia|Serbia]] | date_event3 = 25 November 1918 | currency = {{plainlist| * [[Austro-Hungarian gulden|Gulden]] (to 1892) * [[Austro-Hungarian krone|Krone]] (1892–1918)}} | iso3166code = omit | today = {{Collapsible list |titlestyle=font-weight:normal; background:transparent; text-align:left;|title= |{{flag|Austria}}|{{flag|Bosnia and Herzegovina}}|{{flag|China}}see [[Concessions in Tianjin#Austro-Hungarian concession (1901–1917)]]|{{flag|Croatia}}|{{flag|Czech Republic}}|{{flag|Hungary}}|{{flag|Italy}}|{{flag|Montenegro}}|{{flag|Poland}}|{{flag|Romania}}|{{flag|Serbia}}|{{flag|Slovakia}}|{{flag|Slovenia}}|{{flag|Ukraine}}}} }} '''Austria-Hungary''', often referred to as the '''Austro-Hungarian Empire''' or the '''Dual Monarchy'''` +test('austria-hungary', (t) => { + const str = `{{short description|Constitutional monarchic union from 1867 to October 1918}} {{For|modern relations|Austria{{ndash}}Hungary relations}} {{Use dmy dates|date=December 2014}} {{Infobox former country | native_name ={{native name|de|Österreichisch-Ungarische Monarchie}}
{{native name|hu|Osztrák-Magyar Monarchia}} | conventional_long_name = Austria-Hungary{{nobold|[[#Structure and name|↓]]}} | common_name= Austria{{ndash}}Hungary | continent=Europe | region = Central Europe | era= [[New Imperialism]]/[[World War I]] | status= | status_text= | year_start =1867 | year_end =1918 | date_start = 1 March | date_end = 11 November | p1 = Austrian Empire | flag_p1 = Flag of the Habsburg Monarchy.svg | s1 = Republic of German-Austria | s2 = Hungarian Democratic Republic | s3 = First Czechoslovak Republic | s4 = West Ukrainian People's Republic | s5 = Second Polish Republic | s6 = Kingdom of Romania | s7 = Kingdom of Serbs, Croats and Slovenes | s8 = Kingdom of Italy | flag_s1 = Flag of Austria.svg | flag_s2 = Flag of Hungary (1918-1919; 3-2 aspect ratio).svg | flag_s3 = Flag of the Czech Republic.svg | flag_s4 = Flag of the Ukranian State.svg | flag_s5 = Flag of Poland.svg | flag_s6 = Flag of Romania.svg | flag_s7 = Flag of Yugoslavia (1918–1943).svg | flag_s8 = Flag of Italy (1861-1946) crowned.svg | image_flag = Flag of Austria-Hungary (1869-1918).svg | flag_type = Civil Ensign | flag = List of Austrian flags | image_coat = Imperial Coat of Arms of the Empire of Austria.svg | symbol_type = Coat of arms | image_map = Austro-Hungarian Monarchy (1914).svg | image_map_caption = Austria-Hungary on the eve of [[World War I]] | national_motto = {{lang|la|Indivisibiliter ac Inseparabiliter}}
{{small|"Indivisibly and Inseparably"}} | national_anthem = {{lang|de|Gott erhalte Gott beschütze}}
{{small|"God shall save, God shall protect"}} | official_languages = [[Austrian German|German]], [[Hungarian language|Hungarian]]Fisher, Gilman. [https://books.google.com/?id=TLkUAAAAYAAJ&pg=PA47 ''The Essentials of Geography for School Year 1888–1889'', p. 47]. New England Publishing Company (Boston), 1888. Retrieved 20 August 2014. | common_languages = [[Czech language|Czech]], [[Croatian language|Croatian]], [[Italian language|Italian]], [[Polish language|Polish]], [[Romani language|Romani]], [[Romanian language|Romanian]], [[Rusyn language|Rusyn]], [[Serbian language|Serbian]], [[Slovak language|Slovak]], [[Slovene language|Slovene]], [[Ukrainian language|Ukrainian]], and [[Yiddish language|Yiddish]]{{refn|From the ''Encyclopædia Britannica'' (1878), although note that ''this'' "Romani" refers to the language of those described by the ''EB'' as "Gypsies"; the ''EB''{{'}}s "Romani or Wallachian" refers to what is today known as Romanian; Rosyn and Ukrainian correspond to dialects of what the ''EB'' refers to as "[[Ruthenian language|Ruthenian]]"; and Yiddish was the common language of the [[Austrian Jews]], although [[Hebrew language|Hebrew]] was also known by many.}} | religion = 76.6% [[Catholic]] (incl. 64–66% [[Latin Church|Latin]] & 10–12% [[Eastern Catholic|Eastern]])
8.9% [[Protestantism|Protestant]] ([[Lutheranism|Lutheran]], [[Calvinism|Reformed]], [[Unitarianism|Unitarian]])
8.7% [[Eastern Orthodox Church|Orthodox]]
4.4% [[Jewish]]
1.3% [[Muslim]]
{{small|(1910 censusGeographischer Atlas zur Vaterlandskunde, 1911, Tabelle 3.)}} | capital = [[Vienna]] (main)
[[Budapest]] | demonym = Austro-Hungarian | government_type = [[Dual monarchy|Dual]] [[Parliamentary system|parliamentary]] [[constitutional monarchy]] [[personal union]], under a [[liberal autocracy]] in Austria, and parliamentarism in Hungary | title_leader = [[Emperor of Austria|Emperor]]-[[King of Hungary|King]] | leader1 = [[Franz Joseph I of Austria|Franz Joseph I]] | year_leader1 = 1867–1916 | leader2 = [[Charles I of Austria|Charles I & IV]] | year_leader2 = 1916–1918 | representative1 = [[Count Friedrich Ferdinand von Beust|Friedrich von Beust]] (first) | representative2 = [[Heinrich Lammasch]] (last) | year_representative1 = 1867 | year_representative2 = 1918 | title_representative = [[Minister-President of Austria|Minister-President
of Austria]] | deputy1 = [[Gyula Andrássy]] (first) | deputy2 = [[János Hadik]] (last) | year_deputy1 = 1867–1871 | year_deputy2 = 1918 | title_deputy = [[List of Prime Ministers of Hungary|Prime Minister
of Hungary]] | legislature = 2 national legislatures: | type_house1 = [[Imperial Council (Austria)|Imperial Council]] | house1 = [[Herrenhaus (Austria)|Herrenhaus]]
[[Abgeordnetenhaus (Austria)|Abgeordnetenhaus]] | type_house2 = [[Diet of Hungary]] | house2 = [[House of Magnates of Hungary|House of Magnates]]
[[House of Representatives of Hungary|House of Representatives]] | stat_area1 = 676,615 | stat_area2 = 681,727 | stat_pop1 = 52,800,000 | stat_year1 = 1914 | stat_year2 = 1918 | event_start =[[Austro-Hungarian Compromise of 1867|1867 Compromise]] | event_end =[[Aftermath of World War I#Austria-Hungary|Dissolution]] | event_post = Treaties of [[Treaty of Saint-Germain-en-Laye (1919)|Saint-Germain-en-Laye]] and [[Treaty of Trianon|Trianon]] | date_post = 10 September 1919 and 4 June 1920 | event1 = [[Czechoslovakia|Czechoslovak]] indep. | date_event1 = 28 October 1918 | event2 = [[State of Slovenes, Croats and Serbs|State of SCS]] indep. | date_event2 = 29 October 1918 | event3 = [[Banat, Bačka and Baranja|Vojvodina]] lost to [[Kingdom of Serbia|Serbia]] | date_event3 = 25 November 1918 | currency = {{plainlist| * [[Austro-Hungarian gulden|Gulden]] (to 1892) * [[Austro-Hungarian krone|Krone]] (1892–1918)}} | iso3166code = omit | today = {{Collapsible list |titlestyle=font-weight:normal; background:transparent; text-align:left;|title= |{{flag|Austria}}|{{flag|Bosnia and Herzegovina}}|{{flag|China}}see [[Concessions in Tianjin#Austro-Hungarian concession (1901–1917)]]|{{flag|Croatia}}|{{flag|Czech Republic}}|{{flag|Hungary}}|{{flag|Italy}}|{{flag|Montenegro}}|{{flag|Poland}}|{{flag|Romania}}|{{flag|Serbia}}|{{flag|Slovakia}}|{{flag|Slovenia}}|{{flag|Ukraine}}}} }} '''Austria-Hungary''', often referred to as the '''Austro-Hungarian Empire''' or the '''Dual Monarchy'''` - var doc = wtf(str) + const doc = wtf(str) t.equal( doc.text(), diff --git a/tests/nesting.test.js b/tests/nesting.test.js index abac3699..06994837 100644 --- a/tests/nesting.test.js +++ b/tests/nesting.test.js @@ -1,34 +1,26 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') wtf.extend((models, templates) => { templates.trynest = 0 }) -test('nesting-test', t => { +test('nesting-test', (t) => { let str = `{{tryNest|one}}` - let out = wtf(str) - .text() - .trim() + let out = wtf(str).text().trim() t.equal(out, 'one', 'nest-1') str = `{{tryNest|{{tryNest|two}}}}` - out = wtf(str) - .text() - .trim() + out = wtf(str).text().trim() t.equal(out, 'two', 'nest-2') str = `{{tryNest|{{tryNest|{{tryNest|three}}}}}}` - out = wtf(str) - .text() - .trim() + out = wtf(str).text().trim() t.equal(out, 'three', 'nest-3') str = `{{tryNest|{{tryNest|{{tryNest|{{tryNest|four}}}}}}}}` - out = wtf(str) - .text() - .trim() + out = wtf(str).text().trim() t.equal(out, 'four', 'nest-4') t.end() }) diff --git a/tests/options.test.js b/tests/options.test.js index 461ec3a0..2f3cc4aa 100644 --- a/tests/options.test.js +++ b/tests/options.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var readFile = require('./lib/_cachedPage') +const test = require('tape') +const readFile = require('./lib/_cachedPage') -test('royal_cinema options', t => { - var doc = readFile('royal_cinema') +test('royal_cinema options', (t) => { + const doc = readFile('royal_cinema') t.equal(doc.images().length, 1, 'image-length') t.equal(doc.categories().length, 4, 'category-length') t.equal(doc.citations().length, 4, 'citations-length') @@ -12,7 +12,7 @@ test('royal_cinema options', t => { categories: false, citations: false, images: false, - infoboxes: false + infoboxes: false, }) t.equal(data.images, undefined, 'post-image-length') t.equal(data.categories, undefined, 'post-category-length') @@ -21,8 +21,8 @@ test('royal_cinema options', t => { t.end() }) -test('other-pages', t => { - var pages = [ +test('other-pages', (t) => { + const pages = [ 'earthquakes', 'United-Kingdom', 'Chemical-biology', @@ -31,18 +31,18 @@ test('other-pages', t => { 'Wendy-Mogel', 'Damphu-drum', 'Direct-representation', - 'al_Haytham' + 'al_Haytham', ] - pages.forEach(page => { - var doc = readFile(page) + pages.forEach((page) => { + const doc = readFile(page) t.notEqual(doc.categories().length, 0, page + '-category-length') t.notEqual(doc.citations().length, 0, page + '-citations-length') }) t.end() }) -test('turn all options off', t => { - var options = { +test('turn all options off', (t) => { + const options = { sections: false, paragraphs: false, sentences: false, @@ -50,10 +50,10 @@ test('turn all options off', t => { categories: false, coordinates: false, infoboxes: false, - pageID: false + pageID: false, } - var doc = readFile('United-Kingdom') - var out = JSON.stringify(doc.json(options)) + const doc = readFile('United-Kingdom') + const out = JSON.stringify(doc.json(options)) t.equal(out, '{}', 'json empty') t.end() diff --git a/tests/page.test.js b/tests/page.test.js index 2ba2d729..52852e48 100644 --- a/tests/page.test.js +++ b/tests/page.test.js @@ -1,42 +1,35 @@ -var test = require('tape') -var readFile = require('./lib/_cachedPage') +const test = require('tape') +const readFile = require('./lib/_cachedPage') -test('royal_cinema page', t => { - var doc = readFile('royal_cinema') +test('royal_cinema page', (t) => { + const doc = readFile('royal_cinema') t.equal(doc.infoboxes(0).template(), 'venue', 'venue template') t.equal(doc.sections(0).sentences().length, 10, 'sentence-length') t.equal(doc.categories().length, 4, 'cat-length') - t.equal( - doc - .infoboxes(0) - .get('opened') - .text(), - '1939', - 'year-string' - ) + t.equal(doc.infoboxes(0).get('opened').text(), '1939', 'year-string') // t.equal(doc.infoboxes(0).keyValue()['opened'], 1939, 'year-number'); t.end() }) -test('toronto_star page', t => { - var doc = readFile('toronto_star') +test('toronto_star page', (t) => { + const doc = readFile('toronto_star') t.equal(doc.infoboxes(0).data.publisher.text(), 'John D. Cruickshank', 'publisher.text') t.equal(doc.infoboxes(0).template(), 'newspaper', 'newspaper template') - var section = doc.sections('history') + const section = doc.sections('history') t.equal(section.sentences().length, 21, 'sentence-length') t.equal(doc.categories().length, 6, 'sentence-length') // t.equal(doc.text['Notable cartoonists'], undefined, t); t.end() }) -test('toronto_star with list', t => { - var doc = readFile('toronto_star') +test('toronto_star with list', (t) => { + const doc = readFile('toronto_star') t.equal(doc.isRedirect(), false, 'not-redirect') t.equal(doc.isDisambig(), false, 'not-disambig') t.equal(doc.infoboxes(0).data.publisher.text(), 'John D. Cruickshank', 'publisher.text') t.equal(doc.infoboxes(0).template(), 'newspaper', 'newspaper template') - var section = doc.sections('history') + let section = doc.sections('history') t.equal(section.sentences().length, 21, 'history-length') t.equal(doc.categories().length, 6, 'cat-length') section = doc.sections('Notable cartoonists') @@ -44,8 +37,8 @@ test('toronto_star with list', t => { t.end() }) -test('jodie_emery', t => { - var doc = readFile('jodie_emery') +test('jodie_emery', (t) => { + const doc = readFile('jodie_emery') t.equal(doc.isRedirect(), false, 'not-redirect') t.equal(doc.infoboxes(0).data.nationality.text(), 'Canadian', 'nationality') t.equal(doc.infoboxes(0).template(), 'person', 'person template') @@ -56,8 +49,8 @@ test('jodie_emery', t => { t.end() }) -test('statoil', t => { - var doc = readFile('statoil') +test('statoil', (t) => { + const doc = readFile('statoil') t.equal(doc.isRedirect(), false, 'not-redirect') t.equal(doc.infoboxes(0).data.namn.text(), 'Statoil ASA', 'name') t.equal(doc.infoboxes(0).type(), 'verksemd', 'template') @@ -69,8 +62,8 @@ test('statoil', t => { t.end() }) -test('raith rovers', t => { - var doc = readFile('raith_rovers') +test('raith rovers', (t) => { + const doc = readFile('raith_rovers') t.equal(doc.isRedirect(), false, 'not-redirect') t.equal(doc.infoboxes(0).data.clubname.text(), 'Raith Rovers', 'clubname') t.equal(doc.categories().length, 10, 'cat-length') @@ -84,12 +77,12 @@ test('raith rovers', t => { t.end() }) -test('mark behr', t => { - var doc = readFile('Mark-Behr') +test('mark behr', (t) => { + const doc = readFile('Mark-Behr') t.equal(doc.isRedirect(), false, 'not-redirect') t.equal(doc.infoboxes().length, 1, 'got infobox') t.equal(doc.categories().length, 3, 'cat-length') - var s = doc.sections('publikasies') + let s = doc.sections('publikasies') t.equal(s.tables().length, 1, 'got table') t.equal(doc.tables(0).links().length, 0, 'table has no links') t.equal(s.lists().length, 0, 'no list') diff --git a/tests/paragraphs.test.js b/tests/paragraphs.test.js index feca424f..437cf7f4 100644 --- a/tests/paragraphs.test.js +++ b/tests/paragraphs.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('references', t => { - var str = `John smith was a comedian{{cite web |url=http://supercool.com |title=John Smith sure was |last= |first= |date= |website= |publisher= |access-date= |quote=}} +test('references', (t) => { + const str = `John smith was a comedian{{cite web |url=http://supercool.com |title=John Smith sure was |last= |first= |date= |website= |publisher= |access-date= |quote=}} and tap-dance pioneer. He was born in glasgowirelandtimes. This is paragraph two.{{cite web |url=http://paragraphtwo.net}} It is the same deal. @@ -11,7 +11,7 @@ This is paragraph two.{{cite web |url=http://paragraphtwo.net}} It is Here is the third paragraph. Nobody knows if this will work.[http://commonsense.com/everybody|says everybody] ` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.sections().length, 2, 'sections') t.equal(doc.paragraphs().length, 3, 'paragraphs') t.equal(doc.references().length, 4, 'all references') @@ -19,8 +19,8 @@ Here is the third paragraph. Nobody knows if this will work.[http://commons t.end() }) -test('sentence/paragraphs by newlines', t => { - var doc = wtf(`Leading text +test('sentence/paragraphs by newlines', (t) => { + const doc = wtf(`Leading text Closing remark`) t.equal(doc.paragraphs().length, 2, '2 paragraphs') @@ -28,19 +28,19 @@ Closing remark`) t.end() }) -test('bring newlines to plaintext', t => { - var str = `hello +test('bring newlines to plaintext', (t) => { + const str = `hello world` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.text(), 'hello\n\nworld', 'plaintext has one newline') t.end() }) -test('newlines in templates', t => { - var str = `hello world{{cite web |url=http://coolc.om |title=whoa hello |last= |first= +test('newlines in templates', (t) => { + const str = `hello world{{cite web |url=http://coolc.om |title=whoa hello |last= |first= @@ -50,15 +50,15 @@ test('newlines in templates', t => { |quote=}} Paragraph two!` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.paragraphs().length, 2, 'paragraphs') t.equal(doc.paragraphs(0).text(), 'hello world', 'first paragraph') t.equal(doc.paragraphs(1).text(), 'Paragraph two!', '2nd paragraph') t.end() }) -test('newlines in tables', t => { - var str = `hello world. Up here. +test('newlines in tables', (t) => { + const str = `hello world. Up here. {| class="wikitable" |- @@ -80,7 +80,7 @@ test('newlines in tables', t => { |} Second paragraph here.` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.paragraphs().length, 2, 'paragraphs') t.equal(doc.paragraphs(0).text(), 'hello world. Up here.', 'first paragraph') t.equal(doc.paragraphs(1).text(), 'Second paragraph here.', '2nd paragraph') @@ -88,8 +88,8 @@ Second paragraph here.` t.end() }) -test('cyrillic symbols', t => { - var str = `== Заголовок == +test('cyrillic symbols', (t) => { + const str = `== Заголовок == Соединённые По «окончании» @@ -101,7 +101,7 @@ test('cyrillic symbols', t => { Спустя В напряжённом` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.paragraphs().length, 6, 'paragraphs') t.equal(doc.paragraphs(0).text(), 'Соединённые', '1 paragraph') t.equal(doc.paragraphs(1).text(), 'По «окончании»', '2 paragraph') diff --git a/tests/redirect.test.js b/tests/redirect.test.js index e4cc328a..8145d7a4 100644 --- a/tests/redirect.test.js +++ b/tests/redirect.test.js @@ -1,12 +1,12 @@ -var test = require('tape') -var readFile = require('./lib/_cachedPage') -var wtf = require('./lib') +const test = require('tape') +const readFile = require('./lib/_cachedPage') +const wtf = require('./lib') -test('redirect json', t => { - var str = `#REDIRECT [[Toronto Blue Jays#Stadium|Tranno]]` - var doc = wtf(str) +test('redirect json', (t) => { + const str = `#REDIRECT [[Toronto Blue Jays#Stadium|Tranno]]` + const doc = wtf(str) t.equal(doc.isRedirect(), true, 'is-redirect') - var obj = doc.json() + const obj = doc.json() t.equal(obj.isRedirect, true, 'json-has-redirect') t.equal(obj.redirectTo.page, 'Toronto Blue Jays', 'redirect page') t.equal(obj.redirectTo.anchor, 'Stadium', 'redirect anchor') @@ -14,16 +14,16 @@ test('redirect json', t => { t.end() }) -test('is-redirect', t => { - var doc = readFile('redirect') +test('is-redirect', (t) => { + const doc = readFile('redirect') t.equal(doc.isRedirect(), true, 'is-redirect') // t.equal(doc.links(0).page, 'Toronto', 'redirect-place'); t.equal(doc.infoboxes(0), undefined, t) t.end() }) -test('redirect-newlines', t => { - var doc = wtf(` +test('redirect-newlines', (t) => { + const doc = wtf(` #REDIRECT [[TORONTO]] `) @@ -33,8 +33,8 @@ test('redirect-newlines', t => { t.end() }) -test('redirect-extra-stuff', t => { - var doc = wtf(`#REDIRECT [[Wikipedia:Bug reports and feature requests]] +test('redirect-extra-stuff', (t) => { + const doc = wtf(`#REDIRECT [[Wikipedia:Bug reports and feature requests]] {{Redirect category shell|1= {{R to project namespace}} @@ -45,9 +45,9 @@ test('redirect-extra-stuff', t => { t.end() }) -test('long redirects', t => { - var str = `#REDIRECT [[List of Directors and Commissioners-General of the United Nations Relief and Works Agency for Palestine Refugees in the Near East]]` - var doc = wtf(str) +test('long redirects', (t) => { + let str = `#REDIRECT [[List of Directors and Commissioners-General of the United Nations Relief and Works Agency for Palestine Refugees in the Near East]]` + let doc = wtf(str) t.equal(doc.isRedirect(), true, 'isredirect') t.equal( doc.redirectsTo().page, @@ -74,9 +74,9 @@ test('long redirects', t => { t.end() }) -test('redirect output', t => { - var str = `#REDIRECT [[Toronto Blue Jays#Stadium|Tranno]]` - var doc = wtf(str) +test('redirect output', (t) => { + const str = `#REDIRECT [[Toronto Blue Jays#Stadium|Tranno]]` + const doc = wtf(str) t.equal(doc.text(), '', 'text') // t.equal(doc.markdown(), '↳ [Tranno](./Toronto_Blue_Jays#Stadium)', 'markdown') // t.equal(doc.latex(), '↳ \\href{./Toronto_Blue_Jays#Stadium}{Tranno}', 'latex') diff --git a/tests/reference.test.js b/tests/reference.test.js index 64eb41c6..98b1f0c3 100644 --- a/tests/reference.test.js +++ b/tests/reference.test.js @@ -1,11 +1,11 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('basic-citation', t => { - var str = `Emery is a vegetarian,{{cite web|title=The princess of pot|url=http://thewalrus.ca/the-princess-of-pot/}}` - var arr = wtf(str) +test('basic-citation', (t) => { + const str = `Emery is a vegetarian,{{cite web|title=The princess of pot|url=http://thewalrus.ca/the-princess-of-pot/}}` + const arr = wtf(str) .citations() - .map(c => c.json()) + .map((c) => c.json()) t.equal(arr.length, 1, 'found-one-citation') t.equal(arr[0].type, 'web', 'cite web') t.equal(arr[0].title, 'The princess of pot', 'title') @@ -13,12 +13,12 @@ test('basic-citation', t => { t.end() }) -test('complex-citation', t => { - var str = `Emery is a vegetarian,{{ cite web|foo = bar +test('complex-citation', (t) => { + const str = `Emery is a vegetarian,{{ cite web|foo = bar | url=http://cool.com/?fun=cool/}}` - var arr = wtf(str) + const arr = wtf(str) .citations() - .map(c => c.json()) + .map((c) => c.json()) t.equal(arr.length, 1, 'found-one-citation') t.equal(arr[0].type, 'web', 'cite web') t.equal(arr[0].foo, 'bar', 'foo') @@ -26,54 +26,54 @@ test('complex-citation', t => { t.end() }) -test('multiple-citations', t => { - var str = `hello {{citation |url=cool.com/?fun=yes/ }}{{CITE book |title=the killer and the cartoons }}` - var arr = wtf(str) +test('multiple-citations', (t) => { + const str = `hello {{citation |url=cool.com/?fun=yes/ }}{{CITE book |title=the killer and the cartoons }}` + const arr = wtf(str) .citations() - .map(c => c.json()) + .map((c) => c.json()) t.equal(arr.length, 2, 'found-two-citations') t.equal(arr[0].url, 'cool.com/?fun=yes/', 'url1') t.equal(arr[1].title, 'the killer and the cartoons', 'title2') t.end() }) -test('weird-harvard-citations', t => { - var str = `{{Harvnb|Selin|2008|p=}}{{cite web|url=https://www.thestar.com/news/city_hall/toronto2014election/2014/10/25/mayoral_candidate_john_tory_a_leader_from_childhood.html|title=Mayoral candidate John Tory a leader from childhood|newspaper=Toronto Star|date=October 25, 2014|first=Linda|last=Diebel|accessdate=October 28, 2014}}` - var arr = wtf(str) +test('weird-harvard-citations', (t) => { + const str = `{{Harvnb|Selin|2008|p=}}{{cite web|url=https://www.thestar.com/news/city_hall/toronto2014election/2014/10/25/mayoral_candidate_john_tory_a_leader_from_childhood.html|title=Mayoral candidate John Tory a leader from childhood|newspaper=Toronto Star|date=October 25, 2014|first=Linda|last=Diebel|accessdate=October 28, 2014}}` + const arr = wtf(str) .citations() - .map(c => c.json()) + .map((c) => c.json()) t.equal(arr.length, 2, 'found-two-citations') t.equal(arr[0].author, 'Selin', 'refn author') t.equal(arr[0].year, '2008', 'refn year') t.end() }) -test('crazy-long-citations', t => { - var str = `{{Begriffsklärungshinweis}} +test('crazy-long-citations', (t) => { + const str = `{{Begriffsklärungshinweis}} [[Datei:Michael Jackson in 1988.jpg|mini|Michael Jackson in [[Wien]] (1988)]] [[Datei:Michael Jackson signature.svg|rahmenlos|rechts|Michael Jacksons Unterschrift (2002)]] '''Michael Joseph "Einige Fans bestehen darauf, dass Michael Jacksons Zweitname ''Joe'' und nicht ''Joseph'' lautet. Aber Michael wurde Anfang der 1990er Jahre bei einer eidesstattlichen Aussage, bei der es um die Urheberrechte zu seinem Song ''Dangerous'' ging, gebeten, seinen vollen Namen auszusprechen, und er sagte klar und deutlich ''Michael Joseph Jackson''. In einigen seiner Ausweise (z. B. Führerschein, Motown-Mitgliedskarte) stand zwar ''Joe'' (was des Öfteren für Verwirrung sorgte), aber ''Joe'' ist die Abkürzung von ''Joseph''. Die Staatsanwaltschaft übernahm beim Prozess 2005 diese Schreibweise, weil ''Joe'' in Michaels Ausweis vermerkt war, den sie im Dezember 2003 konfisziert hatten. In den Geburtsurkunden seiner drei Kinder steht als Name des Vaters ''Michael Joseph Jackson''. Auch in seiner Heiratsurkunde mit Lisa Marie Presley steht ''Joseph'' als Zweitname." Zitiert nach Pade & Risi, Make that change, S. 563 Jackson'''` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.citations().length, 1, 'found-one-citations') t.equal(doc.text(), 'Michael Joseph Jackson', 'ref removal good') t.equal(doc.images().length, 2, 'got both images') t.end() }) -test('inline-test', t => { - var str = ` {{cite gnis|id=1145117|name=Little Butte Creek|entrydate=November 28, 1980|accessdate=September 26, 2009}} +test('inline-test', (t) => { + const str = ` {{cite gnis|id=1145117|name=Little Butte Creek|entrydate=November 28, 1980|accessdate=September 26, 2009}} * {{cite journal|url=https://nrimp.dfw.state.or.us/web%20stores/data%20libraries/files/Watershed%20Councils/Watershed%20Councils_311_DOC_200-041Assess.zip|format=[[Zip (file format)|ZIP]]|publisher=Little Butte Creek Watershed Council|title=Little Butte Creek Watershed Assessment|date=August 2003|accessdate=September 20, 2009|}} ` - var refs = wtf(str) + const refs = wtf(str) .references() - .map(r => r.json()) + .map((r) => r.json()) t.equal(refs.length, 2, 'got both refs') t.equal(refs[0].entrydate, 'November 28, 1980', 'got data') t.equal(refs[1].date, 'August 2003', 'got data 2') t.end() }) // test('inline-test', t => { -// var str = `"Through Magic Doorways".[http://www.imdb.com/name/nm3225194/ Allen Morris IMDb profile] `; -// var arr = wtf(str).citations(); +// const str = `"Through Magic Doorways".[http://www.imdb.com/name/nm3225194/ Allen Morris IMDb profile] `; +// const arr = wtf(str).citations(); // t.equal(arr.length, 1, 'found-inline-citations'); // t.equal(arr[0].links(0).site, 'http://www.imdb.com/name/nm3225194/', 'inline-url'); // t.equal(arr[0].text(), 'Allen Morris IMDb profile', 'inline-text'); @@ -81,16 +81,16 @@ test('inline-test', t => { // }); // // test('inline-test2', t => { -// var str = `in 1826.Brake (2009) `; -// var arr = wtf(str).citations(); +// const str = `in 1826.Brake (2009) `; +// const arr = wtf(str).citations(); // t.equal(arr.length, 1, 'found-inline-citations'); // t.equal(arr[0].text(), 'Brake (2009)', 'inline-text'); // t.end(); // }); // test('inline harder-citation', t => { -// var str = `Siobhan Chapman, {{ISBN|0-19-518767-9}}, [https://books.google.com/books?id=Vfr Google Print, p. 166] She continued her education after.`; -// var arr = wtf(str).citations(); +// const str = `Siobhan Chapman, {{ISBN|0-19-518767-9}}, [https://books.google.com/books?id=Vfr Google Print, p. 166] She continued her education after.`; +// const arr = wtf(str).citations(); // t.equal(arr.length, 1, 'found-one-citation'); // t.equal(arr[0].links(0).site, 'https://books.google.com/books?id=Vfr', 'fould late link'); // t.end(); diff --git a/tests/sections.test.js b/tests/sections.test.js index 39041189..d83e2586 100644 --- a/tests/sections.test.js +++ b/tests/sections.test.js @@ -1,14 +1,14 @@ -var wtf = require('./lib') -var test = require('tape') +const wtf = require('./lib') +const test = require('tape') test('remove wikitext from caption titles', function (t) { - var str = ` + const str = ` hello == {{anchor|Foo}} Foo [[Bar]] == this is working i believe that 5===true and y===false ` - var sections = wtf(str) + const sections = wtf(str) .sections() .map((s) => s.json()) t.equal(sections.length, 2, 'two-sections') @@ -18,18 +18,18 @@ i believe that 5===true and y===false }) test('catch indented first sentence', function (t) { - var str = `:hello one + const str = `:hello one ok now you start` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.text(), 'ok now you start\n * hello one') t.end() }) test('empty intro text', function (t) { - var str = `==English== + let str = `==English== how bout that ` - var sections = wtf(str) + let sections = wtf(str) .sections() .map((s) => s.title()) t.deepEqual(sections, ['English'], 'leading-section') diff --git a/tests/sentences.test.js b/tests/sentences.test.js index 4873aaff..b714e8b3 100644 --- a/tests/sentences.test.js +++ b/tests/sentences.test.js @@ -1,33 +1,33 @@ -var wtf = require('./lib') -var test = require('tape') +const wtf = require('./lib') +const test = require('tape') -test('abbreviation-check', function(t) { - var arr = [ +test('abbreviation-check', function (t) { + const arr = [ `known as J. Abrams.`, `known as J. J. Abrams.`, `known as '''J. J. Abrams'''`, - `known as '''J. J. Abrams.'''` + `known as '''J. J. Abrams.'''`, ] - arr.forEach(str => { - var doc = wtf(str) + arr.forEach((str) => { + const doc = wtf(str) t.equal(doc.sentences().length, 1, str) }) t.end() }) -test('tough sentence punctuation', function(t) { - var arr = [ +test('tough sentence punctuation', function (t) { + const arr = [ `he is credited as '''Mr. Lawrence''' and sometimes '''Doug Lawrence'''.`, `he is credited as '''[[Mr. Lawrence]]''' and sometimes '''[[Doug Lawrence]]'''.`, `he is credited as [[Mr. Lawrence]] and sometimes Doug Lawrence.`, `he is credited as [http://cool.com Mr. Lawrence] and sometimes Doug Lawrence.`, `he is credited as {{asdf}}Mr. Lawrence and sometimes Doug Lawrence.`, - `he is credited as Mr.{{asdf}} Lawrence and sometimes Doug Lawrence.` + `he is credited as Mr.{{asdf}} Lawrence and sometimes Doug Lawrence.`, // `he is credited as ([[Mr. Lawrence]]) and sometimes Doug Lawrence.`, // `he is credited as (''[[Mr. Lawrence]]'') and sometimes Doug Lawrence.`, ] arr.forEach((str, i) => { - var doc = wtf(str) + const doc = wtf(str) t.equal( doc.sentences(0).text(), 'he is credited as Mr. Lawrence and sometimes Doug Lawrence.', @@ -37,7 +37,7 @@ test('tough sentence punctuation', function(t) { t.end() }) -test('unicode sentences', function(t) { +test('unicode sentences', function (t) { //cyrillic let str = `Соединённые Штаты Америки, штат Вайоминг, шестидесятые годы. Молодые парни Эннис Дел Мар и Джек Твист, выросшие на бедных ранчо в разных концах штата, знакомятся при устройстве на сезонную работу: их нанимают пасти овец на высокогорных летних пастбищах у Горбатой горы, вдали от обжитых мест. Однажды ночью после немалого количества выпитого виски, укрывшись от холода в одной палатке, они вступают в сексуальную связь. Так начинается их роман. ` let arr = wtf(str).sentences() @@ -55,7 +55,7 @@ test('unicode sentences', function(t) { t.end() }) -test('unicode paragraphs', function(t) { +test('unicode paragraphs', function (t) { let str = `Соединённые Штаты Америки, штат Вайоминг, шестидесятые годы. Yellow lkjsdfö. diff --git a/tests/start-end.test.js b/tests/start-end.test.js index 2658afb9..1ec2b27c 100644 --- a/tests/start-end.test.js +++ b/tests/start-end.test.js @@ -1,8 +1,8 @@ -var wtf = require('./lib') -var test = require('tape') +const wtf = require('./lib') +const test = require('tape') -test('nba-start-end', function(t) { - var str = `hello world +test('nba-start-end', function (t) { + const str = `hello world {{NBA roster statistics start|team=Cleveland Cavaliers}} |- | style="text-align:left;"| {{sortname|Matthew|Dellavedova}} || 6 || 0 || 7.6 || .263 || .167 || .833 || 0.5 || 1.0 || 0.0 || 0.0 || 2.7 @@ -18,14 +18,14 @@ test('nba-start-end', function(t) { | style="text-align:left;"| {{sortname|Mo|Williams}} || 6 || 0 || 4.8 || .333 || .200 || .000 || 0.5 || 0.2 || 0.5 || 0.0 || 1.5 {{s-end}}` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.text(), 'hello world', 'text') t.equal(doc.templates().length, 1, 'got-template') t.end() }) -test('mlb-start-end', function(t) { - var str = `hello world +test('mlb-start-end', function (t) { + const str = `hello world {{MLB game log section|month=April|style=|hide=y}} |- style="background-color:#ffbbbb" | 1 || April 2 || @ [[Kansas City Royals|Royals]] || 7 – 1 || [[Gil Meche|Meche]] (1-0)|| '''[[Curt Schilling|Schilling]]''' (0-1) || || 41,257 || 0-1 @@ -39,21 +39,21 @@ test('mlb-start-end', function(t) { | 5 || April 7 || @ [[Texas Rangers (baseball)|Rangers]] || 8 – 2 || [[Kevin Millwood|Millwood]] (1-0) || '''[[Julián Tavárez|Tavárez]]''' (0-1) || ||40,865 || 2-3 |- style="background-color:#bbffbb" {{MLB game log section end}}` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.text(), 'hello world', 'text') t.equal(doc.templates().length, 1, 'got-template') t.end() }) -test('mlb-start-end-fancy', function(t) { - var str = `hello world +test('mlb-start-end-fancy', function (t) { + const str = `hello world {{MLB game log section|style={{Baseball secondary style|New York Yankees}}|stadium=y}} |- bgcolor=#fbb | [http://gd2.mlb.com/content/game/mlb/year_2018/month_10/day_05/gid_2018_10_05_nyamlb_bosmlb_1/boxscore_col.html 1] || October 5 || @ [[2018 Boston Red Sox season|Red Sox]] || 4−5 || [[Chris Sale|Sale]] (1–0) || '''[[J.A. Happ|Happ]]''' (0–1) || [[Craig Kimbrel|Kimbrel]] (1) || [[Fenway Park]] || 39,059 || 0–1 |- bgcolor=#bfb | [http://gd2.mlb.com/content/game/mlb/year_2018/month_10/day_06/gid_2018_10_06_nyamlb_bosmlb_1/boxscore_col.html 2] || October 6 || @ [[2018 Boston Red Sox season|Red Sox]] || 6−2 || '''[[Masahiro Tanaka|Tanaka]]''' (1–0) || [[David Price (baseball)|Price]] (0–1) || — || [[Fenway Park]] || 39,151 || 1−1 {{MLB game log section end}}` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.text(), 'hello world', 'text') t.equal(doc.templates().length, 1, 'got-template') let rows = doc.templates(0).data @@ -65,8 +65,8 @@ test('mlb-start-end-fancy', function(t) { t.end() }) -test('mma-start-end', function(t) { - var str = `hello world +test('mma-start-end', function (t) { + const str = `hello world {{MMA record start}} |- |{{no2}}Loss @@ -103,7 +103,7 @@ test('mma-start-end', function(t) { | {{end}}` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.text(), 'hello world', 'text') t.equal(doc.templates().length, 1, 'got-template') t.end() diff --git a/tests/stockexchange.test.js b/tests/stockexchange.test.js index 2c4875ab..7112c17a 100644 --- a/tests/stockexchange.test.js +++ b/tests/stockexchange.test.js @@ -1,185 +1,156 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('stock exchange only', function(t) { - var str = ` +test('stock exchange only', function (t) { + const str = ` {{Infobox settlement | traded_as = {{BSE}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'bse', 'found bse') t.end() }) -test('stock exchange with number', function(t) { - var str = ` +test('stock exchange with number', function (t) { + const str = ` {{Infobox settlement | traded_as = {{BSE|500800}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'bse: 500800', 'found bse with number') t.end() }) -test('stock exchange tokyo', function(t) { - var str = ` +test('stock exchange tokyo', function (t) { + const str = ` {{Infobox settlement | traded_as = {{tyo|9477}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'tyo: 9477', 'found tokyo') t.end() }) -test('stock exchange nyse', function(t) { - var str = ` +test('stock exchange nyse', function (t) { + const str = ` {{Infobox settlement | traded_as = {{nyse|MUFG}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'nyse: MUFG', 'found nyse') t.end() }) -test('stock exchange NASDAQ', function(t) { - var str = ` +test('stock exchange NASDAQ', function (t) { + const str = ` {{Infobox settlement | traded_as = {{NASDAQ|LYFT}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'nasdaq: LYFT', 'found NASDAQ') t.end() }) -test('stock exchange SSE in list', function(t) { - var str = ` +test('stock exchange SSE in list', function (t) { + const str = ` {{Infobox settlement | traded_as = {{ubl|{{SSE|122458}} (bond)|{{SSE|122470}} (bond)}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'sse: 122458 (bond)\n\nsse: 122470 (bond)', 'found stock SSE exchange in list') t.end() }) - -test('stock exchange EuronextParis', function(t) { - var str = ` +test('stock exchange EuronextParis', function (t) { + const str = ` {{Infobox settlement | traded_as = {{EuronextParis|MC|FR0000121014|XPAR}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'euronextparis: MC FR0000121014', 'found EuronextParis') t.end() }) -test('stock exchange BarbadosSE', function(t) { - var str = ` +test('stock exchange BarbadosSE', function (t) { + const str = ` {{Infobox settlement | traded_as = {{BarbadosSE|WIB}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'barbadosse: WIB', 'found BarbadosSE') t.end() }) -test('stock exchange Irish Stock Exchange', function(t) { - var str = ` +test('stock exchange Irish Stock Exchange', function (t) { + const str = ` {{Infobox settlement | traded_as = {{ise|TCO|isin=GB0008847096}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'ise: TCO', 'found Irish Stock Exchange') t.end() }) -test('stock exchange Market for Alternative Investment', function(t) { - var str = ` +test('stock exchange Market for Alternative Investment', function (t) { + const str = ` {{Infobox Company | traded_as={{MAI|UBIS}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'mai: UBIS', 'found Market for Alternative Investment') t.end() }) -test('stock exchange Market for Malta Stock Exchange', function(t) { - var str = ` +test('stock exchange Market for Malta Stock Exchange', function (t) { + const str = ` {{Infobox Company | traded_as={{Malta Stock Exchange|GO}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'malta stock exchange: GO', 'found Market for Malta Stock Exchange') t.end() }) -test('stock exchange Market for NewConnect', function(t) { - var str = ` +test('stock exchange Market for NewConnect', function (t) { + const str = ` {{Infobox Company | traded_as={{NewConnect|BLO|isin=PLBLOBR00014}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'newconnect: BLO', 'found Market for NewConnect') t.end() }) -test('stock exchange Market for Grey Market', function(t) { - var str = ` +test('stock exchange Market for Grey Market', function (t) { + const str = ` {{Infobox Company | traded_as={{OTC Grey|ZAAP}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'otc grey: ZAAP', 'found Market for Grey Market') t.end() }) -test('stock exchange Market for Expert Market', function(t) { - var str = ` +test('stock exchange Market for Expert Market', function (t) { + const str = ` {{Infobox Company | traded_as={{OTC Expert|GNPR}} }} ` - let obj = wtf(str) - .infobox(0) - .keyValue() + let obj = wtf(str).infobox(0).keyValue() t.equal(obj[`traded_as`], 'otc expert: GNPR', 'found Market for Expert Market') t.end() }) diff --git a/tests/stress.test.js b/tests/stress.test.js index 9685e821..1d5eede0 100644 --- a/tests/stress.test.js +++ b/tests/stress.test.js @@ -1,15 +1,15 @@ -var test = require('tape') -var readFile = require('./lib/_cachedPage') +const test = require('tape') +const readFile = require('./lib/_cachedPage') function isCyclic(json) { - var seenObjects = [] + const seenObjects = [] function detect(obj) { if (obj && typeof obj === 'object') { if (seenObjects.indexOf(obj) !== -1) { return true } seenObjects.push(obj) - for (var key in obj) { + for (const key in obj) { if (obj.hasOwnProperty(key) && detect(obj[key])) { // console.log(obj, 'cycle at ' + key) return true @@ -21,8 +21,8 @@ function isCyclic(json) { return detect(json) } -test('stress-test-en', t => { - var arr = [ +test('stress-test-en', (t) => { + const arr = [ '2008-British-motorcycle-Grand-Prix', 'AACTA-Award-for-Outstanding-Achievement-in-Short-Film-Screen-Craft', 'Alanine—oxo-acid-transaminase', @@ -91,9 +91,9 @@ test('stress-test-en', t => { 'statoil', 'julia_kristeva', 'toronto', - 'toronto_star' + 'toronto_star', ] - var noCitation = { + const noCitation = { list: true, africaans: true, 'Sara-C.-Bisel': true, @@ -106,38 +106,32 @@ test('stress-test-en', t => { Keilwelle: true, 'HMS-Irresistible': true, 'Ewelina-Setowska-Dryk': true, - 'Alexander-Y-Type': true + 'Alexander-Y-Type': true, } - arr.forEach(title => { - var doc = readFile(title) + arr.forEach((title) => { + const doc = readFile(title) //basic is-valid tests for the page parsing t.ok(true, title) t.equal(doc.isRedirect(), false, ' - - not-redirect') t.equal(doc.isDisambig(), false, ' - - not-disambiguation') t.ok(doc.categories().length > 0, ' - - cat-length') t.ok(doc.sections().length > 0, ' - - section-length') - var intro = doc.sections(0) + const intro = doc.sections(0) t.ok(intro.title() === '', ' - - intro-title-empty') t.ok(intro.indentation() === 0, ' - - depth=0') t.ok(intro.sentences().length > 0, ' - - sentences-length') t.ok(intro.sentences(0).text().length > 0, ' - - intro-text') - t.ok( - intro - .sentences(0) - .text() - .match(/[a-z]/), - ' - - intro-has words' - ) + t.ok(intro.sentences(0).text().match(/[a-z]/), ' - - intro-has words') if (noCitation[title] === true) { t.equal(doc.citations().length, 0, title + ' has no citation') } else { t.ok(doc.citations().length > 0, title + ' has a citation') } - var text = doc.text() + const text = doc.text() t.ok(text.length > 40, ' - - text-length') - var json = doc.json({ - encode: true + const json = doc.json({ + encode: true, }) t.ok(Object.keys(json).length >= 2, ' - - json-keys-ok') t.equal(isCyclic(json), false, ' - - not-cyclic') diff --git a/tests/table-span.test.js b/tests/table-span.test.js index 3f6fbec9..42b20952 100644 --- a/tests/table-span.test.js +++ b/tests/table-span.test.js @@ -1,7 +1,7 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('arenas table', t => { +test('arenas table', (t) => { let str = `{|class="wikitable" cellpadding="0" cellspacing="0" style="font-size: 85%; text-align: center;" |- ! style="width:14%; background: #FFCCCC;" | Team @@ -30,7 +30,7 @@ test('arenas table', t => { |}` let doc = wtf(str) let rows = doc.tables(0).keyValue() - rows = rows.filter(r => r.Arena) + rows = rows.filter((r) => r.Arena) t.equal(rows.length, 2, 'two rows') t.equal(rows[0].Team, 'Boston Bruins', 'got team') t.equal(rows[0].Arena, 'Boston Garden', 'got arena') @@ -39,7 +39,7 @@ test('arenas table', t => { t.end() }) -test('double-header baseball game', t => { +test('double-header baseball game', (t) => { let str = `{|border="1" cellpadding="2" cellspacing="0" class="wikitable" style="text-align:center; width:100%;" |-style="background:#ddf" !width="4%"|# diff --git a/tests/table.test.js b/tests/table.test.js index af717201..d3817d35 100644 --- a/tests/table.test.js +++ b/tests/table.test.js @@ -2,7 +2,7 @@ const test = require('tape') const wtf = require('./lib') const readFile = require('./lib/_cachedPage') -test('bluejays table', t => { +test('bluejays table', (t) => { const arr = readFile('bluejays').tables(0).data t.equal(arr.length, 8, 'table-length-bluejays') t.equal(arr[0]['Level'].text(), 'AAA', 'level-col') @@ -12,7 +12,7 @@ test('bluejays table', t => { t.end() }) -test('rnli stations', t => { +test('rnli stations', (t) => { const doc = readFile('rnli_stations') t.equal(doc.categories().length, 5, 'cat-length') @@ -57,7 +57,7 @@ test('rnli stations', t => { }) //https://en.wikipedia.org/wiki/Help:Table -test('simple table', t => { +test('simple table', (t) => { const simple = `{| class="wikitable" |- ! Header 1 @@ -84,7 +84,7 @@ test('simple table', t => { t.end() }) -test('multiplication table', t => { +test('multiplication table', (t) => { const mult = `{| class="wikitable" style="text-align: center; width: 200px; height: 200px;" |+ Multiplication table |- @@ -116,7 +116,7 @@ test('multiplication table', t => { t.end() }) -test('inline-table-test', t => { +test('inline-table-test', (t) => { const inline = `{| class="wikitable" |+ style="text-align: left;" | Data reported for 2014–2015, by region |- @@ -137,7 +137,7 @@ test('inline-table-test', t => { t.end() }) -test('floating-tables-test', t => { +test('floating-tables-test', (t) => { //we don't (and probably can't) fully support this rn const floating = `{| class="wikitable floatright" | Col 1, row 1 @@ -162,7 +162,7 @@ test('floating-tables-test', t => { t.end() }) -test('wikisortable-tables-test', t => { +test('wikisortable-tables-test', (t) => { //we don't (and probably can't) fully support this rn const sortable = `{| class="wikitable sortable" |+ Sortable table @@ -196,7 +196,7 @@ test('wikisortable-tables-test', t => { t.end() }) -test('messy-table-test', t => { +test('messy-table-test', (t) => { const messy = ` {| class="wikitable" |[[File:Worms 01.jpg|199x95px]] |[[File:Worms Wappen 2005-05-27.jpg|199x95px]] @@ -218,7 +218,7 @@ test('messy-table-test', t => { t.end() }) -test('embedded-table', t => { +test('embedded-table', (t) => { const str = ` {| | one | two @@ -241,7 +241,7 @@ test('embedded-table', t => { t.end() }) -test('embedded-table-2', t => { +test('embedded-table-2', (t) => { const str = ` {| class="oopsie" | first row |- @@ -265,7 +265,7 @@ test('embedded-table-2', t => { t.end() }) -test('sortable table', t => { +test('sortable table', (t) => { const str = `{|class="wikitable sortable" !Name and Surname!!Height |- @@ -284,7 +284,7 @@ test('sortable table', t => { t.end() }) -test('missing-row test', t => { +test('missing-row test', (t) => { const str = `{|class="wikitable" |- ! style="background:#ddf; width:0;"| # @@ -313,7 +313,7 @@ test('missing-row test', t => { t.end() }) -test('table newline removal', t => { +test('table newline removal', (t) => { const str = `hello this is the top {| class="wikitable" style="font-size: 95%;" | 1 @@ -331,7 +331,7 @@ test('table newline removal', t => { t.end() }) -test('table rowspan', t => { +test('table rowspan', (t) => { const str = `{| class="wikitable" | rowspan="2"| one | two @@ -351,7 +351,7 @@ test('table rowspan', t => { t.end() }) -test('table colspan', t => { +test('table colspan', (t) => { const str = `{| class="wikitable" | colspan="2" style="text-align:center;"| one/two | three @@ -373,7 +373,7 @@ test('table colspan', t => { }) //use first row as the table header -test('first-row as header', t => { +test('first-row as header', (t) => { const simple = `{| class="wikitable" |- | Name @@ -399,7 +399,7 @@ test('first-row as header', t => { }) //two-row header composite -test('two-rows as header', t => { +test('two-rows as header', (t) => { const str = `{| class="wikitable" |- ! A @@ -415,9 +415,7 @@ test('two-rows as header', t => { |- | a || b || c || d || e |}` - const table = wtf(str) - .tables(0) - .keyValue() + const table = wtf(str).tables(0).keyValue() t.equal(table.length, 1, '1 row') t.equal(table[0].A, 'a', 'got col 1') t.equal(table[0].D2, 'd', 'got col d2') @@ -426,7 +424,7 @@ test('two-rows as header', t => { }) //two-row header with spans -test('two-header-rows-with-spans', t => { +test('two-header-rows-with-spans', (t) => { const str = `{| class="wikitable" |- ! A @@ -441,9 +439,7 @@ test('two-header-rows-with-spans', t => { |- | a || b || c || d || e |}` - const table = wtf(str) - .tables(0) - .keyValue() + const table = wtf(str).tables(0).keyValue() t.equal(table.length, 1, '1 row') t.equal(table[0].A, 'a', 'got col 1') t.equal(table[0].C, 'c', 'got col c') @@ -453,7 +449,7 @@ test('two-header-rows-with-spans', t => { }) //nfl football table -test('junky-table', t => { +test('junky-table', (t) => { const str = `{| class="navbox plainrowheaders wikitable" style="width:100%" ! A ! B @@ -471,9 +467,7 @@ test('junky-table', t => { |[[Hard Rock Stadium]] |- |}` - const table = wtf(str) - .tables(0) - .keyValue() + const table = wtf(str).tables(0).keyValue() t.equal(table.length, 2, '2 row2') t.equal(table[0].A, 'East', 'got col a1') t.equal(table[0].C, 'Orchard Park, New York', 'got col c1') @@ -482,7 +476,7 @@ test('junky-table', t => { t.end() }) -test('table double bar', t => { +test('table double bar', (t) => { const str = `{| class="wikitable" |- ! h1 @@ -514,7 +508,7 @@ test('table double bar', t => { }) //testing https://github.com/spencermountain/wtf_wikipedia/issues/332 -test('table newline', t => { +test('table newline', (t) => { const str = `{| class="wikitable" |- ! h1 diff --git a/tests/template.test.js b/tests/template.test.js index 0226cf82..eebb0d3a 100644 --- a/tests/template.test.js +++ b/tests/template.test.js @@ -1,19 +1,17 @@ -var wtf = require('./lib') -var test = require('tape') +const wtf = require('./lib') +const test = require('tape') -test('glossary of professional wrestling', function(t) { - var glossary = `{{term|1=A-show}} +test('glossary of professional wrestling', function (t) { + const glossary = `{{term|1=A-show}} {{defn|1= A wrestling event where a company's biggest draws wrestle.}}` - var o = wtf(glossary) - .sections()[0] - .sentences() + const o = wtf(glossary).sections()[0].sentences() t.equal(o[0].data.text, 'A-show:') t.equal(o[1].data.text, `A wrestling event where a company's biggest draws wrestle.`) t.end() }) -test('boloZenden infobox', function(t) { - var boloZenden = `{{Infobox football biography +test('boloZenden infobox', function (t) { + const boloZenden = `{{Infobox football biography | name = Boudewijn Zenden | image = Zenden.jpg | image_size = 260 @@ -39,7 +37,7 @@ test('boloZenden infobox', function(t) { | manageryears1 = 2012–2013 |managerclubs1 = [[Chelsea F.C.|Chelsea]] (assistant manager) | manageryears2 = 2013– |managerclubs2 = [[Jong PSV]] (assistant manager) }}` - var o = wtf(boloZenden).infoboxes(0).data + const o = wtf(boloZenden).infoboxes(0).data t.equal(o.years1.text(), '1993–1998') t.equal(o.clubs1.text(), 'PSV') t.equal(o.youthyears1.text(), '1985–1987') @@ -53,8 +51,8 @@ test('boloZenden infobox', function(t) { t.end() }) -test('hurricane infobox', function(t) { - var hurricane = ` +test('hurricane infobox', function (t) { + const hurricane = ` {{Infobox Hurricane | Name=Tropical Storm Edouard | Type=Tropical storm @@ -72,7 +70,7 @@ test('hurricane infobox', function(t) { | Areas=[[Florida]] | Hurricane season=[[2002 Atlantic hurricane season]] }}` - var o = wtf(hurricane).infoboxes(0).data + const o = wtf(hurricane).infoboxes(0).data t.equal(o.name.text(), 'Tropical Storm Edouard') t.equal(o.dissipated.text(), 'September 6, 2002') t.equal(o['hurricane season'].text(), '2002 Atlantic hurricane season') @@ -80,8 +78,8 @@ test('hurricane infobox', function(t) { t.end() }) -test('parkplace disambig', function(t) { - var park_place = ` +test('parkplace disambig', function (t) { + const park_place = ` '''Park Place''' may refer to: {{TOC right}} @@ -96,15 +94,15 @@ test('parkplace disambig', function(t) { * [[Park Place Mall]], Lethbridge, Alberta {{disambiguation}} ` - var o = wtf(park_place) + const o = wtf(park_place) t.equal(o.isDisambiguation(), true, 'is-disambiguation') t.equal(o.links().length, 4, 'links') t.equal(o.links(0).page(), 'Park Place (TV series)', 'first-link') t.end() }) -test('bluejays table', function(t) { - var bluejays = ` +test('bluejays table', function (t) { + const bluejays = ` {| border="1" cellpadding="2" cellspacing="0" class="wikitable" |- ! bgcolor="#DDDDFF" width="4%" | Number @@ -116,7 +114,7 @@ test('bluejays table', function(t) { | 2 || April 7 || @ [[Minnesota Twins|Twins]] || 9 - 3 || '''[[David Wells|Wells]]''' (1-0) || [[Mike Lincoln|Lincoln]] (0-1) || '''[[Roy Halladay|Halladay]]''' (1) || 9,220 || 1-1 |} ` - var arr = wtf(bluejays).tables(0).data + const arr = wtf(bluejays).tables(0).data t.equal(arr.length, 2) t.equal(arr[0]['Number'].text(), '1', 'number') t.equal(arr[0]['Date'].text(), 'April 6', 'date') @@ -127,7 +125,7 @@ test('bluejays table', function(t) { t.end() }) -var alabama = ` +const alabama = ` {{Infobox university | name = The University of Alabama | image_name = BamaSeal.png @@ -156,8 +154,8 @@ var alabama = ` | logo = [[File:University of Alabama (logo).png|250px]] }} ` -test('Alabama infobox', function(t) { - var infobox = wtf(alabama).infoboxes(0).data +test('Alabama infobox', function (t) { + const infobox = wtf(alabama).infoboxes(0).data t.equal(infobox.athletics.text(), 'NCAA Division I – SEC', 'athletics =' + infobox.athletics.text) t.equal(infobox.country.text(), 'U.S.', 'country =' + infobox.country.text) t.equal(infobox.president.text(), 'Stuart R. Bell', 'president =' + infobox.president.text) @@ -165,8 +163,8 @@ test('Alabama infobox', function(t) { t.end() }) -test('Radiohead infobox', function(t) { - var radiohead = `{{Infobox musical artist +test('Radiohead infobox', function (t) { + const radiohead = `{{Infobox musical artist | name = Radiohead | image = Radiohead.jpg | caption = Radiohead in 2006; from left to right: [[Thom Yorke]], [[Jonny Greenwood]], [[Colin Greenwood]], [[Ed O'Brien]] and [[Phil Selway]] @@ -201,15 +199,15 @@ test('Radiohead infobox', function(t) { * [[Ed O'Brien]] * [[Philip Selway]] }} ` - var infobox = wtf(radiohead).infoboxes(0).data + const infobox = wtf(radiohead).infoboxes(0).data t.equal(infobox.current_members.text().match(/Greenwood/g).length, 2, 'current members') t.equal(infobox.genre.text(), 'Art rock\n\nalternative rock\n\nelectronica\n\nexperimental rock', 'genre') t.equal(infobox.associated_acts.text(), 'Atoms for Peace\n\n7 Worlds Collide', 'associated-acts') t.end() }) -test('templates() list ordering', function(t) { - var str = ` +test('templates() list ordering', function (t) { + const str = ` {{Main|Royal National Lifeboat Institution lifeboats}} The types of boats provided at each station and the launching methods vary depending on local needs.{{Cite web|title=cool dude}} ==History== @@ -220,7 +218,7 @@ The types of boats provided at each station and the launching methods vary depen }} hello there ` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.templates().length, 3, 'got several templates') t.equal(doc.infoboxes().length, 1, 'got one infobox') t.equal(doc.citations().length, 1, 'got citation template') @@ -229,14 +227,14 @@ hello there t.end() }) -test('templates in infobox', function(t) { - var str = `{{Infobox museum +test('templates in infobox', function (t) { + const str = `{{Infobox museum |coordinates = {{coord|41.893269|-87.622511|display=inline}} |image= 20070701 Arts Club of Chicago.JPG |website= [http://www.artsclubchicago.org www.artsclubchicago.org] }} '''Arts Club of Chicago''' is a private club located in the [[Near North Side, Chicago|Near North Side]] ` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.templates().length, 1, 'got one template') t.equal(doc.infoboxes().length, 1, 'got one infobox') t.equal(doc.images().length, 1, 'got one image') @@ -246,8 +244,8 @@ test('templates in infobox', function(t) { t.end() }) -test('microsoft currency parsing', function(t) { - var microsoft = ` +test('microsoft currency parsing', function (t) { + const microsoft = ` {{Infobox company | name = Microsoft Corporation | logo = Microsoft logo and wordmark.svg @@ -315,15 +313,15 @@ test('microsoft currency parsing', function(t) { | website = {{URL|https://microsoft.com}} }} ` - var infobox = wtf(microsoft).infoboxes(0).data + const infobox = wtf(microsoft).infoboxes(0).data t.equal(infobox.revenue.text(), 'US$89.95 billion', 'revenue =' + infobox.revenue.text) t.equal(infobox.operating_income.text(), 'US$22.27 billion', 'operating_income =' + infobox.operating_income.text) t.equal(infobox.net_income.text(), 'US$21.20 billion', 'net_income =' + infobox.net_income.text) t.end() }) -test('climate template', function(t) { - var str = `{{climate chart +test('climate template', function (t) { + const str = `{{climate chart | Toronto | −6.7 | -0.7 | 62 | −5.6 | 0.4 | 55 @@ -339,13 +337,13 @@ test('climate template', function(t) { | −3.1 | 2.1 | 61 |float=right |source= Environment Canada }}` - var data = wtf(str).templates(0).data + const data = wtf(str).templates(0).data t.equal(data.months[0].low, -6.7, 'jan low') t.equal(data.months[1].precip, 55, 'feb precip') t.end() }) -test('german ones', function(t) { - var str = 'Buchstaben {{Taste|Q}}, {{Taste|W}}, {{Taste|E}}, {{Taste|R}}, {{Taste|T}} und {{Taste|Z}}' +test('german ones', function (t) { + const str = 'Buchstaben {{Taste|Q}}, {{Taste|W}}, {{Taste|E}}, {{Taste|R}}, {{Taste|T}} und {{Taste|Z}}' t.equal(wtf(str).text(), 'Buchstaben Q, W, E, R, T und Z', 'letters') t.end() }) diff --git a/tests/templates-data.test.js b/tests/templates-data.test.js index 956594fa..f0cdcb57 100644 --- a/tests/templates-data.test.js +++ b/tests/templates-data.test.js @@ -1,8 +1,8 @@ -var wtf = require('./lib') -var test = require('tape') +const wtf = require('./lib') +const test = require('tape') test('external-links', function (t) { - var arr = [ + const arr = [ [`imdb title`, `{{IMDb title | id= 0426883 | title= Alpha Dog }}`], [`imdb name`, `{{IMDb name | 0000008 | Marlon Brando }}`], [`musicbrainz artist`, `{{MusicBrainz artist|mbid=31e7b30b-f960-408f-908b-c8e277308eab|name=Susumu Hirasawa}}`], @@ -26,16 +26,16 @@ test('external-links', function (t) { ['unreferenced section', `{{Unreferenced section|date=November 2018}}`], ] arr.forEach((a) => { - var doc = wtf(a[1]) + const doc = wtf(a[1]) t.equal(doc.templates().length, 1, a[0] + ' count') - var tmpl = doc.templates(0) || {} + const tmpl = doc.templates(0) || {} t.equal(tmpl.template, a[0], a[1] + ' name') }) t.end() }) test('wikipedia-templates', function (t) { - var arr = [ + const arr = [ [`uss`, `{{USS|Constellation|1797}}`], [`italic title`, `{{italic title}}`], [`audio`, `{{Audio|en-us-Alabama.ogg|pronunciation of "Alabama"|help=no}}`], @@ -115,9 +115,9 @@ test('wikipedia-templates', function (t) { // [``, ``], ] arr.forEach((a) => { - var doc = wtf(a[1]) + const doc = wtf(a[1]) t.equal(doc.templates().length, 1, a[0] + ' count') - var tmpl = doc.templates(0) || {} + const tmpl = doc.templates(0) || {} t.equal(tmpl.template, a[0], a[0] + ' name') }) t.end() @@ -144,7 +144,7 @@ test('weather', function (t) { |Dec high C = -0.8 |source 1=[[Environment Canada]] }}` - var arr = wtf(str).templates(0).byMonth['high c'] + let arr = wtf(str).templates(0).byMonth['high c'] t.equal(arr.length, 12, 'got twelve months') t.equal(arr[1], 0.7, 'got february') @@ -160,7 +160,7 @@ test('weather', function (t) { }) test('election', function (t) { - var str = `hello {{Election box begin |title=[[United Kingdom general election, 2005|General Election 2005]]: Strangford}} + const str = `hello {{Election box begin |title=[[United Kingdom general election, 2005|General Election 2005]]: Strangford}} {{Election box candidate |party = Labour |candidate = Tony Blair @@ -182,17 +182,17 @@ test('election', function (t) { }} {{Election box end}} world` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.templates().length, 1, 'found one template') - var tmpl = doc.templates(0) || {} + const tmpl = doc.templates(0) || {} t.equal(tmpl.template, 'election box', 'template name') t.equal(tmpl.candidates.length, 2, 'two candidates') t.end() }) test('test-flexible-format', function (t) { - var doc = wtf(`hello {{Hollywood Walk of Fame|Alan Alda}} world`) - var tmpl = doc.templates(0) || {} + let doc = wtf(`hello {{Hollywood Walk of Fame|Alan Alda}} world`) + let tmpl = doc.templates(0) || {} t.equal(tmpl.template, 'hollywood walk of fame', 'template1') t.equal(tmpl.name, 'Alan Alda', 'name1') t.equal(doc.text(), 'hello world', 'text1') @@ -236,7 +236,7 @@ test('covid-1', function (t) { }) test('playoff-brackets', function (t) { - var str = `{{4TeamBracket + const str = `{{4TeamBracket | RD2 = Final | seed-width = diff --git a/tests/templates-inline.test.js b/tests/templates-inline.test.js index 8b395db9..476deaee 100644 --- a/tests/templates-inline.test.js +++ b/tests/templates-inline.test.js @@ -1,8 +1,8 @@ -var wtf = require('./lib') -var test = require('tape') +const wtf = require('./lib') +const test = require('tape') test('inline-no-data', function (t) { - var arr = [ + const arr = [ [`plural`, `{{plural|1.5|page}}`], [`hlist`, `{{hlist|Winner|Runner-up|Third place|item_style=color:blue;}}`], [`lang`, `{{lang|fr|Je suis française.}}`], @@ -72,8 +72,8 @@ test('inline-no-data', function (t) { ['nobr', '{{nobr}} nobr'], ] arr.forEach((a) => { - var doc = wtf(a[1]) - var len = doc.templates().length + const doc = wtf(a[1]) + const len = doc.templates().length t.equal(len, 0, a[0] + ': unexpected templates count') t.notEqual(doc.text(), '', a[0] + ': must not be empty') t.notEqual(doc.text(), a[1], a[0] + ': must change') @@ -82,7 +82,7 @@ test('inline-no-data', function (t) { }) test('inline-with-data', function (t) { - var arr = [ + const arr = [ [`cad`, `{{CAD|123.45|link=yes}}`], [`gbp`, `{{GBP|123.45}}`], [`yel`, `{{yel|67}}`], @@ -117,8 +117,8 @@ test('inline-with-data', function (t) { ['infront 10000 écu behind', 'infront {{Monnaie|10000|écu}} behind'], ] arr.forEach((a) => { - var doc = wtf(a[1]) - var len = doc.templates().length + const doc = wtf(a[1]) + const len = doc.templates().length t.equal(len, 1, a[0] + ': unexpected templates count') t.notEqual(doc.text(), '', a[0] + ': must not be empty') t.notEqual(doc.text(), a[1], a[0] + ': must change') @@ -127,7 +127,7 @@ test('inline-with-data', function (t) { }) test('inline-output', (t) => { - var arr = [ + const arr = [ [`{{nobold| [[#Structure and name|↓]] }}`, `↓`], [`[[Salt]]{{•}} [[Pepper]]`, `Salt • Pepper`], [`[[Salt]]{{ndash}}[[Pepper]]`, `Salt–Pepper`], @@ -158,8 +158,8 @@ test('inline-output', (t) => { }) test('flags', function (t) { - var str = `one {{flag|USA}}, two {{flag|DEU|empire}}, three {{flag|CAN|name=Canadian}}.` - var doc = wtf(str) + const str = `one {{flag|USA}}, two {{flag|DEU|empire}}, three {{flag|CAN|name=Canadian}}.` + const doc = wtf(str) t.equal(doc.links().length, 3, 'found 3 link') t.equal(doc.links(1).text(), 'DEU', 'link text') t.equal(doc.links(1).page(), 'germany', 'link page') @@ -169,8 +169,8 @@ test('flags', function (t) { //this example has it all! test('tricky-based-on', function (t) { - var str = `{{Based on|''[[Jurassic Park (novel)|Jurassic Park]]''|Michael Crichton}}` - var doc = wtf(str) + const str = `{{Based on|''[[Jurassic Park (novel)|Jurassic Park]]''|Michael Crichton}}` + const doc = wtf(str) // t.equal(doc.links().length, 1, 'found link'); // t.equal(doc.links(0).text, 'Jurassic Park', 'found link text'); // t.equal(doc.text(), `''Jurassic Park'' by Michael Crichton`, 'parsed properly'); diff --git a/tests/text.test.js b/tests/text.test.js index 1ac85f08..26bb548d 100644 --- a/tests/text.test.js +++ b/tests/text.test.js @@ -1,15 +1,15 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('lists in text output', t => { - var str = ` +test('lists in text output', (t) => { + const str = ` hello * [http://www.abrahamlincolnassociation.org/ Abraham Lincoln Association] * [http://www.lincolnbicentennial.org/ Abraham Lincoln Bicentennial Foundation] ` - var doc = wtf(str) - var want = `hello + const doc = wtf(str) + const want = `hello * Abraham Lincoln Association * Abraham Lincoln Bicentennial Foundation` t.equal(doc.text(), want, 'lists rendered in text output') diff --git a/tests/tracklist.test.js b/tests/tracklist.test.js index 8c8e7bc5..dbc76ac1 100644 --- a/tests/tracklist.test.js +++ b/tests/tracklist.test.js @@ -1,8 +1,8 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') -test('track-listing', t => { - var str = ` +test('track-listing', (t) => { + const str = ` {{Track listing | headline = Side one @@ -33,15 +33,15 @@ test('track-listing', t => { | title8 = [[Happiness Is a Warm Gun]] | length8 = 2:43 }}` - var doc = wtf(str) - var track = doc.templates(0) + const doc = wtf(str) + const track = doc.templates(0) t.equal(track.headline, 'Side one', 'track-headline') t.equal(track.title4, 'Ob-La-Di, Ob-La-Da', 'title4') t.end() }) -test('track-listing', t => { - var str = ` +test('track-listing', (t) => { + const str = ` {{Tracklist | collapsed = | headline = Track list @@ -69,8 +69,8 @@ test('track-listing', t => { | extra6 = Simha, [[Geetha Madhuri]] | length6 = 4:41 }}` - var doc = wtf(str) - var track = doc.templates('tracklist')[0] + const doc = wtf(str) + const track = doc.templates('tracklist')[0] t.equal(track.total_length, '23:14', 'track-total_length') t.end() }) diff --git a/tests/traverse.test.js b/tests/traverse.test.js index bcfc7eea..4d945cb6 100644 --- a/tests/traverse.test.js +++ b/tests/traverse.test.js @@ -1,19 +1,19 @@ -var test = require('tape') -var readFile = require('./lib/_cachedPage') +const test = require('tape') +const readFile = require('./lib/_cachedPage') test('traverse sections', (t) => { - var doc = readFile('toronto') + let doc = readFile('toronto') t.equal(doc.sections().length, 35, 'init section count') //start with history - var sec = doc.section('History') + let sec = doc.section('History') t.equal(sec.title(), 'History', 'init history') //skip-over to 0-Geography sec = sec.nextSibling() t.equal(sec.title(), 'Geography', 'skip-over children') - var children = sec.children().map((s) => s.title()) + let children = sec.children().map((s) => s.title()) t.deepEqual(['Topography', 'Climate'], children, 'got two children') //go into both children, Topography+Climate diff --git a/tests/unit.test.js b/tests/unit.test.js index 89583eda..03441eeb 100644 --- a/tests/unit.test.js +++ b/tests/unit.test.js @@ -1,5 +1,5 @@ -var test = require('tape') -var wtf = require('./lib') +const test = require('tape') +const wtf = require('./lib') test('sentence parser', (t) => { ;[ @@ -17,8 +17,8 @@ test('sentence parser', (t) => { [`'''Tom Anselmi''' (born {{circa|1956}}) is a Canadian [[sport]]s [[Senior management|executive]]. asdf`, 2], ['a staged reenactment of [[Perry v. Brown]] world', 1], ].forEach((a) => { - var s = wtf(a[0]).sentences() - var msg = a[1] + ' sentences - "' + a[0] + '"' + const s = wtf(a[0]).sentences() + const msg = a[1] + ' sentences - "' + a[0] + '"' t.equal(s.length, a[1], msg) }) t.end() @@ -29,7 +29,7 @@ test('misc cleanup', (t) => { // ['hi [[as:Plancton]] there', 'hi there'], ['hello
world', 'hello world'], ].forEach((a) => { - var s = wtf(a[0]).text() + const s = wtf(a[0]).text() t.equal(s, a[1], 'inline interwiki link') }) t.end() @@ -45,8 +45,8 @@ test('redirects', (t) => { ['#přesměruj [[Tony Danza#funfun]] ', 'Tony Danza'], ['#تغییر_مسیر [[Farming]] ', 'Farming'], ].forEach((a) => { - var o = wtf(a[0]) - var msg = "'" + a[0] + "' -> '" + o.redirect + "'" + const o = wtf(a[0]) + const msg = "'" + a[0] + "' -> '" + o.redirect + "'" t.equal(o.redirectTo().page, a[1], msg) }) t.end() @@ -63,8 +63,8 @@ test('parse_line_text', (t) => { ['tony hawk in [http://www.whistler.ca whistler]', 'tony hawk in whistler'], ['it is [[Tony Hawk|Tony]]s mother in [[Toronto]]s', 'it is Tonys mother in Torontos'], ].forEach((a) => { - var text = wtf(a[0]).plaintext() - var msg = "'" + a[0] + "' -> '" + text + "'" + const text = wtf(a[0]).plaintext() + const msg = "'" + a[0] + "' -> '" + text + "'" t.equal(text, a[1], msg) }) t.end() @@ -78,7 +78,7 @@ test('parse_categories', (t) => { [' [[Category:Tony Danza|metadata]] [[category:Formal Wear]] ', ['Tony Danza', 'Formal Wear']], ['[[categoría:Tony Danza|metadata]] ', ['Tony Danza']], ].forEach((a) => { - var cats = wtf(a[0]).categories() + const cats = wtf(a[0]).categories() t.deepEqual(cats, a[1]) }) t.end() @@ -94,7 +94,7 @@ test('parse_image', (t) => { 'Image:Edouard Recon (2002).jpg', ], ].forEach((a) => { - var arr = wtf(a[0]) + const arr = wtf(a[0]) .images() .map((o) => o.file()) t.deepEqual(arr[0], a[1]) @@ -114,15 +114,15 @@ test('xml', (t) => { ["hello
hinono!
world4.", 'hello world4.'], ["hello world5", 'hello world5'], ].forEach((a, i) => { - var s = wtf(a[0]).plaintext() + const s = wtf(a[0]).plaintext() t.equal(s, a[1], 'xml' + i) }) t.end() }) test('interwiki', (t) => { - var str = 'hello [[wikinews:Radiohead]] world [[Category:Films]]' - var obj = wtf(str) + const str = 'hello [[wikinews:Radiohead]] world [[Category:Films]]' + const obj = wtf(str) t.equal(obj.sections(0).interwiki(0).page(), 'Radiohead', 'interwiki-link') t.equal(obj.sections(0).interwiki(0).wiki(), 'wikinews', 'interwiki-link') t.equal(obj.categories().length, 1, 'cat-length') @@ -131,8 +131,8 @@ test('interwiki', (t) => { }) test('inline-templates', (t) => { - var str = `hello {{ill|Article title|language code}} world {{Sfn|Rolling Stone|2004}}` - var have = wtf(str).plaintext() + const str = `hello {{ill|Article title|language code}} world {{Sfn|Rolling Stone|2004}}` + const have = wtf(str).plaintext() t.equal('hello Article title world', have, 'harvard-references') t.end() }) diff --git a/tests/xml.test.js b/tests/xml.test.js index 0209bcf5..deec3974 100644 --- a/tests/xml.test.js +++ b/tests/xml.test.js @@ -1,28 +1,28 @@ -var wtf = require('./lib') -var test = require('tape') +const wtf = require('./lib') +const test = require('tape') -test('clean removal of xml', function(t) { - var hards = [ +test('clean removal of xml', function (t) { + const hards = [ [ "hello nono! world1. hello nono! world2. hello world3. hello
hinono!
world4. hello world5 nono, man.", - 'hello world1. hello world2. hello world3. hello world4. hello world5, man.' + 'hello world1. hello world2. hello world3. hello world4. hello world5, man.', ], ["hello
hinono!
world4", 'hello world4'], ['hello world nono, man', 'hello world, man'], ['hello world5, nono man', 'hello world5, man'], ['hello world ', 'hello world'], ['North America, and one of', 'North America, and one of'], - ['North America,
and one of', 'North America, and one of'] + ['North America,
and one of', 'North America, and one of'], ] - hards.forEach(a => { - var have = wtf(a[0]).text() + hards.forEach((a) => { + const have = wtf(a[0]).text() t.equal(have, a[1], a[0]) }) t.end() }) -test('avoid greedy xml replacement', function(t) { - var str = `hi up here +test('avoid greedy xml replacement', function (t) { + const str = `hi up here === one === hello foo @@ -32,7 +32,7 @@ lkjsdf ` - var doc = wtf(str) + const doc = wtf(str) t.equal(doc.sections().length, 4, 'got all sections') t.end() }) From 24b4a50aa52fbfc0ed7bed5c5a6d67e9199dde91 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Fri, 30 Oct 2020 12:47:32 -0400 Subject: [PATCH 020/117] reformat with new prettier rules --- src/01-document/Document.js | 2 +- src/01-document/_sectionMap.js | 4 +- src/01-document/disambig.js | 2 +- src/01-document/preProcess/index.js | 2 +- src/01-document/redirects.js | 11 ++--- src/01-document/toJson.js | 6 +-- src/02-section/Section.js | 32 ++++++------- src/02-section/heading.js | 4 +- src/02-section/start-to-end/election.js | 10 ++-- src/02-section/start-to-end/index.js | 5 +- src/02-section/start-to-end/mlb.js | 41 +++++++++-------- src/02-section/start-to-end/mma.js | 6 +-- src/02-section/start-to-end/nba.js | 41 +++++++++-------- src/02-section/toJson.js | 20 ++++---- src/03-paragraph/toJson.js | 6 +-- src/04-sentence/formatting.js | 2 +- src/_data/categories.js | 2 +- src/_data/disambig.js | 2 +- src/_data/flags.js | 8 ++-- src/_data/i18n.js | 2 +- src/_data/images.js | 2 +- src/_data/infoboxes.js | 2 +- src/_data/interwiki.js | 2 +- src/_data/languages.js | 2 +- src/_data/references.js | 2 +- src/_fetch/01-makeUrl.js | 2 +- src/_fetch/02-getResult.js | 2 +- src/_fetch/03-parseDoc.js | 4 +- src/_fetch/_headers.js | 4 +- src/_fetch/category.js | 8 ++-- src/_fetch/index.js | 4 +- src/_fetch/random.js | 2 +- src/_lib/helpers.js | 4 +- src/image/toJson.js | 6 +-- src/infobox/toJson.js | 2 +- src/link/Link.js | 2 +- src/link/index.js | 6 +-- src/link/interwiki.js | 8 ++-- src/list/List.js | 16 +++---- src/reference/index.js | 2 +- src/table/Table.js | 18 ++++---- src/table/index.js | 2 +- src/table/parse/_findRows.js | 8 ++-- src/table/parse/_spans.js | 10 ++-- src/table/parse/index.js | 30 ++++++------ src/table/toJson.js | 6 +-- src/template/_infobox.js | 5 +- src/template/_parsers/01-pipe-splitter.js | 11 +++-- src/template/_parsers/03-cleanup.js | 6 +-- src/template/_parsers/_fmtName.js | 2 +- src/template/_parsers/_getName.js | 2 +- src/template/_parsers/parse.js | 4 +- src/template/find/flat.js | 2 +- src/template/parse.js | 2 +- src/template/templates/currency.js | 14 ++---- src/template/templates/dates/_delta.js | 4 +- src/template/templates/dates/_format.js | 8 ++-- src/template/templates/dates/_months.js | 2 +- src/template/templates/dates/_timeSince.js | 2 +- src/template/templates/dates/index.js | 8 ++-- src/template/templates/dates/misc.js | 8 ++-- src/template/templates/dates/parsers.js | 34 ++++++-------- src/template/templates/elections.js | 8 ++-- src/template/templates/flags.js | 36 +++++++-------- src/template/templates/formatting/lists.js | 34 +++++++------- src/template/templates/formatting/misc.js | 46 +++++++++---------- src/template/templates/geo/coor.js | 24 +++++----- src/template/templates/geo/index.js | 2 +- src/template/templates/ipa.js | 6 +-- src/template/templates/languages.js | 4 +- src/template/templates/math.js | 18 ++++---- src/template/templates/misc.js | 12 ++--- src/template/templates/punctuation.js | 4 +- src/template/templates/science.js | 2 +- src/template/templates/soccer.js | 18 ++++---- src/template/templates/sports.js | 4 +- src/template/templates/stock-exchanges.js | 4 +- src/template/templates/weather.js | 45 +++++++----------- src/template/templates/websites.js | 2 +- src/template/templates/wikipedia/links.js | 10 ++-- .../templates/wikipedia/table-cell.js | 16 +++---- src/template/templates/wiktionary.js | 6 +-- 82 files changed, 373 insertions(+), 406 deletions(-) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index edbe5c3b..bcb165cd 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -2,7 +2,7 @@ const sectionMap = require('./_sectionMap') const toJSON = require('./toJson') const disambig = require('./disambig') const setDefaults = require('../_lib/setDefaults') -const {isArray} = require('../_lib/helpers') +const { isArray } = require('../_lib/helpers') const Image = require('../image/Image') const redirects = require('./redirects') diff --git a/src/01-document/_sectionMap.js b/src/01-document/_sectionMap.js index b29d6447..1841ec04 100644 --- a/src/01-document/_sectionMap.js +++ b/src/01-document/_sectionMap.js @@ -9,14 +9,14 @@ */ const sectionMap = function (doc, fn, clue) { let arr = [] - doc.sections().forEach(sec => { + doc.sections().forEach((sec) => { let list = [] if (typeof clue === 'string') { list = sec[fn](clue) } else { list = sec[fn]() } - list.forEach(t => { + list.forEach((t) => { arr.push(t) }) }) diff --git a/src/01-document/disambig.js b/src/01-document/disambig.js index c725b5c5..6c2952da 100644 --- a/src/01-document/disambig.js +++ b/src/01-document/disambig.js @@ -57,7 +57,7 @@ const english = [ */ const isDisambig = function (doc) { let templates = doc.templates() - let found = templates.find(obj => { + let found = templates.find((obj) => { return english.hasOwnProperty(obj.template) || i18n.hasOwnProperty(obj.template) }) if (found) { diff --git a/src/01-document/preProcess/index.js b/src/01-document/preProcess/index.js index cf1cca5e..ae20359e 100644 --- a/src/01-document/preProcess/index.js +++ b/src/01-document/preProcess/index.js @@ -31,7 +31,7 @@ function preProcess(wiki) { wiki = wiki.replace(/\([,;: ]+?\)/g, '') //these templates just screw things up, too wiki = wiki.replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i, '') - + return wiki } module.exports = preProcess diff --git a/src/01-document/redirects.js b/src/01-document/redirects.js index 02ce726e..e69450e8 100644 --- a/src/01-document/redirects.js +++ b/src/01-document/redirects.js @@ -1,12 +1,9 @@ const i18n = require('../_data/i18n') const parseLink = require('../link/parse') //pulls target link out of redirect page -const REDIRECT_REGEX = new RegExp( - '^[ \n\t]*?#(' + i18n.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', - 'i' -) +const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i') -const isRedirect = function(wiki) { +const isRedirect = function (wiki) { //too long to be a redirect? if (!wiki || wiki.length > 500) { return false @@ -14,7 +11,7 @@ const isRedirect = function(wiki) { return REDIRECT_REGEX.test(wiki) } -const parse = function(wiki) { +const parse = function (wiki) { let m = wiki.match(REDIRECT_REGEX) if (m && m[2]) { let links = parseLink(m[2]) || [] @@ -25,5 +22,5 @@ const parse = function(wiki) { module.exports = { isRedirect: isRedirect, - parse: parse + parse: parse, } diff --git a/src/01-document/toJson.js b/src/01-document/toJson.js index fc79fe21..616f84f3 100644 --- a/src/01-document/toJson.js +++ b/src/01-document/toJson.js @@ -20,7 +20,7 @@ const toJSON = function (doc, options) { data.categories = doc.categories() } if (options.sections) { - data.sections = doc.sections().map(i => i.json(options)) + data.sections = doc.sections().map((i) => i.json(options)) } if (doc.isRedirect() === true) { data.isRedirect = true @@ -33,10 +33,10 @@ const toJSON = function (doc, options) { data.coordinates = doc.coordinates() } if (options.infoboxes) { - data.infoboxes = doc.infoboxes().map(i => i.json(options)) + data.infoboxes = doc.infoboxes().map((i) => i.json(options)) } if (options.images) { - data.images = doc.images().map(i => i.json(options)) + data.images = doc.images().map((i) => i.json(options)) } if (options.plaintext) { data.plaintext = doc.text(options) diff --git a/src/02-section/Section.js b/src/02-section/Section.js index f7196879..0ff8cdbb 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -33,7 +33,6 @@ class Section { constructor(data, doc) { this._doc = doc || null - this._title = data.title || '' this._depth = data.depth this._wiki = data.wiki || '' @@ -75,7 +74,7 @@ class Section { return index } - depth(){ + depth() { return this._depth } @@ -112,19 +111,19 @@ class Section { links(n) { let arr = [] - this.infoboxes().forEach(templ => { + this.infoboxes().forEach((templ) => { arr.push(templ.links()) }) - this.sentences().forEach(s => { + this.sentences().forEach((s) => { arr.push(s.links()) }) - this.tables().forEach(t => { + this.tables().forEach((t) => { arr.push(t.links()) }) - this.lists().forEach(list => { + this.lists().forEach((list) => { arr.push(list.links()) }) @@ -137,10 +136,9 @@ class Section { } if (typeof n === 'string') { - n = n.toLowerCase() - let link = arr.find(o => o.page().toLowerCase() === n) + let link = arr.find((o) => o.page().toLowerCase() === n) return link === undefined ? [] : [link] } @@ -158,13 +156,13 @@ class Section { templates(clue) { let arr = this._templates || [] - arr = arr.map(t => t.json()) + arr = arr.map((t) => t.json()) if (typeof clue === 'number') { return arr[clue] } if (typeof clue === 'string') { clue = clue.toLowerCase() - return arr.filter(o => o.template === clue || o.name === clue) + return arr.filter((o) => o.template === clue || o.name === clue) } return arr } @@ -190,7 +188,7 @@ class Section { lists(clue) { let arr = [] - this.paragraphs().forEach(p => { + this.paragraphs().forEach((p) => { arr = arr.concat(p.lists()) }) if (typeof clue === 'number') { @@ -201,7 +199,7 @@ class Section { interwiki(num) { let arr = [] - this.paragraphs().forEach(p => { + this.paragraphs().forEach((p) => { arr = arr.concat(p.interwiki()) }) if (typeof num === 'number') { @@ -212,7 +210,7 @@ class Section { images(clue) { let arr = [] - this.paragraphs().forEach(p => { + this.paragraphs().forEach((p) => { arr = arr.concat(p.images()) }) if (typeof clue === 'number') { @@ -241,9 +239,9 @@ class Section { let bads = {} bads[this.title()] = true //remove children too - this.children().forEach(sec => (bads[sec.title()] = true)) + this.children().forEach((sec) => (bads[sec.title()] = true)) let sections = this._doc.sections() - sections = sections.filter(sec => bads.hasOwnProperty(sec.title()) !== true) + sections = sections.filter((sec) => bads.hasOwnProperty(sec.title()) !== true) this._doc._sections = sections return this._doc } @@ -322,7 +320,7 @@ class Section { } if (typeof n === 'string') { n = n.toLowerCase() - return children.find(s => s.title().toLowerCase() === n) + return children.find((s) => s.title().toLowerCase() === n) } if (typeof n === 'number') { return children[n] @@ -351,7 +349,7 @@ class Section { text(options) { options = setDefaults(options, defaults) let pList = this.paragraphs() - pList = pList.map(p => p.text(options)) + pList = pList.map((p) => p.text(options)) return pList.join('\n\n') } diff --git a/src/02-section/heading.js b/src/02-section/heading.js index bea3b2bc..da575463 100644 --- a/src/02-section/heading.js +++ b/src/02-section/heading.js @@ -1,4 +1,4 @@ -const {trim_whitespace} = require('../_lib/helpers') +const { trim_whitespace } = require('../_lib/helpers') const parseSentence = require('../04-sentence/').fromText const parseReferences = require('../reference/') const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/ @@ -19,7 +19,7 @@ const parseHeading = function (section, str) { title = title.replace(/\{\{.+?\}\}/, '') //same for references (i know..) - let obj = {_wiki: title} + let obj = { _wiki: title } parseReferences(obj) title = obj._wiki diff --git a/src/02-section/start-to-end/election.js b/src/02-section/start-to-end/election.js index d5440bee..06f551c1 100644 --- a/src/02-section/start-to-end/election.js +++ b/src/02-section/start-to-end/election.js @@ -10,7 +10,7 @@ const parseTemplates = require('../../template') * @param {Catcher} catcher an object to provide and catch data */ const parseElection = function (catcher) { - catcher.text = catcher.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, tmpl => { + catcher.text = catcher.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, (tmpl) => { let data = { _wiki: tmpl, _templates: [], @@ -20,11 +20,11 @@ const parseElection = function (catcher) { parseTemplates(data) //okay, pull it apart into something sensible.. - let templates = data._templates.map(t => t.json()) + let templates = data._templates.map((t) => t.json()) - let start = templates.find(t => t.template === 'election box') || {} - let candidates = templates.filter(t => t.template === 'election box candidate') - let summary = templates.find(t => t.template === 'election box gain' || t.template === 'election box hold') || {} + let start = templates.find((t) => t.template === 'election box') || {} + let candidates = templates.filter((t) => t.template === 'election box candidate') + let summary = templates.find((t) => t.template === 'election box gain' || t.template === 'election box hold') || {} if (candidates.length > 0 || summary) { catcher.templates.push({ diff --git a/src/02-section/start-to-end/index.js b/src/02-section/start-to-end/index.js index 00845534..b38c05ef 100644 --- a/src/02-section/start-to-end/index.js +++ b/src/02-section/start-to-end/index.js @@ -9,7 +9,6 @@ const parseMlb = require('./mlb') const parseMMA = require('./mma') const parseMath = require('./math') - /** * a catcher for the data used in these parsers * @@ -31,10 +30,10 @@ const parseMath = require('./math') * @param {Document} doc * @return {Catcher} */ -const xmlTemplates = function ( section, doc) { +const xmlTemplates = function (section, doc) { const catcher = { templates: [], - text: section._wiki + text: section._wiki, } parseElection(catcher) diff --git a/src/02-section/start-to-end/mlb.js b/src/02-section/start-to-end/mlb.js index 9c0bb2f2..db03a905 100644 --- a/src/02-section/start-to-end/mlb.js +++ b/src/02-section/start-to-end/mlb.js @@ -21,29 +21,32 @@ const whichHeadings = function (tmpl) { * @param {Catcher} catcher */ const parseMlb = function (catcher) { - catcher.text = catcher.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, tmpl => { - let headings = whichHeadings(tmpl) + catcher.text = catcher.text.replace( + /\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, + (tmpl) => { + let headings = whichHeadings(tmpl) - tmpl = tmpl.replace(/^\{\{.*?\}\}/, '') - tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, '') + tmpl = tmpl.replace(/^\{\{.*?\}\}/, '') + tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, '') - let headers = '! ' + headings.join(' !! ') - let table = '{|\n' + headers + '\n' + tmpl + '\n|}' - let rows = tableParser(table) - rows = rows.map(row => { - Object.keys(row).forEach(k => { - row[k] = row[k].text() + let headers = '! ' + headings.join(' !! ') + let table = '{|\n' + headers + '\n' + tmpl + '\n|}' + let rows = tableParser(table) + rows = rows.map((row) => { + Object.keys(row).forEach((k) => { + row[k] = row[k].text() + }) + return row }) - return row - }) - catcher.templates.push({ - template: 'mlb game log section', - data: rows, - }) + catcher.templates.push({ + template: 'mlb game log section', + data: rows, + }) - //return empty string to remove the template from the wiki text - return '' - }) + //return empty string to remove the template from the wiki text + return '' + } + ) } module.exports = parseMlb diff --git a/src/02-section/start-to-end/mma.js b/src/02-section/start-to-end/mma.js index b7fb0bd1..4f3028d9 100644 --- a/src/02-section/start-to-end/mma.js +++ b/src/02-section/start-to-end/mma.js @@ -9,15 +9,15 @@ let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', * @param {Catcher} catcher */ const parseMMA = function (catcher) { - catcher.text = catcher.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, tmpl => { + catcher.text = catcher.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, (tmpl) => { tmpl = tmpl.replace(/^\{\{.*?\}\}/, '') tmpl = tmpl.replace(/\{\{end\}\}/i, '') let headers = '! ' + headings.join(' !! ') let table = '{|\n' + headers + '\n' + tmpl + '\n|}' let rows = tableParser(table) - rows = rows.map(row => { - Object.keys(row).forEach(k => { + rows = rows.map((row) => { + Object.keys(row).forEach((k) => { row[k] = row[k].text() }) return row diff --git a/src/02-section/start-to-end/nba.js b/src/02-section/start-to-end/nba.js index 71a86c01..493f616f 100644 --- a/src/02-section/start-to-end/nba.js +++ b/src/02-section/start-to-end/nba.js @@ -12,28 +12,31 @@ const keys = { * @param {Catcher} catcher */ const parseNBA = function (catcher) { - catcher.text = catcher.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, (tmpl, name) => { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, '') - tmpl = tmpl.replace(/\{\{s-end\}\}/, '') - name = name.toLowerCase().trim() + catcher.text = catcher.text.replace( + /\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, + (tmpl, name) => { + tmpl = tmpl.replace(/^\{\{.*?\}\}/, '') + tmpl = tmpl.replace(/\{\{s-end\}\}/, '') + name = name.toLowerCase().trim() - let headers = '! ' + keys[name].join(' !! ') - let table = '{|\n' + headers + '\n' + tmpl + '\n|}' - let rows = tableParser(table) - rows = rows.map(row => { - Object.keys(row).forEach(k => { - row[k] = row[k].text() + let headers = '! ' + keys[name].join(' !! ') + let table = '{|\n' + headers + '\n' + tmpl + '\n|}' + let rows = tableParser(table) + rows = rows.map((row) => { + Object.keys(row).forEach((k) => { + row[k] = row[k].text() + }) + return row }) - return row - }) - catcher.templates.push({ - template: 'NBA ' + name + ' statistics', - data: rows, - }) + catcher.templates.push({ + template: 'NBA ' + name + ' statistics', + data: rows, + }) - //return empty string to remove the template from the wiki text - return '' - }) + //return empty string to remove the template from the wiki text + return '' + } + ) } module.exports = parseNBA diff --git a/src/02-section/toJson.js b/src/02-section/toJson.js index 7fd0656d..846c435c 100644 --- a/src/02-section/toJson.js +++ b/src/02-section/toJson.js @@ -10,10 +10,10 @@ const defaults = { templates: true, infoboxes: true, lists: true, - references: true + references: true, } // -const toJSON = function(section, options) { +const toJSON = function (section, options) { options = setDefaults(options, defaults) let data = {} if (options.headers === true) { @@ -24,21 +24,21 @@ const toJSON = function(section, options) { } //these return objects if (options.paragraphs === true) { - let paragraphs = section.paragraphs().map(p => p.json(options)) + let paragraphs = section.paragraphs().map((p) => p.json(options)) if (paragraphs.length > 0) { data.paragraphs = paragraphs } } //image json data if (options.images === true) { - let images = section.images().map(img => img.json(options)) + let images = section.images().map((img) => img.json(options)) if (images.length > 0) { data.images = images } } //table json data if (options.tables === true) { - let tables = section.tables().map(t => t.json(options)) + let tables = section.tables().map((t) => t.json(options)) if (tables.length > 0) { data.tables = tables } @@ -50,34 +50,34 @@ const toJSON = function(section, options) { data.templates = templates //encode them, for mongodb if (options.encode === true) { - data.templates.forEach(t => encode.encodeObj(t)) + data.templates.forEach((t) => encode.encodeObj(t)) } } } //infobox json data if (options.infoboxes === true) { - let infoboxes = section.infoboxes().map(i => i.json(options)) + let infoboxes = section.infoboxes().map((i) => i.json(options)) if (infoboxes.length > 0) { data.infoboxes = infoboxes } } //list json data if (options.lists === true) { - let lists = section.lists().map(list => list.json(options)) + let lists = section.lists().map((list) => list.json(options)) if (lists.length > 0) { data.lists = lists } } //list references - default true if (options.references === true || options.citations === true) { - let references = section.references().map(ref => ref.json(options)) + let references = section.references().map((ref) => ref.json(options)) if (references.length > 0) { data.references = references } } //default off if (options.sentences === true) { - data.sentences = section.sentences().map(s => s.json(options)) + data.sentences = section.sentences().map((s) => s.json(options)) } return data } diff --git a/src/03-paragraph/toJson.js b/src/03-paragraph/toJson.js index fb458270..c039e822 100644 --- a/src/03-paragraph/toJson.js +++ b/src/03-paragraph/toJson.js @@ -1,14 +1,14 @@ const setDefaults = require('../_lib/setDefaults') const defaults = { - sentences: true + sentences: true, } -const toJson = function(p, options) { +const toJson = function (p, options) { options = setDefaults(options, defaults) let data = {} if (options.sentences === true) { - data.sentences = p.sentences().map(s => s.json(options)) + data.sentences = p.sentences().map((s) => s.json(options)) } return data } diff --git a/src/04-sentence/formatting.js b/src/04-sentence/formatting.js index b6b6cc65..73408d89 100644 --- a/src/04-sentence/formatting.js +++ b/src/04-sentence/formatting.js @@ -1,5 +1,5 @@ //handle the bold/italics -const formatting = function(obj) { +const formatting = function (obj) { let bolds = [] let italics = [] let wiki = obj.text || '' diff --git a/src/_data/categories.js b/src/_data/categories.js index 420229b7..96412505 100644 --- a/src/_data/categories.js +++ b/src/_data/categories.js @@ -67,6 +67,6 @@ module.exports = [ 'หมวดหมู่', // th '분류', // ko '분류', //ko - '分类' // za + '分类', // za //-- ] diff --git a/src/_data/disambig.js b/src/_data/disambig.js index 98cbd8e4..c54b64c8 100644 --- a/src/_data/disambig.js +++ b/src/_data/disambig.js @@ -167,7 +167,7 @@ module.exports = [ '消歧义', //zh '釋義', //zh_classical "gestion dj'omònim", //pms - "sut'ichana qillqa" //qu + "sut'ichana qillqa", //qu // 'z', //vep // 'သဵင်မိူၼ် တူၼ်ႈထႅဝ်ပႅၵ်ႇ', //shn ] diff --git a/src/_data/flags.js b/src/_data/flags.js index 46b9109f..055c25c1 100644 --- a/src/_data/flags.js +++ b/src/_data/flags.js @@ -24,7 +24,7 @@ module.exports = [ [ '🇧🇬', 'bul', //dupe - 'bulgaria' + 'bulgaria', ], ['🇧🇭', 'bhr', 'bahrain'], ['🇧🇮', 'bdi', 'burundi'], @@ -64,7 +64,7 @@ module.exports = [ [ '🇩🇪', 'ger', //alias - 'germany' + 'germany', ], ['🇩🇯', 'dji', 'djibouti'], ['🇩🇰', 'dnk', 'denmark'], @@ -245,7 +245,7 @@ module.exports = [ [ '🇺🇸', 'us', //alias - 'united states' + 'united states', ], ['🇺🇾', 'ury', 'uruguay'], ['🇺🇿', 'uzb', 'uzbekistan'], @@ -269,5 +269,5 @@ module.exports = [ ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], - ['🇪🇺', 'eu', 'european union'] + ['🇪🇺', 'eu', 'european union'], ] diff --git a/src/_data/i18n.js b/src/_data/i18n.js index d339ac61..d425c273 100644 --- a/src/_data/i18n.js +++ b/src/_data/i18n.js @@ -18,7 +18,7 @@ module.exports = { images: require('./images'), infoboxes: require('./infoboxes'), redirects: require('./redirects'), - references: require('./references') + references: require('./references'), //specials: [ //'спэцыяльныя', diff --git a/src/_data/images.js b/src/_data/images.js index b65ff472..ee5eecb6 100644 --- a/src/_data/images.js +++ b/src/_data/images.js @@ -41,5 +41,5 @@ module.exports = [ 'चित्र', //hi 'ไฟล์', //th '파일', //ko - 'ファイル' //ja + 'ファイル', //ja ] diff --git a/src/_data/infoboxes.js b/src/_data/infoboxes.js index 999bf157..1d2e9215 100644 --- a/src/_data/infoboxes.js +++ b/src/_data/infoboxes.js @@ -66,5 +66,5 @@ module.exports = [ 'กล่องข้อมูล', //th 'ប្រអប់ព័ត៌មាន', //km '정보상자', //ko - '明細' //zh_yue + '明細', //zh_yue ] diff --git a/src/_data/interwiki.js b/src/_data/interwiki.js index 58d26b6a..f3e49dd9 100644 --- a/src/_data/interwiki.js +++ b/src/_data/interwiki.js @@ -460,5 +460,5 @@ module.exports = { s: 'en.wikisource.org/wiki/$1', chapter: 'en' + wm, v: 'en.wikiversity.org/wiki/$1', - voy: 'en.wikivoyage.org/wiki/$1' + voy: 'en.wikivoyage.org/wiki/$1', } diff --git a/src/_data/languages.js b/src/_data/languages.js index 6e2514de..55927361 100644 --- a/src/_data/languages.js +++ b/src/_data/languages.js @@ -251,5 +251,5 @@ module.exports = { 'zh-classical': 'ltr', //Classical 'zh-min-nan': 'Bân-lâm-gú', //Minnan 'zh-yue': '粵語', //Cantonese - zu: 'isiZulu' //Zulu + zu: 'isiZulu', //Zulu } diff --git a/src/_data/references.js b/src/_data/references.js index fdf915b4..f3c0fa8a 100644 --- a/src/_data/references.js +++ b/src/_data/references.js @@ -8,5 +8,5 @@ module.exports = [ '脚注', 'referenser', 'bronnen', - 'примечания' + 'примечания', ] diff --git a/src/_fetch/01-makeUrl.js b/src/_fetch/01-makeUrl.js index c00b7d49..8a609241 100644 --- a/src/_fetch/01-makeUrl.js +++ b/src/_fetch/01-makeUrl.js @@ -1,4 +1,4 @@ -const {isArray} = require('../_lib/helpers'); +const { isArray } = require('../_lib/helpers') const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/ diff --git a/src/_fetch/02-getResult.js b/src/_fetch/02-getResult.js index 7b08cdd2..281c604e 100644 --- a/src/_fetch/02-getResult.js +++ b/src/_fetch/02-getResult.js @@ -36,7 +36,7 @@ const getResult = function (data, options) { description: page.pageprops['wikibase-shortdesc'], }) try { - return {wiki: text, meta: meta} + return { wiki: text, meta: meta } } catch (e) { console.error(e) throw e diff --git a/src/_fetch/03-parseDoc.js b/src/_fetch/03-parseDoc.js index 14fe1639..3ea19903 100644 --- a/src/_fetch/03-parseDoc.js +++ b/src/_fetch/03-parseDoc.js @@ -7,8 +7,8 @@ const Document = require('../01-document/Document') * @returns {null| Document | Document[]} null if there are no results or Document if there is one responses and Document array if there are multiple responses */ const parseDoc = function (res) { - res = res.filter(o => o) - let docs = res.map(o => { + res = res.filter((o) => o) + let docs = res.map((o) => { return new Document(o.wiki, o.meta) }) if (docs.length === 0) { diff --git a/src/_fetch/_headers.js b/src/_fetch/_headers.js index ab29428e..18fea428 100644 --- a/src/_fetch/_headers.js +++ b/src/_fetch/_headers.js @@ -8,7 +8,6 @@ * @property {string} method */ - /** * factory for header options * @@ -17,7 +16,8 @@ * @returns {HeaderOptions} the generated options */ const makeHeaders = function (options) { - let agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library' + let agent = + options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library' let origin if (options.noOrigin) { diff --git a/src/_fetch/category.js b/src/_fetch/category.js index a447d982..d24a8130 100644 --- a/src/_fetch/category.js +++ b/src/_fetch/category.js @@ -1,6 +1,6 @@ const http = require('./http/server') const makeHeaders = require('./_headers') -const {isObject} = require('../_lib/helpers') +const { isObject } = require('../_lib/helpers') const defaults = { lang: 'en', @@ -23,7 +23,7 @@ const getResult = function (body) { pages: [], categories: [], } - list.forEach(p => { + list.forEach((p) => { if (p.ns === 14) { delete p.ns res.categories.push(p) @@ -68,7 +68,7 @@ const fetchCategory = function (category, lang, options) { let url = makeUrl(category, options, cm) const headers = makeHeaders(options) return http(url, headers) - .then(body => { + .then((body) => { res = getResult(body, res) if (body.continue && body.continue.cmcontinue) { doit(body.continue.cmcontinue) @@ -76,7 +76,7 @@ const fetchCategory = function (category, lang, options) { resolve(res) } }) - .catch(e => { + .catch((e) => { console.error(e) reject(e) }) diff --git a/src/_fetch/index.js b/src/_fetch/index.js index 61443ced..8d7586fa 100644 --- a/src/_fetch/index.js +++ b/src/_fetch/index.js @@ -4,7 +4,7 @@ const getResult = require('./02-getResult') const parseDoc = require('./03-parseDoc') const http = require('./http/server') const makeHeaders = require('./_headers') -const {isObject} = require('../_lib/helpers') +const { isObject } = require('../_lib/helpers') const isUrl = /^https?:\/\// /** @@ -56,7 +56,7 @@ const fetch = function (title, options, c) { //support lang 2nd param if (typeof options === 'string') { - options = Object.assign({}, {lang: options}, isObject(c) ? c : defaults) + options = Object.assign({}, { lang: options }, isObject(c) ? c : defaults) } options = options || {} diff --git a/src/_fetch/random.js b/src/_fetch/random.js index 5346de1d..f6ace03f 100644 --- a/src/_fetch/random.js +++ b/src/_fetch/random.js @@ -2,7 +2,7 @@ const http = require('./http/server') const makeHeaders = require('./_headers') const getResult = require('./02-getResult') const parseDoc = require('./03-parseDoc') -const {isObject} = require('../_lib/helpers') +const { isObject } = require('../_lib/helpers') const defaults = { lang: 'en', diff --git a/src/_lib/helpers.js b/src/_lib/helpers.js index 274ba21b..e4768065 100644 --- a/src/_lib/helpers.js +++ b/src/_lib/helpers.js @@ -51,12 +51,12 @@ function isArray(x) { * @returns {boolean} whether the variable is an object */ function isObject(x) { - return (x && Object.prototype.toString.call(x) === '[object Object]') + return x && Object.prototype.toString.call(x) === '[object Object]' } module.exports = { capitalise, trim_whitespace, isArray, - isObject + isObject, } diff --git a/src/image/toJson.js b/src/image/toJson.js index fdbf2496..f9be9bd7 100644 --- a/src/image/toJson.js +++ b/src/image/toJson.js @@ -5,13 +5,13 @@ const defaults = { alt: true, links: true, thumb: true, - url: true + url: true, } // -const toJson = function(img, options) { +const toJson = function (img, options) { options = setDefaults(options, defaults) let json = { - file: img.file() + file: img.file(), } if (options.thumb !== false) { json.thumb = img.thumbnail() diff --git a/src/infobox/toJson.js b/src/infobox/toJson.js index 337850cf..5299db0d 100644 --- a/src/infobox/toJson.js +++ b/src/infobox/toJson.js @@ -1,7 +1,7 @@ const encode = require('../_lib/encode') //turn an infobox into some nice json -const toJson = function(infobox, options) { +const toJson = function (infobox, options) { let json = Object.keys(infobox.data).reduce((h, k) => { if (infobox.data[k]) { h[k] = infobox.data[k].json() diff --git a/src/link/Link.js b/src/link/Link.js index 263b30dd..7fe336b1 100644 --- a/src/link/Link.js +++ b/src/link/Link.js @@ -95,7 +95,7 @@ const methods = { return url }, } -Object.keys(methods).forEach(k => { +Object.keys(methods).forEach((k) => { Link.prototype[k] = methods[k] }) module.exports = Link diff --git a/src/link/index.js b/src/link/index.js index f65a3f62..a753c884 100644 --- a/src/link/index.js +++ b/src/link/index.js @@ -4,16 +4,16 @@ const parseLinks = require('./parse') // const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):[^\\]\\]]{2,80}\\]\\]', 'gi') //return only rendered text of wiki links -const removeLinks = function(line) { +const removeLinks = function (line) { // [[File:with|Size]] line = line.replace(/\[\[File:(.{2,80}?)\|([^\]]+?)\]\](\w{0,5})/g, '$1') return line } -const getLinks = function(data) { +const getLinks = function (data) { let wiki = data.text let links = parseLinks(wiki) || [] - data.links = links.map(link => { + data.links = links.map((link) => { wiki = wiki.replace(link.raw, link.text || link.page || '') delete link.raw return new Link(link) diff --git a/src/link/interwiki.js b/src/link/interwiki.js index 0daab6f9..4a86c8f7 100644 --- a/src/link/interwiki.js +++ b/src/link/interwiki.js @@ -4,13 +4,13 @@ const languages = require('../_data/languages') const interwikis = require('../_data/interwiki') //add language prefixes too.. -Object.keys(languages).forEach(k => { +Object.keys(languages).forEach((k) => { interwikis[k] = k + '.wikipedia.org/wiki/$1' }) //this is predictably very complicated. // https://meta.wikimedia.org/wiki/Help:Interwiki_linking -const parseInterwiki = function(obj) { +const parseInterwiki = function (obj) { let str = obj.page || '' if (str.indexOf(':') !== -1) { let m = str.match(/^(.*):(.*)/) @@ -22,9 +22,7 @@ const parseInterwiki = function(obj) { if (site.indexOf(':') !== -1) { let [, wiki, lang] = site.match(/^:?(.*):(.*)/) //only allow interwikis to these specific places - if ( - interwikis.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false - ) { + if (interwikis.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { return obj } obj.wiki = { wiki: wiki, lang: lang } diff --git a/src/list/List.js b/src/list/List.js index 166830a6..c1c4da26 100644 --- a/src/list/List.js +++ b/src/list/List.js @@ -3,17 +3,17 @@ const defaults = {} const toText = (list, options) => { return list - .map(s => { + .map((s) => { let str = s.text(options) return ' * ' + str }) .join('\n') } -const List = function(data) { +const List = function (data) { Object.defineProperty(this, 'data', { enumerable: false, - value: data + value: data, }) } @@ -23,7 +23,7 @@ const methods = { }, links(n) { let links = [] - this.lines().forEach(s => { + this.lines().forEach((s) => { links = links.concat(s.links()) }) if (typeof n === 'number') { @@ -31,21 +31,21 @@ const methods = { } else if (typeof n === 'string') { //grab a link like .links('Fortnight') n = n.charAt(0).toUpperCase() + n.substring(1) //titlecase it - let link = links.find(o => o.page() === n) + let link = links.find((o) => o.page() === n) return link === undefined ? [] : [link] } return links }, json(options) { options = setDefaults(options, defaults) - return this.lines().map(s => s.json(options)) + return this.lines().map((s) => s.json(options)) }, text() { return toText(this.data) - } + }, } -Object.keys(methods).forEach(k => { +Object.keys(methods).forEach((k) => { List.prototype[k] = methods[k] }) module.exports = List diff --git a/src/reference/index.js b/src/reference/index.js index 577a7c87..5bf03d8e 100644 --- a/src/reference/index.js +++ b/src/reference/index.js @@ -63,7 +63,7 @@ const parseRefs = function (section) { //now that we're done with xml, do a generic + dangerous xml-tag removal wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' ') // - section._references = references.map(r => new Reference(r)) + section._references = references.map((r) => new Reference(r)) section._wiki = wiki } diff --git a/src/table/Table.js b/src/table/Table.js index 44583abf..769cb18f 100644 --- a/src/table/Table.js +++ b/src/table/Table.js @@ -2,18 +2,18 @@ const setDefaults = require('../_lib/setDefaults') const toJson = require('./toJson') const defaults = {} -const Table = function(data) { +const Table = function (data) { Object.defineProperty(this, 'data', { enumerable: false, - value: data + value: data, }) } const methods = { links(n) { let links = [] - this.data.forEach(r => { - Object.keys(r).forEach(k => { + this.data.forEach((r) => { + Object.keys(r).forEach((k) => { links = links.concat(r[k].links()) }) }) @@ -23,15 +23,15 @@ const methods = { } else if (typeof n === 'string') { //grab a link like .links('Fortnight') n = n.charAt(0).toUpperCase() + n.substring(1) //titlecase it - let link = links.find(o => o.page() === n) + let link = links.find((o) => o.page() === n) return link === undefined ? [] : [link] } return links }, keyValue(options) { let rows = this.json(options) - rows.forEach(row => { - Object.keys(row).forEach(k => { + rows.forEach((row) => { + Object.keys(row).forEach((k) => { row[k] = row[k].text }) }) @@ -44,12 +44,12 @@ const methods = { text() { return '' - } + }, } methods.keyvalue = methods.keyValue methods.keyval = methods.keyValue -Object.keys(methods).forEach(k => { +Object.keys(methods).forEach((k) => { Table.prototype[k] = methods[k] }) module.exports = Table diff --git a/src/table/index.js b/src/table/index.js index 764df3a2..6001fa4f 100644 --- a/src/table/index.js +++ b/src/table/index.js @@ -30,7 +30,7 @@ const findTables = function (section) { } //work-em together for a Table class let tables = [] - list.forEach(str => { + list.forEach((str) => { if (str) { //also re-remove a newline at the end of the table (awkward) wiki = wiki.replace(str + '\n', '') diff --git a/src/table/parse/_findRows.js b/src/table/parse/_findRows.js index 2fb9cc84..81baa3a6 100644 --- a/src/table/parse/_findRows.js +++ b/src/table/parse/_findRows.js @@ -1,6 +1,6 @@ //remove top-bottoms -const cleanup = function(lines) { - lines = lines.filter(line => { +const cleanup = function (lines) { + lines = lines.filter((line) => { //a '|+' row is a 'table caption', remove it. return line && /^\|\+/.test(line) !== true }) @@ -17,7 +17,7 @@ const cleanup = function(lines) { } //turn newline seperated into '|-' seperated -const findRows = function(lines) { +const findRows = function (lines) { let rows = [] let row = [] lines = cleanup(lines) @@ -37,7 +37,7 @@ const findRows = function(lines) { if (!line[0] && line[1]) { line.shift() } - line.forEach(l => { + line.forEach((l) => { l = l.replace(/^\| */, '') l = l.trim() row.push(l) diff --git a/src/table/parse/_spans.js b/src/table/parse/_spans.js index 3935e870..bce77e28 100644 --- a/src/table/parse/_spans.js +++ b/src/table/parse/_spans.js @@ -2,8 +2,8 @@ const getRowSpan = /.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/ const getColSpan = /.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/ //colspans stretch ←left/right→ -const doColSpan = function(rows) { - rows.forEach(row => { +const doColSpan = function (rows) { + rows.forEach((row) => { row.forEach((str, c) => { let m = str.match(getColSpan) if (m !== null) { @@ -22,12 +22,12 @@ const doColSpan = function(rows) { } }) }) - rows = rows.filter(r => r.length > 0) + rows = rows.filter((r) => r.length > 0) return rows } //colspans stretch up/down -const doRowSpan = function(rows) { +const doRowSpan = function (rows) { rows.forEach((row, r) => { row.forEach((str, c) => { let m = str.match(getRowSpan) @@ -49,7 +49,7 @@ const doRowSpan = function(rows) { } // -const handleSpans = function(rows) { +const handleSpans = function (rows) { rows = doColSpan(rows) rows = doRowSpan(rows) return rows diff --git a/src/table/parse/index.js b/src/table/parse/index.js index e94adb1d..89aa534d 100644 --- a/src/table/parse/index.js +++ b/src/table/parse/index.js @@ -14,11 +14,11 @@ const headings = { country: true, population: true, count: true, - number: true + number: true, } //additional table-cruft to remove before parseLine method -const cleanText = function(str) { +const cleanText = function (str) { str = parseSentence(str).text() //anything before a single-pipe is styling, so remove it if (str.match(/\|/)) { @@ -31,10 +31,10 @@ const cleanText = function(str) { return str } -const skipSpanRow = function(row) { +const skipSpanRow = function (row) { row = row || [] let len = row.length - let hasTxt = row.filter(str => str).length + let hasTxt = row.filter((str) => str).length //does it have 3 empty spaces? if (len - hasTxt > 3) { return true @@ -43,8 +43,8 @@ const skipSpanRow = function(row) { } //remove non-header span rows -const removeMidSpans = function(rows) { - rows = rows.filter(row => { +const removeMidSpans = function (rows) { + rows = rows.filter((row) => { if (row.length === 1 && row[0] && isHeading.test(row[0]) && /rowspan/i.test(row[0]) === false) { return false } @@ -54,7 +54,7 @@ const removeMidSpans = function(rows) { } //'!' starts a header-row -const findHeaders = function(rows = []) { +const findHeaders = function (rows = []) { let headers = [] // is the first-row just a ton of colspan? @@ -64,7 +64,7 @@ const findHeaders = function(rows = []) { let first = rows[0] if (first && first[0] && first[1] && (/^!/.test(first[0]) || /^!/.test(first[1]))) { - headers = first.map(h => { + headers = first.map((h) => { h = h.replace(/^\! */, '') h = cleanText(h) return h @@ -87,7 +87,7 @@ const findHeaders = function(rows = []) { } //turn headers, array into an object -const parseRow = function(arr, headers) { +const parseRow = function (arr, headers) { let row = {} arr.forEach((str, i) => { let h = headers[i] || 'col' + (i + 1) @@ -99,12 +99,12 @@ const parseRow = function(arr, headers) { } //should we use the first row as a the headers? -const firstRowHeader = function(rows) { +const firstRowHeader = function (rows) { if (rows.length <= 3) { return [] } let headers = rows[0].slice(0) - headers = headers.map(h => { + headers = headers.map((h) => { h = h.replace(/^\! */, '') h = parseSentence(h).text() h = cleanText(h) @@ -121,14 +121,14 @@ const firstRowHeader = function(rows) { } //turn a {|...table string into an array of arrays -const parseTable = function(wiki) { +const parseTable = function (wiki) { let lines = wiki .replace(/\r/g, '') .replace(/\n(\s*[^|!{\s])/g, ' $1') //remove unecessary newlines .split(/\n/) - .map(l => l.trim()) + .map((l) => l.trim()) let rows = findRows(lines) - rows = rows.filter(r => r) + rows = rows.filter((r) => r) if (rows.length === 0) { return [] } @@ -151,7 +151,7 @@ const parseTable = function(wiki) { } } //index each column by it's header - let table = rows.map(arr => { + let table = rows.map((arr) => { return parseRow(arr, headers) }) return table diff --git a/src/table/toJson.js b/src/table/toJson.js index 244be91a..7a503f79 100644 --- a/src/table/toJson.js +++ b/src/table/toJson.js @@ -1,9 +1,9 @@ const encode = require('../_lib/encode') // -const toJson = function(tables, options) { - return tables.map(table => { +const toJson = function (tables, options) { + return tables.map((table) => { let row = {} - Object.keys(table).forEach(k => { + Object.keys(table).forEach((k) => { row[k] = table[k].json() //(they're sentence objects) }) //encode them, for mongodb diff --git a/src/template/_infobox.js b/src/template/_infobox.js index da54553d..e0b19655 100644 --- a/src/template/_infobox.js +++ b/src/template/_infobox.js @@ -1,8 +1,5 @@ const i18n = require('../_data/i18n') -const i18nReg = new RegExp( - '^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', - 'i', -) +const i18nReg = new RegExp('^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', 'i') //some looser ones const startReg = /^infobox /i const endReg = / infobox$/i diff --git a/src/template/_parsers/01-pipe-splitter.js b/src/template/_parsers/01-pipe-splitter.js index 6b36b33f..3c33e8ea 100644 --- a/src/template/_parsers/01-pipe-splitter.js +++ b/src/template/_parsers/01-pipe-splitter.js @@ -17,9 +17,10 @@ const pipeSplitter = function (tmpl) { //has '[[' but no ']]' //has equal number of opening and closing tags. handle nested case '[[[[' ']]' if ( - /\[\[[^\]]+$/.test(a) || /{{[^}]+$/.test(a) - || (a.split('{{').length !== a.split('}}').length) - || (a.split('[[').length !== a.split(']]').length) + /\[\[[^\]]+$/.test(a) || + /{{[^}]+$/.test(a) || + a.split('{{').length !== a.split('}}').length || + a.split('[[').length !== a.split(']]').length ) { arr[i + 1] = arr[i] + '|' + arr[i + 1] //@ts-expect-error we can ignore this error because we filter out all nulls later in @@ -27,8 +28,8 @@ const pipeSplitter = function (tmpl) { } }) //cleanup any mistakes we've made - arr = arr.filter(a => a !== null) - arr = arr.map(a => (a || '').trim()) + arr = arr.filter((a) => a !== null) + arr = arr.map((a) => (a || '').trim()) //remove empty fields, only at the end: for (let i = arr.length - 1; i >= 0; i -= 1) { diff --git a/src/template/_parsers/03-cleanup.js b/src/template/_parsers/03-cleanup.js index 3493931c..7fdb181f 100644 --- a/src/template/_parsers/03-cleanup.js +++ b/src/template/_parsers/03-cleanup.js @@ -11,12 +11,12 @@ const whoCares = { collapsible: true, list_style_type: true, 'list-style-type': true, - colwidth: true + colwidth: true, } //remove wiki-cruft & some styling info from templates -const cleanup = function(obj) { - Object.keys(obj).forEach(k => { +const cleanup = function (obj) { + Object.keys(obj).forEach((k) => { if (whoCares[k.toLowerCase()] === true) { delete obj[k] } diff --git a/src/template/_parsers/_fmtName.js b/src/template/_parsers/_fmtName.js index e5a181b7..02aeabb1 100644 --- a/src/template/_parsers/_fmtName.js +++ b/src/template/_parsers/_fmtName.js @@ -1,5 +1,5 @@ //normalize template names -const fmtName = function(name) { +const fmtName = function (name) { name = (name || '').trim() name = name.toLowerCase() name = name.replace(/_/g, ' ') diff --git a/src/template/_parsers/_getName.js b/src/template/_parsers/_getName.js index aaa05f7b..093c2b05 100644 --- a/src/template/_parsers/_getName.js +++ b/src/template/_parsers/_getName.js @@ -1,7 +1,7 @@ const fmtName = require('./_fmtName') //get the name of the template //templates are usually '{{name|stuff}}' -const getName = function(tmpl) { +const getName = function (tmpl) { let name = null //{{name|foo}} if (/^\{\{[^\n]+\|/.test(tmpl)) { diff --git a/src/template/_parsers/parse.js b/src/template/_parsers/parse.js index af05d93b..0e186ac0 100644 --- a/src/template/_parsers/parse.js +++ b/src/template/_parsers/parse.js @@ -59,9 +59,9 @@ const parser = function (tmpl, order = [], fmt) { delete obj['1'] } - Object.keys(obj).forEach(k => { + Object.keys(obj).forEach((k) => { if (k === 'list') { - obj[k] = obj[k].map(v => makeFormat(v, fmt)) + obj[k] = obj[k].map((v) => makeFormat(v, fmt)) return } obj[k] = makeFormat(obj[k], fmt) diff --git a/src/template/find/flat.js b/src/template/find/flat.js index c5022edc..711617ce 100644 --- a/src/template/find/flat.js +++ b/src/template/find/flat.js @@ -2,7 +2,7 @@ const open = '{' const close = '}' //grab all first-level recursions of '{{...}}' -const findFlat = function(wiki) { +const findFlat = function (wiki) { let depth = 0 let list = [] let carry = [] diff --git a/src/template/parse.js b/src/template/parse.js index e938b650..a558ca5b 100644 --- a/src/template/parse.js +++ b/src/template/parse.js @@ -3,7 +3,7 @@ const parse = require('./_parsers/parse') const inf = require('./_infobox') const templates = require('./templates') const generic = require('./_parsers/parse') -const {isArray} = require('../_lib/helpers') +const { isArray } = require('../_lib/helpers') const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8'] diff --git a/src/template/templates/currency.js b/src/template/templates/currency.js index da5ef968..8234ff1e 100644 --- a/src/template/templates/currency.js +++ b/src/template/templates/currency.js @@ -62,7 +62,7 @@ const codes = { us$: 'US$', // https://en.wikipedia.org/wiki/Template:US$ usd: 'US$', // https://en.wikipedia.org/wiki/Template:US$ yen: '¥', // https://en.wikipedia.org/wiki/Template:JPY - zar: 'R' //https://en.wikipedia.org/wiki/Template:ZAR + zar: 'R', //https://en.wikipedia.org/wiki/Template:ZAR } const parseCurrency = (tmpl, list) => { @@ -74,13 +74,7 @@ const parseCurrency = (tmpl, list) => { if (!code) { o.code = code = 'usd' //Special case when currency template has no code argument } - } else if ( - code === '' || - code === 'monnaie' || - code === 'unité' || - code === 'nombre' || - code === 'nb' - ) { + } else if (code === '' || code === 'monnaie' || code === 'unité' || code === 'nombre' || code === 'nb') { code = o.code } code = (code || '').toLowerCase() @@ -144,10 +138,10 @@ const currencies = { nombre: parseCurrency, nb: parseCurrency, iso4217: parseCurrency, - inrconvert: inrConvert + inrconvert: inrConvert, } //the others fit the same pattern.. -Object.keys(codes).forEach(k => { +Object.keys(codes).forEach((k) => { currencies[k] = parseCurrency }) diff --git a/src/template/templates/dates/_delta.js b/src/template/templates/dates/_delta.js index 45a3bb08..b569eddc 100644 --- a/src/template/templates/dates/_delta.js +++ b/src/template/templates/dates/_delta.js @@ -3,12 +3,12 @@ const day = 1000 * 60 * 60 * 24 const month = day * 30 const year = day * 365 -const getEpoch = function(obj) { +const getEpoch = function (obj) { return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime() } //very rough! -const delta = function(from, to) { +const delta = function (from, to) { from = getEpoch(from) to = getEpoch(to) let diff = to - from diff --git a/src/template/templates/dates/_format.js b/src/template/templates/dates/_format.js index d026aa39..51d38825 100644 --- a/src/template/templates/dates/_format.js +++ b/src/template/templates/dates/_format.js @@ -10,7 +10,7 @@ const monthName = months.reduce((h, str, i) => { }, {}) //parse year|month|date numbers -const ymd = function(arr) { +const ymd = function (arr) { let obj = {} let units = ['year', 'month', 'date', 'hour', 'minute', 'second'] //parse each unit in sequence.. @@ -43,14 +43,14 @@ const ymd = function(arr) { } //zero-pad a number -const pad = function(num) { +const pad = function (num) { if (num < 10) { return '0' + num } return String(num) } -const toText = function(date) { +const toText = function (date) { //eg '1995' let str = String(date.year || '') if (date.month !== undefined && months.hasOwnProperty(date.month) === true) { @@ -79,7 +79,7 @@ const toText = function(date) { module.exports = { toText: toText, - ymd: ymd + ymd: ymd, } // console.log(toText(ymd([2018, 3, 28]))); diff --git a/src/template/templates/dates/_months.js b/src/template/templates/dates/_months.js index 23cf6074..2e377feb 100644 --- a/src/template/templates/dates/_months.js +++ b/src/template/templates/dates/_months.js @@ -11,5 +11,5 @@ module.exports = [ 'September', 'October', 'November', - 'December' + 'December', ] diff --git a/src/template/templates/dates/_timeSince.js b/src/template/templates/dates/_timeSince.js index 9e05d3c3..efebf784 100644 --- a/src/template/templates/dates/_timeSince.js +++ b/src/template/templates/dates/_timeSince.js @@ -1,5 +1,5 @@ //not all too fancy - used in {{timesince}} -const timeSince = function(str) { +const timeSince = function (str) { let d = new Date(str) if (isNaN(d.getTime())) { return '' diff --git a/src/template/templates/dates/index.js b/src/template/templates/dates/index.js index 75fe63ca..858a65cb 100644 --- a/src/template/templates/dates/index.js +++ b/src/template/templates/dates/index.js @@ -18,7 +18,7 @@ const months = [ 'September', 'October', 'November', - 'December' + 'December', ] const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] @@ -56,7 +56,7 @@ let dateTmpl = Object.assign({}, misc, { }, //Explictly-set dates - https://en.wikipedia.org/wiki/Template:Date date: 0, - 'time ago': tmpl => { + 'time ago': (tmpl) => { let order = ['date', 'fmt'] let time = parse(tmpl, order).date return timeSince(time) @@ -134,7 +134,7 @@ let dateTmpl = Object.assign({}, misc, { return str }, //sortable dates - - dts: tmpl => { + dts: (tmpl) => { //remove formatting stuff, ewww tmpl = tmpl.replace(/\|format=[ymd]+/i, '') tmpl = tmpl.replace(/\|abbr=(on|off)/i, '') @@ -189,7 +189,7 @@ let dateTmpl = Object.assign({}, misc, { 'age in years and months': parsers['diff-ym'], 'age in years, months and days': parsers['diff-ymd'], 'age in years and days': parsers['diff-yd'], - 'age in days': parsers['diff-d'] + 'age in days': parsers['diff-d'], // 'age in years, months, weeks and days': true, // 'age as of date': true, }) diff --git a/src/template/templates/dates/misc.js b/src/template/templates/dates/misc.js index 95d3a0b3..39390110 100644 --- a/src/template/templates/dates/misc.js +++ b/src/template/templates/dates/misc.js @@ -2,12 +2,12 @@ const format = require('./_format') const parse = require('../../_parsers/parse') const misc = { - reign: tmpl => { + reign: (tmpl) => { let order = ['start', 'end'] let obj = parse(tmpl, order) return `(r. ${obj.start} – ${obj.end})` }, - circa: tmpl => { + circa: (tmpl) => { let obj = parse(tmpl, ['year']) return `c. ${obj.year}` }, @@ -20,7 +20,7 @@ const misc = { }, monthname: 0, //https://en.wikipedia.org/wiki/Template:OldStyleDate - oldstyledate: tmpl => { + oldstyledate: (tmpl) => { let order = ['date', 'year'] let obj = parse(tmpl, order) let str = obj.date @@ -28,6 +28,6 @@ const misc = { str += ' ' + obj.year } return str - } + }, } module.exports = misc diff --git a/src/template/templates/dates/parsers.js b/src/template/templates/dates/parsers.js index 2bc85b42..52f25a46 100644 --- a/src/template/templates/dates/parsers.js +++ b/src/template/templates/dates/parsers.js @@ -6,14 +6,14 @@ const ymd = fmt.ymd const toText = fmt.toText //wrap it up as a template -const template = function(date) { +const template = function (date) { return { template: 'date', - data: date + data: date, } } -const getBoth = function(tmpl) { +const getBoth = function (tmpl) { tmpl = strip(tmpl) let arr = tmpl.split('|') let from = ymd(arr.slice(1, 4)) @@ -26,7 +26,7 @@ const getBoth = function(tmpl) { to = ymd(to) return { from: from, - to: to + to: to, } } @@ -87,7 +87,7 @@ const parsers = { let year = Number(obj.year) list.push( template({ - year: year + year: year, }) ) return String(year) @@ -95,15 +95,7 @@ const parsers = { //assume 'y|m|d' | 'y|m|d' // {{BirthDeathAge|B|1976|6|6|1990|8|8}} two_dates: (tmpl, list) => { - let order = [ - 'b', - 'birth_year', - 'birth_month', - 'birth_date', - 'death_year', - 'death_month', - 'death_date' - ] + let order = ['b', 'birth_year', 'birth_month', 'birth_date', 'death_year', 'death_month', 'death_date'] let obj = parse(tmpl, order) //'b' means show birth-date, otherwise show death-date if (obj.b && obj.b.toLowerCase() === 'b') { @@ -116,13 +108,13 @@ const parsers = { return toText(date) }, - age: tmpl => { + age: (tmpl) => { let d = getBoth(tmpl) let diff = delta(d.from, d.to) return diff.years || 0 }, - 'diff-y': tmpl => { + 'diff-y': (tmpl) => { let d = getBoth(tmpl) let diff = delta(d.from, d.to) if (diff.years === 1) { @@ -130,7 +122,7 @@ const parsers = { } return (diff.years || 0) + ' years' }, - 'diff-ym': tmpl => { + 'diff-ym': (tmpl) => { let d = getBoth(tmpl) let diff = delta(d.from, d.to) let arr = [] @@ -146,7 +138,7 @@ const parsers = { } return arr.join(', ') }, - 'diff-ymd': tmpl => { + 'diff-ymd': (tmpl) => { let d = getBoth(tmpl) let diff = delta(d.from, d.to) let arr = [] @@ -167,7 +159,7 @@ const parsers = { } return arr.join(', ') }, - 'diff-yd': tmpl => { + 'diff-yd': (tmpl) => { let d = getBoth(tmpl) let diff = delta(d.from, d.to) let arr = [] @@ -185,7 +177,7 @@ const parsers = { } return arr.join(', ') }, - 'diff-d': tmpl => { + 'diff-d': (tmpl) => { let d = getBoth(tmpl) let diff = delta(d.from, d.to) let arr = [] @@ -198,6 +190,6 @@ const parsers = { arr.push(diff.days + ' days') } return arr.join(', ') - } + }, } module.exports = parsers diff --git a/src/template/templates/elections.js b/src/template/templates/elections.js index 59b96cca..4de6de25 100644 --- a/src/template/templates/elections.js +++ b/src/template/templates/elections.js @@ -21,7 +21,7 @@ let templates = { let data = parse(tmpl) list.push(data) return '' - } + }, } //aliases templates['election box begin no change'] = templates['election box begin'] @@ -34,13 +34,11 @@ templates['election box candidate for alliance'] = templates['election box candi templates['election box candidate minor party'] = templates['election box candidate'] templates['election box candidate no party link no change'] = templates['election box candidate'] templates['election box candidate with party link'] = templates['election box candidate'] -templates['election box candidate with party link coalition 1918'] = - templates['election box candidate'] +templates['election box candidate with party link coalition 1918'] = templates['election box candidate'] templates['election box candidate with party link no change'] = templates['election box candidate'] templates['election box inline candidate'] = templates['election box candidate'] templates['election box inline candidate no change'] = templates['election box candidate'] templates['election box inline candidate with party link'] = templates['election box candidate'] -templates['election box inline candidate with party link no change'] = - templates['election box candidate'] +templates['election box inline candidate with party link no change'] = templates['election box candidate'] templates['election box inline incumbent'] = templates['election box candidate'] module.exports = templates diff --git a/src/template/templates/flags.js b/src/template/templates/flags.js index d842a9e7..709e423c 100644 --- a/src/template/templates/flags.js +++ b/src/template/templates/flags.js @@ -4,87 +4,87 @@ const flags = require('../../_data/flags') let templates = { //https://en.wikipedia.org/wiki/Template:Flag // {{flag|USA}} → USA - flag: tmpl => { + flag: (tmpl) => { let order = ['flag', 'variant'] let obj = parse(tmpl, order) let name = obj.flag || '' obj.flag = (obj.flag || '').toLowerCase() - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || [] + let found = flags.find((a) => obj.flag === a[1] || obj.flag === a[2]) || [] let flag = found[0] || '' return `${flag} [[${found[2]}|${name}]]` }, // {{flagcountry|USA}} → United States - flagcountry: tmpl => { + flagcountry: (tmpl) => { let order = ['flag', 'variant'] let obj = parse(tmpl, order) obj.flag = (obj.flag || '').toLowerCase() - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || [] + let found = flags.find((a) => obj.flag === a[1] || obj.flag === a[2]) || [] let flag = found[0] || '' return `${flag} [[${found[2]}]]` }, // (unlinked flag-country) - flagcu: tmpl => { + flagcu: (tmpl) => { let order = ['flag', 'variant'] let obj = parse(tmpl, order) obj.flag = (obj.flag || '').toLowerCase() - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || [] + let found = flags.find((a) => obj.flag === a[1] || obj.flag === a[2]) || [] let flag = found[0] || '' return `${flag} ${found[2]}` }, //https://en.wikipedia.org/wiki/Template:Flagicon // {{flagicon|USA}} → United States - flagicon: tmpl => { + flagicon: (tmpl) => { let order = ['flag', 'variant'] let obj = parse(tmpl, order) obj.flag = (obj.flag || '').toLowerCase() - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) + let found = flags.find((a) => obj.flag === a[1] || obj.flag === a[2]) if (!found) { return '' } return `[[${found[2]}|${found[0]}]]` }, //unlinked flagicon - flagdeco: tmpl => { + flagdeco: (tmpl) => { let order = ['flag', 'variant'] let obj = parse(tmpl, order) obj.flag = (obj.flag || '').toLowerCase() - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || [] + let found = flags.find((a) => obj.flag === a[1] || obj.flag === a[2]) || [] return found[0] || '' }, //same, but a soccer team - fb: tmpl => { + fb: (tmpl) => { let order = ['flag', 'variant'] let obj = parse(tmpl, order) obj.flag = (obj.flag || '').toLowerCase() - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) + let found = flags.find((a) => obj.flag === a[1] || obj.flag === a[2]) if (!found) { return '' } return `${found[0]} [[${found[2]} national football team|${found[2]}]]` }, - fbicon: tmpl => { + fbicon: (tmpl) => { let order = ['flag', 'variant'] let obj = parse(tmpl, order) obj.flag = (obj.flag || '').toLowerCase() - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) + let found = flags.find((a) => obj.flag === a[1] || obj.flag === a[2]) if (!found) { return '' } return ` [[${found[2]} national football team|${found[0]}]]` }, - flagathlete: tmpl => { + flagathlete: (tmpl) => { let order = ['name', 'flag', 'variant'] let obj = parse(tmpl, order) obj.flag = (obj.flag || '').toLowerCase() - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) + let found = flags.find((a) => obj.flag === a[1] || obj.flag === a[2]) if (!found) { return `[[${obj.name || ''}]]` } return `${found[0]} [[${obj.name || ''}]] (${found[1].toUpperCase()})` - } + }, } //support {{can}} -flags.forEach(a => { +flags.forEach((a) => { templates[a[1]] = () => { return a[0] } diff --git a/src/template/templates/formatting/lists.js b/src/template/templates/formatting/lists.js index 04633e55..a347f77c 100644 --- a/src/template/templates/formatting/lists.js +++ b/src/template/templates/formatting/lists.js @@ -3,7 +3,7 @@ const parse = require('../../_parsers/parse') const tmpls = { //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist - plainlist: tmpl => { + plainlist: (tmpl) => { tmpl = strip(tmpl) //remove the title let arr = tmpl.split('|') @@ -11,7 +11,7 @@ const tmpls = { tmpl = arr.join('|') //split on newline arr = tmpl.split(/\n ?\* ?/) - arr = arr.filter(s => s) + arr = arr.filter((s) => s) return arr.join('\n\n') }, @@ -32,7 +32,7 @@ const tmpls = { } } } - obj.list = obj.list.filter(s => s) + obj.list = obj.list.filter((s) => s) str += obj.list.join('\n\n') return str }, @@ -44,40 +44,40 @@ const tmpls = { let lines = obj.list.map((str, i) => `${i + 1}. ${str}`) return lines.join('\n\n') }, - hlist: tmpl => { + hlist: (tmpl) => { let obj = parse(tmpl) obj.list = obj.list || [] return obj.list.join(' · ') }, - pagelist: tmpl => { + pagelist: (tmpl) => { let arr = parse(tmpl).list || [] return arr.join(', ') }, //actually rendering these links removes the text. //https://en.wikipedia.org/wiki/Template:Catlist - catlist: tmpl => { + catlist: (tmpl) => { let arr = parse(tmpl).list || [] return arr.join(', ') }, //https://en.wikipedia.org/wiki/Template:Br_separated_entries - 'br separated entries': tmpl => { + 'br separated entries': (tmpl) => { let arr = parse(tmpl).list || [] return arr.join('\n\n') }, - 'comma separated entries': tmpl => { + 'comma separated entries': (tmpl) => { let arr = parse(tmpl).list || [] return arr.join(', ') }, //https://en.wikipedia.org/wiki/Template:Bare_anchored_list - 'anchored list': tmpl => { + 'anchored list': (tmpl) => { let arr = parse(tmpl).list || [] arr = arr.map((str, i) => `${i + 1}. ${str}`) return arr.join('\n\n') }, - 'bulleted list': tmpl => { + 'bulleted list': (tmpl) => { let arr = parse(tmpl).list || [] - arr = arr.filter(f => f) - arr = arr.map(str => '• ' + str) + arr = arr.filter((f) => f) + arr = arr.map((str) => '• ' + str) return arr.join('\n\n') }, //https://en.wikipedia.org/wiki/Template:Columns-list @@ -85,15 +85,15 @@ const tmpls = { let arr = parse(tmpl).list || [] let str = arr[0] || '' let lines = str.split(/\n/) - lines = lines.filter(f => f) - lines = lines.map(s => s.replace(/\*/, '')) + lines = lines.filter((f) => f) + lines = lines.map((s) => s.replace(/\*/, '')) list.push({ template: 'columns-list', - list: lines + list: lines, }) - lines = lines.map(s => '• ' + s) + lines = lines.map((s) => '• ' + s) return lines.join('\n\n') - } + }, // 'pagelist':(tmpl)=>{}, } //aliases diff --git a/src/template/templates/formatting/misc.js b/src/template/templates/formatting/misc.js index 1c4be859..e743841a 100644 --- a/src/template/templates/formatting/misc.js +++ b/src/template/templates/formatting/misc.js @@ -2,7 +2,7 @@ const parse = require('../../_parsers/parse') const inline = { //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values - convert: tmpl => { + convert: (tmpl) => { let order = ['num', 'two', 'three', 'four'] let obj = parse(tmpl, order) //todo: support plural units @@ -15,25 +15,25 @@ const inline = { return `${obj.num} ${obj.two}` }, //https://en.wikipedia.org/wiki/Template:Term - term: tmpl => { + term: (tmpl) => { let obj = parse(tmpl, ['term']) return `${obj.term}:` }, defn: 0, //https://en.wikipedia.org/wiki/Template:Linum lino: 0, - linum: tmpl => { + linum: (tmpl) => { let obj = parse(tmpl, ['num', 'text']) return `${obj.num}. ${obj.text}` }, //https://en.wikipedia.org/wiki/Template:Interlanguage_link - ill: tmpl => { + ill: (tmpl) => { let order = ['text', 'lan1', 'text1', 'lan2', 'text2'] let obj = parse(tmpl, order) return obj.text }, //https://en.wikipedia.org/wiki/Template:Frac - frac: tmpl => { + frac: (tmpl) => { let order = ['a', 'b', 'c'] let obj = parse(tmpl, order) if (obj.c) { @@ -50,14 +50,14 @@ const inline = { list.push(obj) let result = [] let units = ['m', 'cm', 'ft', 'in'] //order matters - units.forEach(unit => { + units.forEach((unit) => { if (obj.hasOwnProperty(unit) === true) { result.push(obj[unit] + unit) } }) return result.join(' ') }, - 'block indent': tmpl => { + 'block indent': (tmpl) => { let obj = parse(tmpl) if (obj['1']) { return '\n' + obj['1'] + '\n' @@ -81,21 +81,21 @@ const inline = { }, //https://en.wikipedia.org/wiki/Template:Lbs - lbs: tmpl => { + lbs: (tmpl) => { let obj = parse(tmpl, ['text']) return `[[${obj.text} Lifeboat Station|${obj.text}]]` }, //Foo-class - lbc: tmpl => { + lbc: (tmpl) => { let obj = parse(tmpl, ['text']) return `[[${obj.text}-class lifeboat|${obj.text}-class]]` }, - lbb: tmpl => { + lbb: (tmpl) => { let obj = parse(tmpl, ['text']) return `[[${obj.text}-class lifeboat|${obj.text}]]` }, // https://en.wikipedia.org/wiki/Template:Own - own: tmpl => { + own: (tmpl) => { let obj = parse(tmpl, ['author']) let str = 'Own work' if (obj.author) { @@ -113,7 +113,7 @@ const inline = { } list.push({ template: 'sic', - word: word + word: word, }) if (obj.nolink === 'y') { return word @@ -121,7 +121,7 @@ const inline = { return `${word} [sic]` }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - formatnum: tmpl => { + formatnum: (tmpl) => { tmpl = tmpl.replace(/:/, '|') let obj = parse(tmpl, ['number']) let str = obj.number || '' @@ -130,18 +130,18 @@ const inline = { return num.toLocaleString() || '' }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - '#dateformat': tmpl => { + '#dateformat': (tmpl) => { tmpl = tmpl.replace(/:/, '|') let obj = parse(tmpl, ['date', 'format']) return obj.date }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - lc: tmpl => { + lc: (tmpl) => { tmpl = tmpl.replace(/:/, '|') let obj = parse(tmpl, ['text']) return (obj.text || '').toLowerCase() }, - lcfirst: tmpl => { + lcfirst: (tmpl) => { tmpl = tmpl.replace(/:/, '|') let obj = parse(tmpl, ['text']) let text = obj.text @@ -151,12 +151,12 @@ const inline = { return text[0].toLowerCase() + text.substr(1) }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - uc: tmpl => { + uc: (tmpl) => { tmpl = tmpl.replace(/:/, '|') let obj = parse(tmpl, ['text']) return (obj.text || '').toUpperCase() }, - ucfirst: tmpl => { + ucfirst: (tmpl) => { tmpl = tmpl.replace(/:/, '|') let obj = parse(tmpl, ['text']) let text = obj.text @@ -165,13 +165,13 @@ const inline = { } return text[0].toUpperCase() + text.substr(1) }, - padleft: tmpl => { + padleft: (tmpl) => { tmpl = tmpl.replace(/:/, '|') let obj = parse(tmpl, ['text', 'num']) let text = obj.text || '' return text.padStart(obj.num, obj.str || '0') }, - padright: tmpl => { + padright: (tmpl) => { tmpl = tmpl.replace(/:/, '|') let obj = parse(tmpl, ['text', 'num']) let text = obj.text || '' @@ -179,12 +179,12 @@ const inline = { }, //abbreviation/meaning //https://en.wikipedia.org/wiki/Template:Abbr - abbr: tmpl => { + abbr: (tmpl) => { let obj = parse(tmpl, ['abbr', 'meaning', 'ipa']) return obj.abbr }, //https://en.wikipedia.org/wiki/Template:Abbrlink - abbrlink: tmpl => { + abbrlink: (tmpl) => { let obj = parse(tmpl, ['abbr', 'page']) if (obj.page) { return `[[${obj.page}|${obj.abbr}]]` @@ -197,7 +197,7 @@ const inline = { //https://en.wikipedia.org/wiki/Template:Finedetail finedetail: 0, //https://en.wikipedia.org/wiki/Template:Sort - sort: 1 + sort: 1, } //aliases diff --git a/src/template/templates/geo/coor.js b/src/template/templates/geo/coor.js index 03936690..676dbeb6 100644 --- a/src/template/templates/geo/coor.js +++ b/src/template/templates/geo/coor.js @@ -1,7 +1,7 @@ const convertDMS = require('./dms-format') const parse = require('../../_parsers/parse') -const round = function(num) { +const round = function (num) { if (typeof num !== 'number') { return num } @@ -12,16 +12,16 @@ const round = function(num) { //these hemispheres mean negative decimals const negative = { s: true, - w: true + w: true, } -const findLatLng = function(arr) { - const types = arr.map(s => typeof s).join('|') +const findLatLng = function (arr) { + const types = arr.map((s) => typeof s).join('|') //support {{lat|lng}} if (arr.length === 2 && types === 'number|number') { return { lat: arr[0], - lon: arr[1] + lon: arr[1], } } //support {{dd|N/S|dd|E/W}} @@ -34,29 +34,29 @@ const findLatLng = function(arr) { } return { lat: arr[0], - lon: arr[2] + lon: arr[2], } } //support {{dd|mm|N/S|dd|mm|E/W}} if (arr.length === 6) { return { lat: convertDMS(arr.slice(0, 3)), - lon: convertDMS(arr.slice(3)) + lon: convertDMS(arr.slice(3)), } } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} if (arr.length === 8) { return { lat: convertDMS(arr.slice(0, 4)), - lon: convertDMS(arr.slice(4)) + lon: convertDMS(arr.slice(4)), } } return {} } -const parseParams = function(obj) { +const parseParams = function (obj) { obj.list = obj.list || [] - obj.list = obj.list.map(str => { + obj.list = obj.list.map((str) => { let num = Number(str) if (!isNaN(num)) { return num @@ -70,11 +70,11 @@ const parseParams = function(obj) { } return str }) - obj.list = obj.list.filter(s => s !== null) + obj.list = obj.list.filter((s) => s !== null) return obj } -const parseCoor = function(tmpl) { +const parseCoor = function (tmpl) { let obj = parse(tmpl) obj = parseParams(obj) let tmp = findLatLng(obj.list) diff --git a/src/template/templates/geo/index.js b/src/template/templates/geo/index.js index ccd64bfd..2976d913 100644 --- a/src/template/templates/geo/index.js +++ b/src/template/templates/geo/index.js @@ -11,7 +11,7 @@ const templates = { return '' }, //https://en.wikivoyage.org/wiki/Template:Geo - geo: ['lat', 'lon', 'zoom'] + geo: ['lat', 'lon', 'zoom'], } // {{coord|latitude|longitude|coordinate parameters|template parameters}} // {{coord|dd|N/S|dd|E/W|coordinate parameters|template parameters}} diff --git a/src/template/templates/ipa.js b/src/template/templates/ipa.js index 44fecc4a..35df3c8c 100644 --- a/src/template/templates/ipa.js +++ b/src/template/templates/ipa.js @@ -1,7 +1,7 @@ const parse = require('../_parsers/parse') const languages = require('../../_data/languages') -const getLang = function(name) { +const getLang = function (name) { //grab the language from the template name - 'ipa-de' let lang = name.match(/ipac?-(.+)/) if (lang !== null) { @@ -43,12 +43,12 @@ const templates = { } list.push(obj) return obj.text || '' - } + }, } // - other languages - // Polish, {{IPAc-pl}} {{IPAc-pl|'|sz|cz|e|ć|i|n}} → [ˈʂt͡ʂɛt͡ɕin] // Portuguese, {{IPAc-pt}} {{IPAc-pt|p|o|<|r|t|u|'|g|a|l|lang=pt}} and {{IPAc-pt|b|r|a|'|s|i|l|lang=br}} → [puɾtuˈɣaɫ] and [bɾaˈsiw] -Object.keys(languages).forEach(lang => { +Object.keys(languages).forEach((lang) => { templates['ipa-' + lang] = templates.ipa templates['ipac-' + lang] = templates.ipac }) diff --git a/src/template/templates/languages.js b/src/template/templates/languages.js index c6173b83..612b065f 100644 --- a/src/template/templates/languages.js +++ b/src/template/templates/languages.js @@ -17,10 +17,10 @@ const templates = { str += ` (${obj.kanji})` } return str - } + }, } //https://en.wikipedia.org/wiki/Category:Lang-x_templates -Object.keys(languages).forEach(k => { +Object.keys(languages).forEach((k) => { templates['lang-' + k] = templates['lang-de'] }) templates['nihongo2'] = templates.nihongo diff --git a/src/template/templates/math.js b/src/template/templates/math.js index 89f74cf7..c04ce402 100644 --- a/src/template/templates/math.js +++ b/src/template/templates/math.js @@ -2,7 +2,7 @@ const parse = require('../_parsers/parse') // const parseSentence = require('../../04-sentence').fromText; //simply num/denom * 100 -const percentage = function(obj) { +const percentage = function (obj) { if (!obj.numerator && !obj.denominator) { return null } @@ -29,7 +29,7 @@ let templates = { let order = ['a', 'b', 'c'] let obj = parse(tmpl, order) let data = { - template: 'sfrac' + template: 'sfrac', } if (obj.c) { data.integer = obj.a @@ -49,13 +49,13 @@ let templates = { return `${data.numerator}⁄${data.denominator}` }, //https://en.wikipedia.org/wiki/Template:Radic - radic: tmpl => { + radic: (tmpl) => { let order = ['after', 'before'] let obj = parse(tmpl, order) return `${obj.before || ''}√${obj.after || ''}` }, //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} - percentage: tmpl => { + percentage: (tmpl) => { let obj = parse(tmpl, ['numerator', 'denominator', 'decimals']) let num = percentage(obj) if (num === null) { @@ -64,12 +64,12 @@ let templates = { return num + '%' }, // {{Percent-done|done=N|total=N|digits=N}} - 'percent-done': tmpl => { + 'percent-done': (tmpl) => { let obj = parse(tmpl, ['done', 'total', 'digits']) let num = percentage({ numerator: obj.done, denominator: obj.total, - decimals: obj.digits + decimals: obj.digits, }) if (num === null) { return '' @@ -92,7 +92,7 @@ let templates = { let num = percentage({ numerator: wins, denominator: games, - decimals: 1 + decimals: 1, }) if (num === null) { return '' @@ -107,14 +107,14 @@ let templates = { let num = percentage({ numerator: wins, denominator: wins + losses, - decimals: 1 + decimals: 1, }) if (num === null) { return '' } num = `.${num * 10}` return `${wins || 0} || ${losses || 0} || ${num || '-'}` - } + }, } //aliases templates['sfrac'] = templates.frac diff --git a/src/template/templates/misc.js b/src/template/templates/misc.js index 97229126..26cd8427 100644 --- a/src/template/templates/misc.js +++ b/src/template/templates/misc.js @@ -1,6 +1,6 @@ const parse = require('../_parsers/parse') -const generic = function(tmpl, list, alias) { +const generic = function (tmpl, list, alias) { let obj = parse(tmpl) if (alias) { obj.name = obj.template @@ -58,18 +58,18 @@ const misc = { let obj = parse(tmpl, order) let template = { template: 'video game release', - releases: [] + releases: [], } for (let i = 0; i < order.length; i += 2) { if (obj[order[i]]) { template.releases.push({ region: obj[order[i]], - date: obj[order[i + 1]] + date: obj[order[i + 1]], }) } } list.push(template) - let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n') + let str = template.releases.map((o) => `${o.region}: ${o.date || ''}`).join('\n\n') return '\n' + str + '\n' }, //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t @@ -90,13 +90,13 @@ const misc = { let num = data.list[i + 1] years.push({ year: data.list[i], - val: Number(num) || num + val: Number(num) || num, }) } data.data = years delete data.list list.push(data) return '' - } + }, } module.exports = misc diff --git a/src/template/templates/punctuation.js b/src/template/templates/punctuation.js index 6ca5a238..129dca35 100644 --- a/src/template/templates/punctuation.js +++ b/src/template/templates/punctuation.js @@ -42,10 +42,10 @@ let punctuation = [ ['asterisk', '*'], ['long dash', '———'], ['clear', '\n\n'], - ['h.', 'ḥ'] + ['h.', 'ḥ'], ] const templates = {} -punctuation.forEach(a => { +punctuation.forEach((a) => { templates[a[0]] = a[1] }) module.exports = templates diff --git a/src/template/templates/science.js b/src/template/templates/science.js index 52c92c8b..56998150 100644 --- a/src/template/templates/science.js +++ b/src/template/templates/science.js @@ -75,7 +75,7 @@ let templates = { let dataArray = rows.map((row) => { let parameters = row.split(';') let rowObject = { - options: new Map + options: new Map(), } let positionalIndex = 0 for (let i = 0; i < parameters.length; i++) { diff --git a/src/template/templates/soccer.js b/src/template/templates/soccer.js index c6087b9f..515a780c 100644 --- a/src/template/templates/soccer.js +++ b/src/template/templates/soccer.js @@ -8,7 +8,7 @@ let sports = { let str = `[[${res.name}]]` if (res.country) { let country = (res.country || '').toLowerCase() - let flag = flags.find(a => country === a[1] || country === a[2]) || [] + let flag = flags.find((a) => country === a[1] || country === a[2]) || [] if (flag && flag[0]) { str = flag[0] + ' ' + str } @@ -24,20 +24,20 @@ let sports = { let res = parse(tmpl) let obj = { template: 'goal', - data: [] + data: [], } let arr = res.list || [] for (let i = 0; i < arr.length; i += 2) { obj.data.push({ min: arr[i], - note: arr[i + 1] || '' + note: arr[i + 1] || '', }) } list.push(obj) //generate a little text summary let summary = '⚽ ' summary += obj.data - .map(o => { + .map((o) => { let note = o.note if (note) { note = ` (${note})` @@ -74,13 +74,13 @@ let sports = { }, pengoal: (tmpl, list) => { list.push({ - template: 'pengoal' + template: 'pengoal', }) return '✅' }, penmiss: (tmpl, list) => { list.push({ - template: 'penmiss' + template: 'penmiss', }) return '❌' }, @@ -90,11 +90,11 @@ let sports = { let result = { template: 'sent off', cards: obj.cards, - minutes: obj.list || [] + minutes: obj.list || [], } list.push(result) - let mins = result.minutes.map(m => m + "'").join(', ') + let mins = result.minutes.map((m) => m + "'").join(', ') return 'sent off: ' + mins - } + }, } module.exports = sports diff --git a/src/template/templates/sports.js b/src/template/templates/sports.js index d416ac57..e3d7f9c0 100644 --- a/src/template/templates/sports.js +++ b/src/template/templates/sports.js @@ -2,11 +2,11 @@ const parse = require('../_parsers/parse') const misc = { 'baseball secondary style': 0, - mlbplayer: function(tmpl, list) { + mlbplayer: function (tmpl, list) { let obj = parse(tmpl, ['number', 'name', 'dl']) list.push(obj) return obj.name - } + }, } module.exports = Object.assign({}, misc, require('./brackets'), require('./soccer')) diff --git a/src/template/templates/stock-exchanges.js b/src/template/templates/stock-exchanges.js index 01cbe8bb..c6d5bf10 100644 --- a/src/template/templates/stock-exchanges.js +++ b/src/template/templates/stock-exchanges.js @@ -100,7 +100,7 @@ const codes = { wse: 'wse', //https://en.wikipedia.org/wiki/Template:Warsaw_Stock_Exchange 'zagreb stock exchange': 'zagreb stock exchange', //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange 'zimbabwe stock exchange': 'zimbabwe stock exchange', //https://en.wikipedia.org/wiki/Template:Zimbabwe_Stock_Exchange - zse: 'zse' //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange + zse: 'zse', //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange } const parseStockExchange = (tmpl, list) => { @@ -123,7 +123,7 @@ const parseStockExchange = (tmpl, list) => { const exchanges = {} //the others fit the same pattern.. -Object.keys(codes).forEach(k => { +Object.keys(codes).forEach((k) => { exchanges[k] = parseStockExchange }) diff --git a/src/template/templates/weather.js b/src/template/templates/weather.js index d2b61c68..d4dc80c9 100644 --- a/src/template/templates/weather.js +++ b/src/template/templates/weather.js @@ -2,22 +2,9 @@ const parse = require('../_parsers/parse') const hasMonth = /^jan /i const isYear = /^year /i -const monthList = [ - 'jan', - 'feb', - 'mar', - 'apr', - 'may', - 'jun', - 'jul', - 'aug', - 'sep', - 'oct', - 'nov', - 'dec' -] +const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'] -const toNumber = function(str) { +const toNumber = function (str) { str = str.replace(/,/g, '') str = str.replace(/−/g, '-') let num = Number(str) @@ -34,11 +21,11 @@ let templates = { let obj = parse(tmpl) //collect all month-based data let byMonth = {} - let properties = Object.keys(obj).filter(k => hasMonth.test(k)) - properties = properties.map(k => k.replace(hasMonth, '')) - properties.forEach(prop => { + let properties = Object.keys(obj).filter((k) => hasMonth.test(k)) + properties = properties.map((k) => k.replace(hasMonth, '')) + properties.forEach((prop) => { byMonth[prop] = [] - monthList.forEach(m => { + monthList.forEach((m) => { let key = `${m} ${prop}` if (obj.hasOwnProperty(key)) { let num = toNumber(obj[key]) @@ -52,7 +39,7 @@ let templates = { //collect year-based data let byYear = {} - Object.keys(obj).forEach(k => { + Object.keys(obj).forEach((k) => { if (isYear.test(k)) { let prop = k.replace(isYear, '') byYear[prop] = obj[k] @@ -69,11 +56,11 @@ let templates = { //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C 'weather box/concise c': (tmpl, list) => { let obj = parse(tmpl) - obj.list = obj.list.map(s => toNumber(s)) + obj.list = obj.list.map((s) => toNumber(s)) obj.byMonth = { 'high c': obj.list.slice(0, 12), 'low c': obj.list.slice(12, 24), - 'rain mm': obj.list.slice(24, 36) + 'rain mm': obj.list.slice(24, 36), } delete obj.list obj.template = 'weather box' @@ -82,11 +69,11 @@ let templates = { }, 'weather box/concise f': (tmpl, list) => { let obj = parse(tmpl) - obj.list = obj.list.map(s => toNumber(s)) + obj.list = obj.list.map((s) => toNumber(s)) obj.byMonth = { 'high f': obj.list.slice(0, 12), 'low f': obj.list.slice(12, 24), - 'rain inch': obj.list.slice(24, 36) + 'rain inch': obj.list.slice(24, 36), } delete obj.list obj.template = 'weather box' @@ -101,7 +88,7 @@ let templates = { let source = lines[38] lines = lines.slice(1) //amazingly, they use '−' symbol here instead of negatives... - lines = lines.map(str => { + lines = lines.map((str) => { if (str && str[0] === '−') { str = str.replace(/−/, '-') } @@ -113,7 +100,7 @@ let templates = { months.push({ low: toNumber(lines[i]), high: toNumber(lines[i + 1]), - precip: toNumber(lines[i + 2]) + precip: toNumber(lines[i + 2]), }) } let obj = { @@ -121,12 +108,12 @@ let templates = { data: { title: title, source: source, - months: months - } + months: months, + }, } list.push(obj) return '' - } + }, } module.exports = templates diff --git a/src/template/templates/websites.js b/src/template/templates/websites.js index 88199628..59383472 100644 --- a/src/template/templates/websites.js +++ b/src/template/templates/websites.js @@ -48,7 +48,7 @@ const externals = { congbio: ['id', 'name', 'date'], - 'hollywood walk of fame': ['name'] + 'hollywood walk of fame': ['name'], } //alias externals.imdb = externals['imdb name'] diff --git a/src/template/templates/wikipedia/links.js b/src/template/templates/wikipedia/links.js index 2b677827..aaf491d1 100644 --- a/src/template/templates/wikipedia/links.js +++ b/src/template/templates/wikipedia/links.js @@ -8,7 +8,7 @@ let templates = { 'la-verb-form': 0, 'la-ipa': 0, //https://en.wikipedia.org/wiki/Template:Sortname - sortname: tmpl => { + sortname: (tmpl) => { let order = ['first', 'last', 'target', 'sort'] let obj = parse(tmpl, order) let name = `${obj.first || ''} ${obj.last || ''}` @@ -26,7 +26,7 @@ let templates = { return `[[${obj.target}|${name}]]` } return `[[${name}]]` - } + }, } //these are insane @@ -56,12 +56,12 @@ const links = [ 'mli', 'mlix', '#invoke', - 'url' //https://en.wikipedia.org/wiki/Template:URL + 'url', //https://en.wikipedia.org/wiki/Template:URL ] //keyValues -links.forEach(k => { - templates[k] = tmpl => { +links.forEach((k) => { + templates[k] = (tmpl) => { let order = ['first', 'second'] let obj = parse(tmpl, order) return obj.second || obj.first diff --git a/src/template/templates/wikipedia/table-cell.js b/src/template/templates/wikipedia/table-cell.js index b37ef900..2a56542d 100644 --- a/src/template/templates/wikipedia/table-cell.js +++ b/src/template/templates/wikipedia/table-cell.js @@ -1,7 +1,7 @@ //random misc for inline wikipedia templates const parse = require('../../_parsers/parse') -const titlecase = str => { +const titlecase = (str) => { return str.charAt(0).toUpperCase() + str.substring(1) } @@ -71,10 +71,10 @@ let cells = [ 'crecurring', 'cguest', 'not yet', - 'optional' + 'optional', ] -cells.forEach(str => { - templates[str] = tmpl => { +cells.forEach((str) => { + templates[str] = (tmpl) => { let data = parse(tmpl, ['text']) return data.text || titlecase(data.template) } @@ -99,17 +99,17 @@ let moreCells = [ ['dunno', '?'], ['draw', ''], ['cnone', ''], - ['nocontest', ''] + ['nocontest', ''], ] -moreCells.forEach(a => { - templates[a[0]] = tmpl => { +moreCells.forEach((a) => { + templates[a[0]] = (tmpl) => { let data = parse(tmpl, ['text']) return data.text || a[1] } }) //this one's a little different -templates.won = tmpl => { +templates.won = (tmpl) => { let data = parse(tmpl, ['text']) return data.place || data.text || titlecase(data.template) } diff --git a/src/template/templates/wiktionary.js b/src/template/templates/wiktionary.js index 5bd6b269..bd769da8 100644 --- a/src/template/templates/wiktionary.js +++ b/src/template/templates/wiktionary.js @@ -34,7 +34,7 @@ const templates = { let obj = parse(tmpl, ['word']) list.push(obj) return 'Rhymes: -' + (obj.word || '') - } + }, } //https://en.wiktionary.org/wiki/Category:Form-of_templates @@ -198,9 +198,9 @@ let conjugations = [ 'uncommon spelling', 'verbal noun', 'vocative plural', - 'vocative singular' + 'vocative singular', ] -conjugations.forEach(name => { +conjugations.forEach((name) => { templates[name + ' of'] = (tmpl, list) => { let obj = parse(tmpl, ['lemma']) obj.tags = obj.list From 29a5661493d204b129adaa9ea252ed6c7c6c9c38 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Fri, 30 Oct 2020 12:52:22 -0400 Subject: [PATCH 021/117] reformat plugins with new prettier rules --- plugins/classify/src/_byPattern.js | 2 +- plugins/classify/src/_skip/index.js | 4 +- plugins/classify/src/byCategory/mapping.js | 2 +- plugins/classify/src/byCategory/patterns.js | 24 ++++----- plugins/classify/src/bySection/index.js | 4 +- plugins/classify/src/bySection/mapping.js | 2 +- plugins/classify/src/byTemplate/index.js | 2 +- plugins/classify/src/byTemplate/mapping.js | 2 +- plugins/classify/src/byTitle/patterns.js | 2 +- plugins/classify/src/score.js | 6 +-- plugins/html/src/01-doc.js | 10 ++-- plugins/html/src/02-section.js | 14 ++--- plugins/html/src/03-paragraph.js | 4 +- plugins/html/src/04-sentence.js | 8 +-- plugins/html/src/05-link.js | 2 +- plugins/html/src/_lib/smartReplace.js | 2 +- plugins/html/src/image.js | 2 +- plugins/html/src/index.js | 2 +- plugins/html/src/infobox.js | 4 +- plugins/html/src/list.js | 4 +- plugins/html/src/reference.js | 2 +- plugins/i18n/src/index.js | 8 +-- plugins/image/src/http/server.js | 6 +-- plugins/image/src/img-exists.js | 6 +-- plugins/image/src/index.js | 2 +- plugins/image/src/url-hash.js | 4 +- plugins/latex/src/01-doc.js | 10 ++-- plugins/latex/src/02-section.js | 58 ++++++++++----------- plugins/latex/src/03-paragraph.js | 2 +- plugins/latex/src/04-sentence.js | 8 +-- plugins/latex/src/05-link.js | 2 +- plugins/latex/src/_lib/smartReplace.js | 2 +- plugins/latex/src/image.js | 2 +- plugins/latex/src/index.js | 2 +- plugins/latex/src/infobox.js | 4 +- plugins/latex/src/list.js | 4 +- plugins/latex/src/reference.js | 2 +- plugins/markdown/src/01-doc.js | 11 ++-- plugins/markdown/src/02-section.js | 12 ++--- plugins/markdown/src/03-paragraph.js | 2 +- plugins/markdown/src/04-sentence.js | 8 +-- plugins/markdown/src/05-link.js | 2 +- plugins/markdown/src/_lib/smartReplace.js | 2 +- plugins/markdown/src/image.js | 2 +- plugins/markdown/src/index.js | 2 +- plugins/markdown/src/infobox.js | 4 +- plugins/markdown/src/list.js | 4 +- plugins/markdown/src/reference.js | 2 +- plugins/person/src/_lib/_infoboxes.js | 2 +- plugins/person/src/getSentence.js | 4 +- plugins/person/src/isAlive/byCategory.js | 4 +- plugins/person/src/isAlive/byTemplate.js | 4 +- plugins/person/src/parseDate.js | 4 +- plugins/summary/src/template/index.js | 4 +- plugins/wikitext/src/05-link.js | 2 +- plugins/wikitext/src/_lib/helpers.js | 2 +- plugins/wikitext/src/_lib/smartReplace.js | 2 +- plugins/wikitext/src/index.js | 2 +- plugins/wikitext/src/infobox.js | 4 +- plugins/wikitext/src/list.js | 4 +- 60 files changed, 160 insertions(+), 155 deletions(-) diff --git a/plugins/classify/src/_byPattern.js b/plugins/classify/src/_byPattern.js index 55e19f40..ecd6876c 100644 --- a/plugins/classify/src/_byPattern.js +++ b/plugins/classify/src/_byPattern.js @@ -1,4 +1,4 @@ -const byPattern = function(str, patterns) { +const byPattern = function (str, patterns) { let types = Object.keys(patterns) for (let i = 0; i < types.length; i++) { const key = types[i] diff --git a/plugins/classify/src/_skip/index.js b/plugins/classify/src/_skip/index.js index eb34a6cf..bbb253b5 100644 --- a/plugins/classify/src/_skip/index.js +++ b/plugins/classify/src/_skip/index.js @@ -2,13 +2,13 @@ const skip = { disambiguation: true, surname: true, name: true, - 'given name': true + 'given name': true, } const paren = /\((.*)\)$/ const listOf = /^list of ./ const disambig = /\(disambiguation\)/ -const skipPage = function(doc) { +const skipPage = function (doc) { let title = doc.title() || '' //look at parentheses like 'Tornado (film)' diff --git a/plugins/classify/src/byCategory/mapping.js b/plugins/classify/src/byCategory/mapping.js index f826ca33..88c84cdf 100644 --- a/plugins/classify/src/byCategory/mapping.js +++ b/plugins/classify/src/byCategory/mapping.js @@ -431,5 +431,5 @@ module.exports = { 'uk mps 2017–': 'Person/Politician', "members of the queen's privy council for canada": 'Person', 'vaudeville performers': 'Person/Artist', - 'american presbyterians': 'Person' + 'american presbyterians': 'Person', } diff --git a/plugins/classify/src/byCategory/patterns.js b/plugins/classify/src/byCategory/patterns.js index 093a9eb0..15e923f3 100644 --- a/plugins/classify/src/byCategory/patterns.js +++ b/plugins/classify/src/byCategory/patterns.js @@ -8,7 +8,7 @@ const patterns = { /. (phyla|genera)$/, /. taxonomic families$/, /plants used in ./, - / (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/ + / (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/, ], // ==Person== @@ -16,7 +16,7 @@ const patterns = { /politicians from ./, /politician stubs$/, /. (democrats|republicans|politicians)$/, - /mayors of ./ + /mayors of ./, ], 'Person/Athlete': [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/], 'Person/Actor': [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/], @@ -32,7 +32,7 @@ const patterns = { /(alumni|fellows) of .$/, /(people|writer) stubs$/, /(american|english) (fe)?male ./, - /(american|english) (architects|people)/ + /(american|english) (architects|people)/, ], // ==Place== @@ -40,12 +40,12 @@ const patterns = { /(buildings|bridges) completed in /, /airports established in ./, /(airports|bridges) in ./, - /buildings and structures in ./ + /buildings and structures in ./, ], 'Place/BodyOfWater': [/(rivers|lakes|tributaries) of ./], 'Place/City': [ /^cities and towns in ./, - /(municipalities|settlements|villages|localities|townships) in ./ + /(municipalities|settlements|villages|localities|townships) in ./, ], Place: [ /populated places/, @@ -54,7 +54,7 @@ const patterns = { /parks in ./, / district$/, /geography stubs$/, - /sports venue stubs$/ + /sports venue stubs$/, ], // ==Creative Work== @@ -67,11 +67,11 @@ const patterns = { // ==Event== 'Event/SportsEvent': [ /. league seasons$/, - /^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/ + /^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/, ], 'Event/MilitaryConflict': [ /conflicts (in|of) [0-9]{4}/, - /(wars|battles|conflicts) (involving|of|in) ./ + /(wars|battles|conflicts) (involving|of|in) ./, ], Event: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./], @@ -80,11 +80,11 @@ const patterns = { /musical groups from /, /musical groups (dis)?established in [0-9]{4}/, /musical group stubs/, - /. music(al)? (groups|duos|trios|quartets|quintets)$/ + /. music(al)? (groups|duos|trios|quartets|quintets)$/, ], 'Organization/SportsTeam': [ /football clubs in ./, - /(basketball|hockey|baseball|football) teams (in|established) ./ + /(basketball|hockey|baseball|football) teams (in|established) ./, ], 'Organization/Company': [/companies (established|based) in ./], Organization: [ @@ -93,7 +93,7 @@ const patterns = { /(secondary|primary) schools/, /military units/, /magazines/, - /organi[sz]ation stubs$/ - ] + /organi[sz]ation stubs$/, + ], } module.exports = patterns diff --git a/plugins/classify/src/bySection/index.js b/plugins/classify/src/bySection/index.js index cf6572cd..e82ba605 100644 --- a/plugins/classify/src/bySection/index.js +++ b/plugins/classify/src/bySection/index.js @@ -1,8 +1,8 @@ const sections = require('./mapping') -const fromSection = function(doc) { +const fromSection = function (doc) { let found = [] - let titles = doc.sections().map(s => { + let titles = doc.sections().map((s) => { let str = s.title() str = str.toLowerCase().trim() return str diff --git a/plugins/classify/src/bySection/mapping.js b/plugins/classify/src/bySection/mapping.js index 8ecbae5a..a7a22540 100644 --- a/plugins/classify/src/bySection/mapping.js +++ b/plugins/classify/src/bySection/mapping.js @@ -197,7 +197,7 @@ module.exports = { 'parks and recreation': 'Place', 'public transportation': 'Place', 'coat of arms': 'Place', - churches: 'Place' + churches: 'Place', // learned things //compatibility: 'Thing', diff --git a/plugins/classify/src/byTemplate/index.js b/plugins/classify/src/byTemplate/index.js index d6313e6f..c3463fd4 100644 --- a/plugins/classify/src/byTemplate/index.js +++ b/plugins/classify/src/byTemplate/index.js @@ -2,7 +2,7 @@ const patterns = require('./patterns') const mapping = require('./mapping') const byPattern = require('../_byPattern') -const byTemplate = function(doc) { +const byTemplate = function (doc) { let templates = doc.templates() let found = [] for (let i = 0; i < templates.length; i++) { diff --git a/plugins/classify/src/byTemplate/mapping.js b/plugins/classify/src/byTemplate/mapping.js index 21f5e13d..52d3bec9 100644 --- a/plugins/classify/src/byTemplate/mapping.js +++ b/plugins/classify/src/byTemplate/mapping.js @@ -122,5 +122,5 @@ module.exports = { 'wikivoyage-inline': 'Place', 'election box': 'Place', zh: 'Place', - 'wide image': 'Place' + 'wide image': 'Place', } diff --git a/plugins/classify/src/byTitle/patterns.js b/plugins/classify/src/byTitle/patterns.js index ceadb527..f794169d 100644 --- a/plugins/classify/src/byTitle/patterns.js +++ b/plugins/classify/src/byTitle/patterns.js @@ -1,5 +1,5 @@ module.exports = { 'CreativeWork/Film': [/ \([0-9]{4} film\)$/], CreativeWork: [/ \((.*? )song\)$/], - Event: [/ \((19|20)[0-9]{2}\)$/] + Event: [/ \((19|20)[0-9]{2}\)$/], } diff --git a/plugins/classify/src/score.js b/plugins/classify/src/score.js index 202799fb..40cbe8c9 100644 --- a/plugins/classify/src/score.js +++ b/plugins/classify/src/score.js @@ -22,7 +22,7 @@ const parse = function (cat) { let split = cat.split(/\//) return { root: split[0], - child: split[1] + child: split[1], } } @@ -44,7 +44,7 @@ const getScore = function (detail) { return { detail: detail, category: null, - score: 0 + score: 0, } } let root = top[0] @@ -89,7 +89,7 @@ const getScore = function (detail) { root: root, category: category, score: score, - detail: detail + detail: detail, } } module.exports = getScore diff --git a/plugins/html/src/01-doc.js b/plugins/html/src/01-doc.js index 27a4c391..27fe6f15 100644 --- a/plugins/html/src/01-doc.js +++ b/plugins/html/src/01-doc.js @@ -3,7 +3,7 @@ const defaults = { infoboxes: true, headers: true, sections: true, - links: true, + links: true } //we should try to make this look like the wikipedia does, i guess. const softRedirect = function (doc) { @@ -34,18 +34,20 @@ const toHtml = function (options) { //render infoboxes (up at the top) if (options.infoboxes === true) { html += this.infoboxes() - .map(i => i.html(options)) + .map((i) => i.html(options)) .join('\n') } //render each section if (options.sections === true || options.paragraphs === true || options.sentences === true) { - html += this.sections().map(s => s.html(options)).join('\n') + html += this.sections() + .map((s) => s.html(options)) + .join('\n') } //default off if (options.references === true) { html += '

References

' html += this.references() - .map(c => c.html(options)) + .map((c) => c.html(options)) .join('\n') } return html diff --git a/plugins/html/src/02-section.js b/plugins/html/src/02-section.js index 3f69770b..689497b0 100644 --- a/plugins/html/src/02-section.js +++ b/plugins/html/src/02-section.js @@ -3,7 +3,7 @@ const defaults = { images: true, tables: true, lists: true, - paragraphs: true, + paragraphs: true } const doSection = function (options) { @@ -19,32 +19,32 @@ const doSection = function (options) { if (options.images === true) { let imgs = this.images() if (imgs.length > 0) { - html += imgs.map(image => image.html(options)).join('\n') + html += imgs.map((image) => image.html(options)).join('\n') } } //make a html table if (options.tables === true) { html += this.tables() - .map(t => t.html(options)) + .map((t) => t.html(options)) .join('\n') } //make a html bullet-list if (options.lists === true) { html += this.lists() - .map(list => list.html(options)) + .map((list) => list.html(options)) .join('\n') } //finally, write the sentence text. if (options.paragraphs === true && this.paragraphs().length > 0) { html += '
\n' - this.paragraphs().forEach(p => { + this.paragraphs().forEach((p) => { html += '

\n' html += ' ' + p .sentences() - .map(s => s.html(options)) + .map((s) => s.html(options)) .join(' ') html += '\n

\n' }) @@ -53,7 +53,7 @@ const doSection = function (options) { html += ' ' + this.sentences() - .map(s => s.html(options)) + .map((s) => s.html(options)) .join(' ') } return '
\n' + html + '
\n' diff --git a/plugins/html/src/03-paragraph.js b/plugins/html/src/03-paragraph.js index 7d79c22a..0955eab8 100644 --- a/plugins/html/src/03-paragraph.js +++ b/plugins/html/src/03-paragraph.js @@ -2,12 +2,12 @@ const defaults = { sentences: true } -const toHtml = function(options) { +const toHtml = function (options) { options = Object.assign({}, defaults, options) let html = '' if (options.sentences === true) { html += this.sentences() - .map(s => s.html(options)) + .map((s) => s.html(options)) .join('\n') } return html diff --git a/plugins/html/src/04-sentence.js b/plugins/html/src/04-sentence.js index c8bd656e..7be7a99a 100644 --- a/plugins/html/src/04-sentence.js +++ b/plugins/html/src/04-sentence.js @@ -5,12 +5,12 @@ const defaults = { formatting: true } // create links, bold, italic in html -const doSentence = function(options) { +const doSentence = function (options) { options = Object.assign({}, defaults, options) let text = this.text() //turn links into if (options.links === true) { - this.links().forEach(link => { + this.links().forEach((link) => { let str = link.text() || link.page() let tag = link.html() text = smartReplace(text, str, tag) @@ -18,12 +18,12 @@ const doSentence = function(options) { } if (options.formatting === true) { //support bolds - this.bold().forEach(str => { + this.bold().forEach((str) => { let tag = '' + str + '' text = smartReplace(text, str, tag) }) //do italics - this.italic().forEach(str => { + this.italic().forEach((str) => { let tag = '' + str + '' text = smartReplace(text, str, tag) }) diff --git a/plugins/html/src/05-link.js b/plugins/html/src/05-link.js index 5a0a3ac4..7dbbf4f1 100644 --- a/plugins/html/src/05-link.js +++ b/plugins/html/src/05-link.js @@ -1,4 +1,4 @@ -const toHtml = function() { +const toHtml = function () { let classNames = 'link' let href = this.href() href = href.replace(/ /g, '_') diff --git a/plugins/html/src/_lib/smartReplace.js b/plugins/html/src/_lib/smartReplace.js index de31ea8c..c153751e 100644 --- a/plugins/html/src/_lib/smartReplace.js +++ b/plugins/html/src/_lib/smartReplace.js @@ -4,7 +4,7 @@ function escapeRegExp(str) { } //sometimes text-replacements can be ambiguous - words used multiple times.. -const smartReplace = function(all, text, result) { +const smartReplace = function (all, text, result) { if (!text || !all) { return all } diff --git a/plugins/html/src/image.js b/plugins/html/src/image.js index ebfe0149..3b0739b6 100644 --- a/plugins/html/src/image.js +++ b/plugins/html/src/image.js @@ -1,4 +1,4 @@ -const makeImage = function() { +const makeImage = function () { return ' ' + this.alt() + '' } module.exports = makeImage diff --git a/plugins/html/src/index.js b/plugins/html/src/index.js index cba0be2c..1178fab4 100644 --- a/plugins/html/src/index.js +++ b/plugins/html/src/index.js @@ -9,7 +9,7 @@ const list = require('./list') const reference = require('./reference') const table = require('./table') -const plugin = function(models) { +const plugin = function (models) { models.Doc.prototype.html = doc models.Section.prototype.html = section diff --git a/plugins/html/src/infobox.js b/plugins/html/src/infobox.js index 8f2a276a..c5f6701b 100644 --- a/plugins/html/src/infobox.js +++ b/plugins/html/src/infobox.js @@ -10,7 +10,7 @@ const dontDo = { } // -const infobox = function(options) { +const infobox = function (options) { options = Object.assign({}, defaults, options) let html = '\n' html += ' \n' @@ -32,7 +32,7 @@ const infobox = function(options) { } html += ' \n' } - Object.keys(this.data).forEach(k => { + Object.keys(this.data).forEach((k) => { if (dontDo[k] === true) { return } diff --git a/plugins/html/src/list.js b/plugins/html/src/list.js index 1169b0dc..b1d2cd33 100644 --- a/plugins/html/src/list.js +++ b/plugins/html/src/list.js @@ -1,7 +1,7 @@ // -const toHtml = function(options) { +const toHtml = function (options) { let html = '
    \n' - this.lines().forEach(s => { + this.lines().forEach((s) => { html += '
  • ' + s.html(options) + '
  • \n' }) html += '
\n' diff --git a/plugins/html/src/reference.js b/plugins/html/src/reference.js index 088fc931..07c0ca67 100644 --- a/plugins/html/src/reference.js +++ b/plugins/html/src/reference.js @@ -1,5 +1,5 @@ // -const toHtml = function(options) { +const toHtml = function (options) { if (this.data && this.data.url && this.data.title) { let str = this.data.title if (options.links === true) { diff --git a/plugins/i18n/src/index.js b/plugins/i18n/src/index.js index b55c04a1..1d45279f 100644 --- a/plugins/i18n/src/index.js +++ b/plugins/i18n/src/index.js @@ -21,11 +21,11 @@ let mapping = { taxobox: require('./data/taxobox') } -const plugin = function(models, templates) { - Object.keys(mapping).forEach(k => { - mapping[k].forEach(name => { +const plugin = function (models, templates) { + Object.keys(mapping).forEach((k) => { + mapping[k].forEach((name) => { // create template parser with alias - templates[name] = function(tmpl, list) { + templates[name] = function (tmpl, list) { return templates[k](tmpl, list, k) } }) diff --git a/plugins/image/src/http/server.js b/plugins/image/src/http/server.js index 23daab17..685d7856 100644 --- a/plugins/image/src/http/server.js +++ b/plugins/image/src/http/server.js @@ -1,15 +1,15 @@ const https = require('https') // use the native nodejs request function -const request = function(url, opts = {}) { +const request = function (url, opts = {}) { return new Promise((resolve, reject) => { https - .get(url, opts, resp => { + .get(url, opts, (resp) => { let status = String(resp.statusCode) || '' let bool = /^[23]/.test(status) resolve(bool) }) - .on('error', err => { + .on('error', (err) => { reject(err) }) }) diff --git a/plugins/image/src/img-exists.js b/plugins/image/src/img-exists.js index e21badf8..0168efc3 100644 --- a/plugins/image/src/img-exists.js +++ b/plugins/image/src/img-exists.js @@ -1,18 +1,18 @@ const http = require('./http/server') // test if the image url exists or not -const imgExists = function(callback) { +const imgExists = function (callback) { return http(this.url(), { method: 'HEAD' }) - .then(function(bool) { + .then(function (bool) { //support callback non-promise form if (callback) { callback(null, bool) } return bool }) - .catch(e => { + .catch((e) => { console.error(e) if (callback) { callback(e, null) diff --git a/plugins/image/src/index.js b/plugins/image/src/index.js index ccdadffc..5790376c 100644 --- a/plugins/image/src/index.js +++ b/plugins/image/src/index.js @@ -1,7 +1,7 @@ const commonsURL = require('./url-hash') const imgExists = require('./img-exists') -const addMethod = function(models) { +const addMethod = function (models) { // add a new method to Image class models.Image.prototype.commonsURL = commonsURL models.Image.prototype.exists = imgExists diff --git a/plugins/image/src/url-hash.js b/plugins/image/src/url-hash.js index 561db62f..67e45086 100644 --- a/plugins/image/src/url-hash.js +++ b/plugins/image/src/url-hash.js @@ -2,7 +2,7 @@ const Hashes = require('jshashes') const server = 'https://upload.wikimedia.org/wikipedia/commons/' -const encodeTitle = function(file) { +const encodeTitle = function (file) { let title = file.replace(/^(image|file?)\:/i, '') //titlecase it title = title.charAt(0).toUpperCase() + title.substring(1) @@ -13,7 +13,7 @@ const encodeTitle = function(file) { //the wikimedia image url is a little silly: //https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F -const commonsURL = function() { +const commonsURL = function () { let file = this.data.file let title = encodeTitle(file) let hash = new Hashes.MD5().hex(title) diff --git a/plugins/latex/src/01-doc.js b/plugins/latex/src/01-doc.js index cfbe6c6e..92b22a01 100644 --- a/plugins/latex/src/01-doc.js +++ b/plugins/latex/src/01-doc.js @@ -4,7 +4,7 @@ const defaults = { } // we should try to make this look like the wikipedia does, i guess. -const softRedirect = function(doc) { +const softRedirect = function (doc) { let link = doc.redirectTo() let href = link.page href = './' + href.replace(/ /g, '_') @@ -16,7 +16,7 @@ const softRedirect = function(doc) { } // -const toLatex = function(options) { +const toLatex = function (options) { options = Object.assign({}, defaults, options) let out = '' //if it's a redirect page, give it a 'soft landing': @@ -26,20 +26,20 @@ const toLatex = function(options) { //render infoboxes (up at the top) if (options.infoboxes === true) { out += this.infoboxes() - .map(i => i.latex(options)) + .map((i) => i.latex(options)) .join('\n') } //render each section if (options.sections === true || options.paragraphs === true || options.sentences === true) { out += this.sections() - .map(s => s.latex(options)) + .map((s) => s.latex(options)) .join('\n') } //default off //render citations if (options.references === true) { out += this.references() - .map(c => c.latex(options)) + .map((c) => c.latex(options)) .join('\n') } return out diff --git a/plugins/latex/src/02-section.js b/plugins/latex/src/02-section.js index fde62061..b7e2d08c 100644 --- a/plugins/latex/src/02-section.js +++ b/plugins/latex/src/02-section.js @@ -3,7 +3,7 @@ const defaults = { images: true, tables: true, lists: true, - paragraphs: true, + paragraphs: true } //map '==' depth to 'subsection', 'subsubsection', etc const doSection = function (options) { @@ -17,30 +17,30 @@ const doSection = function (options) { let vOpen = '\n' let vClose = '}' switch (num) { - case 1: - vOpen += '\\chapter{' - break - case 2: - vOpen += '\\section{' - break - case 3: - vOpen += '\\subsection{' - break - case 4: - vOpen += '\\subsubsection{' - break - case 5: - vOpen += '\\paragraph{' - vClose = '} \\\\ \n' - break - case 6: - vOpen += '\\subparagraph{' - vClose = '} \\\\ \n' - break - default: - vOpen += - '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{' - vClose = '} \\\\ \n' + case 1: + vOpen += '\\chapter{' + break + case 2: + vOpen += '\\section{' + break + case 3: + vOpen += '\\subsection{' + break + case 4: + vOpen += '\\subsubsection{' + break + case 5: + vOpen += '\\paragraph{' + vClose = '} \\\\ \n' + break + case 6: + vOpen += '\\subparagraph{' + vClose = '} \\\\ \n' + break + default: + vOpen += + '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{' + vClose = '} \\\\ \n' } out += vOpen + this.title() + vClose out += '\n' @@ -49,7 +49,7 @@ const doSection = function (options) { //put any images under the header if (options.images === true && this.images()) { out += this.images() - .map(img => img.latex(options)) + .map((img) => img.latex(options)) .join('\n') //out += '\n'; } @@ -57,21 +57,21 @@ const doSection = function (options) { //make a out table if (options.tables === true && this.tables()) { out += this.tables() - .map(t => t.latex(options)) + .map((t) => t.latex(options)) .join('\n') } //make a out bullet-list if (options.lists === true && this.lists()) { out += this.lists() - .map(list => list.latex(options)) + .map((list) => list.latex(options)) .join('\n') } //finally, write the sentence text. if (options.paragraphs === true || options.sentences === true) { out += this.paragraphs() - .map(s => s.latex(options)) + .map((s) => s.latex(options)) .join(' ') out += '\n' } diff --git a/plugins/latex/src/03-paragraph.js b/plugins/latex/src/03-paragraph.js index c7de37dc..798c8796 100644 --- a/plugins/latex/src/03-paragraph.js +++ b/plugins/latex/src/03-paragraph.js @@ -2,7 +2,7 @@ const defaults = { sentences: true } -const toLatex = function(options) { +const toLatex = function (options) { options = Object.assign({}, defaults, options) let out = '' if (options.sentences === true) { diff --git a/plugins/latex/src/04-sentence.js b/plugins/latex/src/04-sentence.js index 15087f06..ce118abf 100644 --- a/plugins/latex/src/04-sentence.js +++ b/plugins/latex/src/04-sentence.js @@ -5,12 +5,12 @@ const defaults = { formatting: true } // create links, bold, italic in latex -const toLatex = function(options) { +const toLatex = function (options) { options = Object.assign({}, defaults, options) let text = this.text() //turn links back into links if (options.links === true && this.links().length > 0) { - this.links().forEach(link => { + this.links().forEach((link) => { let tag = link.latex() let str = link.text() || link.page() text = smartReplace(text, str, tag) @@ -19,13 +19,13 @@ const toLatex = function(options) { if (options.formatting === true) { if (this.data.fmt) { if (this.data.fmt.bold) { - this.data.fmt.bold.forEach(str => { + this.data.fmt.bold.forEach((str) => { let tag = '\\textbf{' + str + '}' text = smartReplace(text, str, tag) }) } if (this.data.fmt.italic) { - this.data.fmt.italic.forEach(str => { + this.data.fmt.italic.forEach((str) => { let tag = '\\textit{' + str + '}' text = smartReplace(text, str, tag) }) diff --git a/plugins/latex/src/05-link.js b/plugins/latex/src/05-link.js index f65e2428..7787aeb2 100644 --- a/plugins/latex/src/05-link.js +++ b/plugins/latex/src/05-link.js @@ -1,4 +1,4 @@ -const toLatex = function() { +const toLatex = function () { let href = this.href() href = href.replace(/ /g, '_') let str = this.text() || this.page() diff --git a/plugins/latex/src/_lib/smartReplace.js b/plugins/latex/src/_lib/smartReplace.js index de31ea8c..c153751e 100644 --- a/plugins/latex/src/_lib/smartReplace.js +++ b/plugins/latex/src/_lib/smartReplace.js @@ -4,7 +4,7 @@ function escapeRegExp(str) { } //sometimes text-replacements can be ambiguous - words used multiple times.. -const smartReplace = function(all, text, result) { +const smartReplace = function (all, text, result) { if (!text || !all) { return all } diff --git a/plugins/latex/src/image.js b/plugins/latex/src/image.js index 3bd8a154..99aa6ccf 100644 --- a/plugins/latex/src/image.js +++ b/plugins/latex/src/image.js @@ -1,5 +1,5 @@ // -const toLatex = function() { +const toLatex = function () { let alt = this.alt() let out = '\\begin{figure}' out += '\n\\includegraphics[width=\\linewidth]{' + this.thumb() + '}' diff --git a/plugins/latex/src/index.js b/plugins/latex/src/index.js index 9b4b0268..fe8c60b3 100644 --- a/plugins/latex/src/index.js +++ b/plugins/latex/src/index.js @@ -9,7 +9,7 @@ const list = require('./list') const reference = require('./reference') const table = require('./table') -const plugin = function(models) { +const plugin = function (models) { models.Doc.prototype.latex = doc models.Section.prototype.latex = section models.Paragraph.prototype.latex = paragraph diff --git a/plugins/latex/src/infobox.js b/plugins/latex/src/infobox.js index aadd839c..465a6b20 100644 --- a/plugins/latex/src/infobox.js +++ b/plugins/latex/src/infobox.js @@ -11,13 +11,13 @@ const defaults = { } // -const infobox = function(options) { +const infobox = function (options) { options = Object.assign({}, defaults, options) let out = '\n \\vspace*{0.3cm} % Info Box\n\n' out += '\\begin{tabular}{|@{\\qquad}l|p{9.5cm}@{\\qquad}|} \n' out += ' \\hline %horizontal line\n' //todo: render top image here - Object.keys(this.data).forEach(k => { + Object.keys(this.data).forEach((k) => { if (dontDo[k] === true) { return } diff --git a/plugins/latex/src/list.js b/plugins/latex/src/list.js index f1418704..0abe9a18 100644 --- a/plugins/latex/src/list.js +++ b/plugins/latex/src/list.js @@ -1,7 +1,7 @@ // -const toLatex = function(options) { +const toLatex = function (options) { let out = '\\begin{itemize}\n' - this.lines().forEach(s => { + this.lines().forEach((s) => { out += ' \\item ' + s.text(options) + '\n' }) out += '\\end{itemize}\n' diff --git a/plugins/latex/src/reference.js b/plugins/latex/src/reference.js index fdb11541..74f0e2fa 100644 --- a/plugins/latex/src/reference.js +++ b/plugins/latex/src/reference.js @@ -1,5 +1,5 @@ //not so impressive right now -const toLatex = function() { +const toLatex = function () { let str = this.title() return '⌃ ' + str + '\n' } diff --git a/plugins/markdown/src/01-doc.js b/plugins/markdown/src/01-doc.js index e1c123e2..3f92bc0e 100644 --- a/plugins/markdown/src/01-doc.js +++ b/plugins/markdown/src/01-doc.js @@ -2,7 +2,7 @@ const defaults = { redirects: true, infoboxes: true, templates: true, - sections: true, + sections: true } //we should try to make this look like the wikipedia does, i guess. const softRedirect = function (doc) { @@ -27,18 +27,21 @@ const toMarkdown = function (options) { //render infoboxes (up at the top) if (options.infoboxes === true && options.templates === true) { md += this.infoboxes() - .map(infobox => infobox.markdown(options)) + .map((infobox) => infobox.markdown(options)) .join('\n\n') } //render each section if (options.sections === true || options.paragraphs === true || options.sentences === true) { - md += data.sections().map(s => s.markdown(options)).join('\n\n') + md += data + .sections() + .map((s) => s.markdown(options)) + .join('\n\n') } //default false if (options.references === true) { md += '## References' md += this.citations() - .map(c => c.json(options)) + .map((c) => c.json(options)) .join('\n') } return md diff --git a/plugins/markdown/src/02-section.js b/plugins/markdown/src/02-section.js index 52165aef..83e895b4 100644 --- a/plugins/markdown/src/02-section.js +++ b/plugins/markdown/src/02-section.js @@ -3,7 +3,7 @@ const defaults = { images: true, tables: true, lists: true, - paragraphs: true, + paragraphs: true } const doSection = function (options) { @@ -23,7 +23,7 @@ const doSection = function (options) { if (options.images === true) { let images = this.images() if (images.length > 0) { - md += images.map(img => img.markdown()).join('\n') + md += images.map((img) => img.markdown()).join('\n') md += '\n' } } @@ -33,7 +33,7 @@ const doSection = function (options) { let tables = this.tables() if (tables.length > 0) { md += '\n' - md += tables.map(table => table.markdown(options)).join('\n') + md += tables.map((table) => table.markdown(options)).join('\n') md += '\n' } } @@ -42,7 +42,7 @@ const doSection = function (options) { if (options.lists === true) { let lists = this.lists() if (lists.length > 0) { - md += lists.map(list => list.markdown(options)).join('\n') + md += lists.map((list) => list.markdown(options)).join('\n') md += '\n' } } @@ -50,10 +50,10 @@ const doSection = function (options) { //finally, write the sentence text. if (options.paragraphs === true || options.sentences === true) { md += this.paragraphs() - .map(p => { + .map((p) => { return p .sentences() - .map(s => s.markdown(options)) + .map((s) => s.markdown(options)) .join(' ') }) .join('\n\n') diff --git a/plugins/markdown/src/03-paragraph.js b/plugins/markdown/src/03-paragraph.js index c1e605cb..5a6e38d3 100644 --- a/plugins/markdown/src/03-paragraph.js +++ b/plugins/markdown/src/03-paragraph.js @@ -2,7 +2,7 @@ const defaults = { sentences: true } -const toMarkdown = function(options) { +const toMarkdown = function (options) { options = Object.assign({}, defaults, options) let md = '' if (options.sentences === true) { diff --git a/plugins/markdown/src/04-sentence.js b/plugins/markdown/src/04-sentence.js index 3bbcbaa7..bc3f8b82 100644 --- a/plugins/markdown/src/04-sentence.js +++ b/plugins/markdown/src/04-sentence.js @@ -6,12 +6,12 @@ const defaults = { } //create links, bold, italic in markdown -const toMarkdown = function(options) { +const toMarkdown = function (options) { options = Object.assign({}, defaults, options) let md = this.text() //turn links back into links if (options.links === true) { - this.links().forEach(link => { + this.links().forEach((link) => { let mdLink = link.markdown() let str = link.text() || link.page() md = smartReplace(md, str, mdLink) @@ -19,11 +19,11 @@ const toMarkdown = function(options) { } //turn bolds into **bold** if (options.formatting === true) { - this.bold().forEach(b => { + this.bold().forEach((b) => { md = smartReplace(md, b, '**' + b + '**') }) //support *italics* - this.italic().forEach(i => { + this.italic().forEach((i) => { md = smartReplace(md, i, '*' + i + '*') }) } diff --git a/plugins/markdown/src/05-link.js b/plugins/markdown/src/05-link.js index 4f5258ff..7aded033 100644 --- a/plugins/markdown/src/05-link.js +++ b/plugins/markdown/src/05-link.js @@ -1,5 +1,5 @@ // add `[text](href)` to the text -const toMarkdown = function() { +const toMarkdown = function () { let href = this.href() href = href.replace(/ /g, '_') // href = encodeURIComponent(href) diff --git a/plugins/markdown/src/_lib/smartReplace.js b/plugins/markdown/src/_lib/smartReplace.js index de31ea8c..c153751e 100644 --- a/plugins/markdown/src/_lib/smartReplace.js +++ b/plugins/markdown/src/_lib/smartReplace.js @@ -4,7 +4,7 @@ function escapeRegExp(str) { } //sometimes text-replacements can be ambiguous - words used multiple times.. -const smartReplace = function(all, text, result) { +const smartReplace = function (all, text, result) { if (!text || !all) { return all } diff --git a/plugins/markdown/src/image.js b/plugins/markdown/src/image.js index ba1ae946..86edcdd4 100644 --- a/plugins/markdown/src/image.js +++ b/plugins/markdown/src/image.js @@ -1,5 +1,5 @@ //markdown images are like this: ![alt text](href) -const toMarkdown = function() { +const toMarkdown = function () { let alt = this.data.file.replace(/^(file|image):/i, '') alt = alt.replace(/\.(jpg|jpeg|png|gif|svg)/i, '') return '![' + alt + '](' + this.thumbnail() + ')' diff --git a/plugins/markdown/src/index.js b/plugins/markdown/src/index.js index c0c8b4d4..b04e2620 100644 --- a/plugins/markdown/src/index.js +++ b/plugins/markdown/src/index.js @@ -9,7 +9,7 @@ const list = require('./list') const reference = require('./reference') const table = require('./table') -const plugin = function(models) { +const plugin = function (models) { models.Doc.prototype.markdown = doc models.Section.prototype.markdown = section models.Paragraph.prototype.markdown = paragraph diff --git a/plugins/markdown/src/infobox.js b/plugins/markdown/src/infobox.js index e002f795..d99c42e9 100644 --- a/plugins/markdown/src/infobox.js +++ b/plugins/markdown/src/infobox.js @@ -14,12 +14,12 @@ const defaults = { const pad = require('./_lib/pad') // render an infobox as a table with two columns, key + value -const doInfobox = function(options) { +const doInfobox = function (options) { options = Object.assign({}, defaults, options) let md = '|' + pad('', 35) + '|' + pad('', 30) + '|\n' md += '|' + pad('---', 35) + '|' + pad('---', 30) + '|\n' //todo: render top image here (somehow) - Object.keys(this.data).forEach(k => { + Object.keys(this.data).forEach((k) => { if (dontDo[k] === true) { return } diff --git a/plugins/markdown/src/list.js b/plugins/markdown/src/list.js index 11ab41d9..53ae2c71 100644 --- a/plugins/markdown/src/list.js +++ b/plugins/markdown/src/list.js @@ -1,7 +1,7 @@ // -const toMarkdown = function(options) { +const toMarkdown = function (options) { return this.lines() - .map(s => { + .map((s) => { let str = s.markdown(options) return ' * ' + str }) diff --git a/plugins/markdown/src/reference.js b/plugins/markdown/src/reference.js index f94a279d..8e3ab4cd 100644 --- a/plugins/markdown/src/reference.js +++ b/plugins/markdown/src/reference.js @@ -1,5 +1,5 @@ // -const toMarkdown = function() { +const toMarkdown = function () { if (this.data && this.data.url && this.data.title) { return `⌃ [${this.data.title}](${this.data.url})` } else if (this.data.encyclopedia) { diff --git a/plugins/person/src/_lib/_infoboxes.js b/plugins/person/src/_lib/_infoboxes.js index 9362a8c5..b50304cb 100644 --- a/plugins/person/src/_lib/_infoboxes.js +++ b/plugins/person/src/_lib/_infoboxes.js @@ -123,5 +123,5 @@ module.exports = { 'chess player': true, 'pageant titleholder': true, 'gaa player': true, - 'us cabinet official': true + 'us cabinet official': true, } diff --git a/plugins/person/src/getSentence.js b/plugins/person/src/getSentence.js index 3ef15a0f..f479cf6c 100644 --- a/plugins/person/src/getSentence.js +++ b/plugins/person/src/getSentence.js @@ -20,7 +20,7 @@ const parseSentence = function (doc) { if (split[0] && split[1] && split.length === 2) { return { birth: split[0], - death: split[1] + death: split[1], } } // try for just birth date in parentheses @@ -29,7 +29,7 @@ const parseSentence = function (doc) { let d = spacetime(str) if (d.isValid()) { return { - birth: str + birth: str, } } } diff --git a/plugins/person/src/isAlive/byCategory.js b/plugins/person/src/isAlive/byCategory.js index c6eb9b49..ae439619 100644 --- a/plugins/person/src/isAlive/byCategory.js +++ b/plugins/person/src/isAlive/byCategory.js @@ -4,7 +4,7 @@ const aliveCats = { 'Date of birth missing (living people)': true, 'Place of birth missing (living people)': true, 'Active politicians': true, - 'Biography articles of living people': true + 'Biography articles of living people': true, } const didDie = { @@ -39,7 +39,7 @@ const didDie = { 'Deaths from sepsis‎': true, 'Deaths from pneumonia‎': true, 'Deaths from dysentery‎‎': true, - 'Deaths by drowning‎': true + 'Deaths by drowning‎': true, } const byCat = function (doc) { diff --git a/plugins/person/src/isAlive/byTemplate.js b/plugins/person/src/isAlive/byTemplate.js index fa3ea67c..64328a83 100644 --- a/plugins/person/src/isAlive/byTemplate.js +++ b/plugins/person/src/isAlive/byTemplate.js @@ -18,7 +18,7 @@ const isAlive = { 'blp one source': true, 'active politician': true, activepol: true, - 'current person': true + 'current person': true, } const isDead = { @@ -29,7 +29,7 @@ const isDead = { elegy: true, eulogy: true, panegyric: true, - memorial: true + memorial: true, } const byTemplate = function (doc) { let templates = doc.templates() diff --git a/plugins/person/src/parseDate.js b/plugins/person/src/parseDate.js index 158178c0..cd1143f2 100644 --- a/plugins/person/src/parseDate.js +++ b/plugins/person/src/parseDate.js @@ -10,7 +10,7 @@ const parseDate = function (str) { // just the year if (str.match(/^[0-9]{4}$/)) { return { - year: parseInt(str, 10) + year: parseInt(str, 10), } } // parse the full date @@ -18,7 +18,7 @@ const parseDate = function (str) { return { year: s.year(), month: s.month(), - date: s.date() + date: s.date(), } } module.exports = parseDate diff --git a/plugins/summary/src/template/index.js b/plugins/summary/src/template/index.js index 32b4c166..0fd4ee0d 100644 --- a/plugins/summary/src/template/index.js +++ b/plugins/summary/src/template/index.js @@ -1,7 +1,7 @@ -const isObject = function(obj) { +const isObject = function (obj) { return obj && Object.prototype.toString.call(obj) === '[object Object]' } -const fromTemplate = function(doc) { +const fromTemplate = function (doc) { let tmpl = doc.template('short description') if (tmpl && isObject(tmpl) && tmpl.description) { return tmpl.description diff --git a/plugins/wikitext/src/05-link.js b/plugins/wikitext/src/05-link.js index 4a7c9b09..182d317e 100644 --- a/plugins/wikitext/src/05-link.js +++ b/plugins/wikitext/src/05-link.js @@ -1,5 +1,5 @@ // add `[text](href)` to the text -const toWiki = function() { +const toWiki = function () { //if it's an external link, we good if (this.site()) { if (this.text()) { diff --git a/plugins/wikitext/src/_lib/helpers.js b/plugins/wikitext/src/_lib/helpers.js index d425a9ad..ccedcacb 100644 --- a/plugins/wikitext/src/_lib/helpers.js +++ b/plugins/wikitext/src/_lib/helpers.js @@ -1,4 +1,4 @@ -exports.capitalise = function(str) { +exports.capitalise = function (str) { if (str && typeof str === 'string') { return str.charAt(0).toUpperCase() + str.slice(1) } diff --git a/plugins/wikitext/src/_lib/smartReplace.js b/plugins/wikitext/src/_lib/smartReplace.js index fe3a9354..bf5378b1 100644 --- a/plugins/wikitext/src/_lib/smartReplace.js +++ b/plugins/wikitext/src/_lib/smartReplace.js @@ -4,7 +4,7 @@ function escapeRegExp(string) { } //sometimes text-replacements can be ambiguous - words used multiple times.. -const smartReplace = function(all, text, result) { +const smartReplace = function (all, text, result) { if (!text || !all) { return all } diff --git a/plugins/wikitext/src/index.js b/plugins/wikitext/src/index.js index 7c905aad..b986d8d3 100644 --- a/plugins/wikitext/src/index.js +++ b/plugins/wikitext/src/index.js @@ -9,7 +9,7 @@ const list = require('./list') const reference = require('./reference') const table = require('./table') -const plugin = function(models) { +const plugin = function (models) { models.Doc.prototype.wikitext = doc models.Section.prototype.wikitext = section models.Paragraph.prototype.wikitext = paragraph diff --git a/plugins/wikitext/src/infobox.js b/plugins/wikitext/src/infobox.js index d83d5a85..a81dfd55 100644 --- a/plugins/wikitext/src/infobox.js +++ b/plugins/wikitext/src/infobox.js @@ -1,6 +1,6 @@ -const toWiki = function() { +const toWiki = function () { let text = `{{Infobox ${this._type || ''}\n` - Object.keys(this.data).forEach(k => { + Object.keys(this.data).forEach((k) => { let val = this.data[k] if (val) { text += `| ${k} = ${val.wikitext() || ''}\n` diff --git a/plugins/wikitext/src/list.js b/plugins/wikitext/src/list.js index 833a4ab5..c5cdac41 100644 --- a/plugins/wikitext/src/list.js +++ b/plugins/wikitext/src/list.js @@ -1,6 +1,6 @@ -const toWiki = function() { +const toWiki = function () { let txt = '' - this.lines().forEach(s => { + this.lines().forEach((s) => { txt += `* ${s.wikitext()}\n` }) return txt From a3283e03d10ccf4931f060ad2801f4acf132384d Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Fri, 30 Oct 2020 13:28:35 -0400 Subject: [PATCH 022/117] some eslint whackamole --- .eslintrc | 4 ++- cli.js | 10 +++--- scratch.js | 22 +++++++----- scripts/fetch-templates.js | 11 +++--- src/02-section/Section.js | 2 +- src/02-section/start-to-end/election.js | 2 +- src/_fetch/01-makeUrl.js | 2 +- src/_fetch/_headers.js | 2 +- src/_fetch/http/client.js | 2 +- src/_fetch/index.js | 5 ++- src/template/templates/currency.js | 45 ++++++++----------------- 11 files changed, 46 insertions(+), 61 deletions(-) diff --git a/.eslintrc b/.eslintrc index eaaa4ee2..09ad3001 100644 --- a/.eslintrc +++ b/.eslintrc @@ -69,6 +69,8 @@ "MethodDefinition": true } } - ] + ], + "jsdoc/require-param-description": 0, + "jsdoc/require-property-description": 0 } } diff --git a/cli.js b/cli.js index fd401924..19dca30d 100755 --- a/cli.js +++ b/cli.js @@ -1,12 +1,12 @@ #!/usr/bin/env node -var wtf = require('./src/index') -var args = process.argv.slice(2) +const wtf = require('./src/index') +const args = process.argv.slice(2) -var modes = { +const modes = { '--json': 'json', '--plaintext': 'plaintext', } -var mode = 'json' +let mode = 'json' args = args.filter((arg) => { if (modes.hasOwnProperty(arg) === true) { mode = modes[arg] @@ -15,7 +15,7 @@ args = args.filter((arg) => { return true }) -var title = args.join(' ') +let title = args.join(' ') if (!title) { throw new Error('Usage: wtf_wikipedia Toronto Blue Jays --plaintext') } diff --git a/scratch.js b/scratch.js index a01374d4..e1500387 100644 --- a/scratch.js +++ b/scratch.js @@ -4,13 +4,17 @@ wtf.extend(require('./plugins/api/src')) // var str = `[[Image:Levellers declaration and standard.gif|thumb|Woodcut from a [[Diggers]] document by [[William Everard (Digger)|William Everard]]]]` // console.log(wtf(str).json()) -wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then(function (pages) { - wtf.fetchList(pages).then((docs) => { - docs.forEach((doc) => { - let infobox = doc.infobox(0) - if (infobox && infobox.get('height')) { - console.log(doc.title(), infobox.get('height').text()) - } - }) - }) +// wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then(function (pages) { +// wtf.fetchList(pages).then((docs) => { +// docs.forEach((doc) => { +// let infobox = doc.infobox(0) +// if (infobox && infobox.get('height')) { +// console.log(doc.title(), infobox.get('height').text()) +// } +// }) +// }) +// }) + +wtf.fetch('Toronto Raptors').then((doc) => { + console.log(doc) }) diff --git a/scripts/fetch-templates.js b/scripts/fetch-templates.js index 8d0eb5a5..1fc250e6 100644 --- a/scripts/fetch-templates.js +++ b/scripts/fetch-templates.js @@ -1,18 +1,15 @@ const got = require('got') const ns = 10 //templates -let url = - 'https://en.wikipedia.org/w/api.php?action=query&list=allpages&aplimit=500&apnamespace=' + - ns + - '&format=json' +let url = 'https://en.wikipedia.org/w/api.php?action=query&list=allpages&aplimit=500&apnamespace=' + ns + '&format=json' -const doit = function(from) { +const doit = function (from) { let myUrl = url + '&apfrom=' + encodeURIComponent(from) - got(myUrl).then(res => { + got(myUrl).then((res) => { let data = JSON.parse(res.body) let arr = data.query.allpages - arr.forEach(o => { + arr.forEach((o) => { console.log(o.title) }) diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 0ff8cdbb..ebd79cfd 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -27,7 +27,7 @@ class Section { /** * the stuff between headings - 'History' section for example * - * @param {Object} data the data already gathered about the section + * @param {object} data the data already gathered about the section * @param {Document} doc the document that this section belongs to */ constructor(data, doc) { diff --git a/src/02-section/start-to-end/election.js b/src/02-section/start-to-end/election.js index 06f551c1..b4e30e87 100644 --- a/src/02-section/start-to-end/election.js +++ b/src/02-section/start-to-end/election.js @@ -7,7 +7,7 @@ const parseTemplates = require('../../template') * https://en.wikipedia.org/wiki/Template:Election_box * * @private - * @param {Catcher} catcher an object to provide and catch data + * @param {object} catcher an object to provide and catch data */ const parseElection = function (catcher) { catcher.text = catcher.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, (tmpl) => { diff --git a/src/_fetch/01-makeUrl.js b/src/_fetch/01-makeUrl.js index 8a609241..144e3634 100644 --- a/src/_fetch/01-makeUrl.js +++ b/src/_fetch/01-makeUrl.js @@ -17,7 +17,7 @@ const defaults = { * * @private * @param {Object} obj - * @return {string} + * @returns {string} */ const toQueryString = function (obj) { return Object.entries(obj) diff --git a/src/_fetch/_headers.js b/src/_fetch/_headers.js index 18fea428..9a4c5e7c 100644 --- a/src/_fetch/_headers.js +++ b/src/_fetch/_headers.js @@ -12,7 +12,7 @@ * factory for header options * * @private - * @param options + * @param {object} options * @returns {HeaderOptions} the generated options */ const makeHeaders = function (options) { diff --git a/src/_fetch/http/client.js b/src/_fetch/http/client.js index f372b1ec..0990bf9e 100644 --- a/src/_fetch/http/client.js +++ b/src/_fetch/http/client.js @@ -3,7 +3,7 @@ * * @private * @param {string} url the url that well be fetched - * @param {RequestInit} opts the options for fetch + * @param {object} opts the options for fetch * @returns {Promise} the response from fetch */ const request = function (url, opts) { diff --git a/src/_fetch/index.js b/src/_fetch/index.js index 8d7586fa..8fa34924 100644 --- a/src/_fetch/index.js +++ b/src/_fetch/index.js @@ -14,7 +14,6 @@ const isUrl = /^https?:\/\// * @property {string | undefined} [domain] * @property {boolean | undefined} [follow_redirects] * @property {string | undefined} [lang] - * @property {string | undefined} [path] * * * @property {string | number | Array| undefined} [title] @@ -38,9 +37,9 @@ const defaults = { * fetches the page from the wiki and returns a Promise with the parsed wikitext * * @param {string | number | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch - * @param {fetchDefaults| function | string} [options] the options for the fetch or the language of the wiki for the article or the callback if you dont provide any options + * @param {fetchDefaults| Function | string} [options] the options for the fetch or the language of the wiki for the article or the callback if you dont provide any options * @param {Function | fetchDefaults} [c] the callback function for the call or the options for the fetch - * @returns {Promise} + * @returns {Promise} promise of http result */ const fetch = function (title, options, c) { let callback = null diff --git a/src/template/templates/currency.js b/src/template/templates/currency.js index 8234ff1e..68d9c404 100644 --- a/src/template/templates/currency.js +++ b/src/template/templates/currency.js @@ -78,13 +78,10 @@ const parseCurrency = (tmpl, list) => { code = o.code } code = (code || '').toLowerCase() - switch (code) { - case 'us': - o.code = code = 'usd' - break - case 'uk': - o.code = code = 'gbp' - break + if (code === 'us') { + o.code = code = 'usd' + } else if (code === 'uk') { + o.code = code = 'gbp' } let out = codes[code] || '' let str = `${out}${o.amount || ''}` @@ -99,31 +96,17 @@ const inrConvert = (tmpl, list) => { let o = parse(tmpl, ['rupee_value', 'currency_formatting']) list.push(o) let formatting = o.currency_formatting + const mults = { + k: 1000, + m: 1000000, + b: 1000000000, + t: 1000000000000, + l: 100000, + c: 10000000, + lc: 1000000000000, + } if (formatting) { - let multiplier = 1 - switch (formatting) { - case 'k': - multiplier = 1000 - break - case 'm': - multiplier = 1000000 - break - case 'b': - multiplier = 1000000000 - break - case 't': - multiplier = 1000000000000 - break - case 'l': - multiplier = 100000 - break - case 'c': - multiplier = 10000000 - break - case 'lc': - multiplier = 1000000000000 - break - } + let multiplier = mults[formatting] || 1 o.rupee_value = o.rupee_value * multiplier } let str = `inr ${o.rupee_value || ''}` From 30fdb2de986a79afeb86ad1a9bab408c70080d99 Mon Sep 17 00:00:00 2001 From: Wouter van der Plas Date: Sat, 31 Oct 2020 10:41:17 +0100 Subject: [PATCH 023/117] the last stand --- builds/types.d.ts | 316 --------------------------- package-lock.json | 17 +- package.json | 4 +- src/01-document/Document.js | 67 ++++-- src/01-document/_sectionMap.js | 3 + src/01-document/disambig.js | 3 + src/01-document/toJson.js | 65 +++++- src/02-section/Section.js | 277 ++++++++++++++++++++--- src/02-section/heading.js | 17 +- src/02-section/index.js | 17 ++ src/02-section/start-to-end/index.js | 2 +- src/02-section/toJson.js | 50 ++++- src/_data/flags.js | 25 +-- src/_fetch/_headers.js | 2 + src/_fetch/index.js | 7 +- src/_lib/setDefaults.js | 6 +- src/template/_parsers/02-keyMaker.js | 19 +- src/template/_parsers/parse.js | 4 +- src/template/templates/geo/index.js | 13 +- 19 files changed, 485 insertions(+), 429 deletions(-) delete mode 100644 builds/types.d.ts diff --git a/builds/types.d.ts b/builds/types.d.ts deleted file mode 100644 index 5a48bfa2..00000000 --- a/builds/types.d.ts +++ /dev/null @@ -1,316 +0,0 @@ -/** - * The constructor for the document class -This function starts parsing the wiki text and sets the options in the class - * @param [wiki] - The wiki text - * @param [options] - The options for the parser - */ -declare class Document { - constructor(wiki?: string, options?: any); - /** - * Getter and setter for the tile. - If string is given then this function is a setter and sets the variable and returns the set value - If the string is not given then it will check if the title is available - If it is available it returns the title. - Else it will look if the first sentence contains a bolded phrase and assumes that's the title and returns it - * @param [str] - The title that will be set - * @returns The title found or given - */ - title(str?: string): null | string; - /** - * If an pageID is given then it sets the pageID and returns the given pageID - Else if the pageID is already set it returns the pageID - * @param [id] - The pageID that will be set - * @returns The given or found pageID - */ - pageID(id?: number): number | null; - /** - * If an WikidataID is given then it sets the WikidataID and returns the given WikidataID - Else if the WikidataID is already set it returns the WikidataID - * @param [id] - The WikidataID that will be set - * @returns The given or found WikidataID - */ - wikidata(id?: string): string | null; - /** - * If an domain is given then it sets the domain and returns the given domain - Else if the domain is already set it returns the domain - * @param [str] - The domain that will be set - * @returns The given or found domain - */ - domain(str?: string): string | null; - /** - * If an language is given then it sets the language and returns the given language - Else if the language is already set it returns the language - * @param [lang] - The language that will be set - * @returns The given or found language - */ - language(lang?: string): string | null; - /** - * Gets the url of the page - If the language or domain is not available we substitute 'en' and 'wikipedia.org' - Then we use the template of `https://${lang}.${domain}/wiki/${title}` to make the url - * @returns The url of the page - */ - url(): string | null; - /** - * If an namespace is given then it sets the namespace and returns the given namespace - Else if the namespace is already set it returns the namespace - * @param [ns] - The namespace that will be set - * @returns The given or found namespace - */ - namespace(ns?: string): string | null; - /** - * Returns if the page is a redirect - * @returns Is the page a redirect - */ - isRedirect(): boolean; - /** - * Returns information about the page this page redirects to - * @returns The redirected page - */ - redirectTo(): null | any; - /** - * This function finds out if a page is a disambiguation page - * @returns Whether the page is a disambiguation page - */ - isDisambiguation(): boolean; - /** - * If a clue is available return the category at that index - Else return all categories - * @param [clue] - The index of the wanted category - * @returns The category at the provided index or all categories - */ - categories(clue?: number): string | string[]; - /** - * Returns the 0th or clue-th category - * @param [clue] - The index of the wanted category - * @returns The category at the provided index - */ - category(clue?: number): any | string | number; - /** - * returns the sections of the document - - If the clue is a string then it will return the section with that exact title - Else if the clue is a number then it returns the section at that index - Else it returns all the sections - * @param [clue] - A title of a section or a index of a wanted section - * @returns A section or a array of sections - */ - sections(clue?: number | string): Section | Section[]; - /** - * Returns the 0th or clue-th category - * @param [clue] - The index of the wanted section - * @returns The section at the provided index - */ - section(clue?: number): Section; - /** - * Returns the paragraphs in the document - - If the clue is a number then it returns the paragraph at that index - Else it returns all paragraphs in an array - * @param [clue] - The index of the to be selected paragraph - * @returns the selected paragraph or an array of all paragraphs - */ - paragraphs(clue?: number): Paragraph | Paragraph[]; - /** - * returns the first or the clue-th paragraph - * @param [clue] - the index of the paragraph - * @returns The selected paragraph - */ - paragraph(clue?: number): Paragraph; - /** - * if no clue is provided, it compiles an array of sentences in the wiki text. - if the clue is provided it return the sentence at the provided index - * @param clue - the index of the wanted sentence - * @returns an array of sentences or a single sentence - */ - sentences(clue: number): Sentence[] | Sentence; - /** - * Returns the 0th or clue-th sentence - * @param [clue] - The index of the wanted sentence - * @returns The sentence at the provided index - */ - sentence(clue?: number): Sentence; - /** - * This function search the whole page, including the infobox and image gallery templates for images - and then returns them in an array if no clue is provided. - if an clue is profieded then it returns the image at the clue-th index - * @param [clue] - the index of the image to be selected - * @returns a single image or an array of images - */ - images(clue?: number): Image[] | Image; - /** - * Returns the 0th or clue-th image - * @param [clue] - The index of the wanted image - * @returns The image at the provided index - */ - image(clue?: number): Image; - /** - * Return all links or if a clue is provided only the link at that index - * @param [clue] - the index of the wanted link - * @returns all the links or the selected link - */ - links(clue?: number): string[] | string; - /** - * Returns the 0th or clue-th link - * @param [clue] - The index of the wanted link - * @returns The link at the provided index - */ - link(clue?: number): any | string | number; - /** - * Return all inter wiki links or if a clue is provided only the inter wiki link at that index - * @param [clue] - the index of the wanted inter wiki link - * @returns all the inter wiki links or the selected inter wiki link - */ - interwiki(clue?: number): string[] | string; - /** - * If a clue is available return the list at that index - Else return all lists - * @param [clue] - The index of the wanted list - * @returns The list at the provided index or all lists - */ - lists(clue?: number): List | List[]; - /** - * Returns the 0th or clue-th list - * @param [clue] - The index of the wanted list - * @returns The list at the provided index - */ - list(clue?: number): any | string | number; - /** - * If a clue is available return the tables at that index - Else return all tables - * @param [clue] - The index of the wanted table - * @returns The table at the provided index or all tables - */ - tables(clue?: number): Table | Tables[]; - /** - * Returns the 0th or clue-th table - * @param [clue] - The index of the wanted table - * @returns The table at the provided index - */ - table(clue?: number): any | string | number; - /** - * If a clue is available return the template at that index - Else return all templates - * @param [clue] - The index of the wanted template - * @returns The category at the provided index or all categories - */ - templates(clue?: number): Template | Template[]; - /** - * Returns the 0th or clue-th template - * @param [clue] - The index of the wanted template - * @returns The template at the provided index - */ - template(clue?: number): any | string | number; - /** - * If a clue is available return the references at that index - Else return all references - * @param [clue] - The index of the wanted references - * @returns The category at the provided index or all references - */ - references(clue?: number): Reference | Reference[]; - /** - * Returns the 0th or clue-th reference - * @param [clue] - The index of the wanted reference - * @returns The reference at the provided index - */ - reference(clue?: number): any | string | number; - /** - * Returns the 0th or clue-th citation - * @param [clue] - The index of the wanted citation - * @returns The citation at the provided index - */ - citation(clue?: number): any | string | number; - /** - * finds and returns all coordinates - or if an clue is given, the coordinate at the index - * @param [clue] - the index of the coordinate returned - * @returns if a clue is given, the coordinate of null, else an array of coordinates - */ - coordinates(clue?: number): object[] | any | null; - /** - * Returns the 0th or clue-th coordinate - * @param [clue] - The index of the wanted coordinate - * @returns The coordinate at the provided index - */ - coordinate(clue?: number): any | string | number; - /** - * If clue is unidentified then it returns all infoboxes - If clue is a number then it returns the infobox at that index - It always sorts the infoboxes by size - * @param [clue] - the index of the infobox you want to select - * @returns the selected infobox or an array of infoboxes - */ - infoboxes(clue?: number): Infobox | Infobox[]; - /** - * Returns the 0th or clue-th infobox - * @param [clue] - The index of the wanted infobox - * @returns The infobox at the provided index - */ - infobox(clue?: number): any | string | number; - /** - * return a plain text version of the wiki article - * @param [options] - the options for the parser - * @returns the plain text version of the article - */ - text(options?: any): string; - /** - * return a json version of the Document class - * @param [options] - options for the rendering - * @returns this document as json - */ - json(options?: any): any; - /** - * prints the title of every section - * @returns the document itself - */ - debug(): Document; -} - -/** - * the stuff between headings - 'History' section for example - * @param data - the data already gathered about the section - * @param doc - the document that this section belongs to - */ -declare class Section { - constructor(data: any, doc: Document); -} - -/** - * returns one sentence object - * @param str - create a object from a sentence - * @returns the Sentence created from the text - */ -declare function fromText(str: string): Sentence; - -declare type fetchDefaults = { - path?: string | undefined; - wiki?: string | undefined; - domain?: string | undefined; - follow_redirects?: boolean | undefined; - lang?: string | undefined; - path?: string | undefined; - title?: string | number | (string | number)[] | undefined; - "Api-User-Agent"?: string | undefined; -}; - -declare const defaults: fetchDefaults; - -/** - * fetches the page from the wiki and returns a Promise with the parsed wikitext - * @param title - the title, PageID, URL or an array of all three of the page(s) you want to fetch - * @param [options] - the options for the fetch or the language of the wiki for the article or the callback if you dont provide any options - * @param [c] - the callback function for the call or the options for the fetch - */ -declare function fetch(title: string | number | (number | string)[], options?: fetchDefaults | ((...params: any[]) => any) | string, c?: ((...params: any[]) => any) | fetchDefaults): Promise; - -declare type HeaderOptions = { - redirect: string; - method: string; -}; - -/** - * factory for header options - * @returns the generated options - */ -declare function makeHeaders(options: any): HeaderOptions; - diff --git a/package-lock.json b/package-lock.json index 2fa3b7cd..efffe94b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4418,7 +4418,7 @@ }, "split": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/split/-/split-1.0.0.tgz", "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", "dev": true, "requires": { @@ -4739,15 +4739,6 @@ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", "dev": true }, - "tsd-jsdoc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tsd-jsdoc/-/tsd-jsdoc-2.5.0.tgz", - "integrity": "sha512-80fcJLAiUeerg4xPftp+iEEKWUjJjHk9AvcHwJqA8Zw0R4oASdu3kT/plE/Zj19QUTz8KupyOX25zStlNJjS9g==", - "dev": true, - "requires": { - "typescript": "^3.2.1" - } - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4772,12 +4763,6 @@ "is-typedarray": "^1.0.0" } }, - "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", - "dev": true - }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", diff --git a/package.json b/package.json index 4a08aa5a..0902f4dc 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "scripts": { "build": "node ./scripts/version.js && rollup -c", "build:all": "node ./scripts/buildAll.js", - "build:types": "jsdoc -c ts-doc-config.json ./src", "coverage": "nyc -r lcov -n 'src/**/*' -n 'plugins/**/*' npm run coverage:tests", "coverage:tests": "npm run test && npm run test:fetch", "codecov": "npm run coverage && codecov -t 62d2cc94-1c1f-4e21-a9af-42cc0cf39c51", @@ -90,8 +89,7 @@ "rollup-plugin-terser": "7.0.2", "shelljs": "0.8.4", "tap-dancer": "0.3.0", - "tape": "5.0.1", - "tsd-jsdoc": "^2.5.0" + "tape": "5.0.1" }, "eslintIgnore": [ "builds/*.js" diff --git a/src/01-document/Document.js b/src/01-document/Document.js index bcb165cd..23b30796 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -5,6 +5,8 @@ const setDefaults = require('../_lib/setDefaults') const { isArray } = require('../_lib/helpers') const Image = require('../image/Image') +const Section = require('../02-section/Section') + const redirects = require('./redirects') const preProcess = require('./preProcess') const parse = { @@ -39,15 +41,6 @@ const defaults = { /*** * @class - * @borrows Document#namespace as Document#ns - * @borrows Document#text as Document#plaintext - * @borrows Document#language as Document#lang - * - * @borrows Document#redirectTo as Document#redirectsTo - * @borrows Document#redirectTo as Document#redirect - * @borrows Document#redirectTo as Document#redirects - * - * @borrows Document#reference as Document#citations */ class Document { /** @@ -180,7 +173,13 @@ class Document { return this._lang } - //eslint-disable-next-line require-jsdoc -- inherits from language + /** + * If an language is given then it sets the language and returns the given language + * Else if the language is already set it returns the language + * + * @param {string} [lang] The language that will be set + * @returns {string|null} The given or found language + */ lang(lang) { return this.language(lang) } @@ -219,7 +218,13 @@ class Document { return this._namespace } - //eslint-disable-next-line require-jsdoc -- inherits from namespace + /** + * If an namespace is given then it sets the namespace and returns the given namespace + * Else if the namespace is already set it returns the namespace + * + * @param {string} [ns] The namespace that will be set + * @returns {string|null} The given or found namespace + */ ns(ns) { return this.namespace(ns) } @@ -236,23 +241,35 @@ class Document { /** * Returns information about the page this page redirects to * - * @returns {null|{}} The redirected page + * @returns {null|object} The redirected page */ redirectTo() { return this._redirectTo } - //eslint-disable-next-line require-jsdoc -- inherits from redirectTo + /** + * Returns information about the page this page redirects to + * + * @returns {null|object} The redirected page + */ redirectsTo() { return this.redirectTo() } - //eslint-disable-next-line require-jsdoc -- inherits from redirectTo + /** + * Returns information about the page this page redirects to + * + * @returns {null|object} The redirected page + */ redirect() { return this.redirectTo() } - //eslint-disable-next-line require-jsdoc -- inherits from redirectTo + /** + * Returns information about the page this page redirects to + * + * @returns {null|object} The redirected page + */ redirects() { return this.redirectTo() } @@ -266,7 +283,11 @@ class Document { return disambig(this) } - //eslint-disable-next-line require-jsdoc -- inherits from isDisambiguation + /** + * This function finds out if a page is a disambiguation page + * + * @returns {boolean} Whether the page is a disambiguation page + */ isDisambig() { return this.isDisambiguation() } @@ -557,7 +578,12 @@ class Document { return aliasWrapper(this.references.bind(this), clue) } - //eslint-disable-next-line require-jsdoc -- inherits from reference + /** + * Returns the 0th or clue-th reference + * + * @param {number} [clue] The index of the wanted reference + * @returns {object|string|number} The reference at the provided index + */ citations(clue) { return this.references(clue) } @@ -642,7 +668,12 @@ class Document { return arr.join('\n\n') } - //eslint-disable-next-line require-jsdoc -- inherits from text + /** + * return a plain text version of the wiki article + * + * @param {object} [options] the options for the parser + * @returns {string} the plain text version of the article + */ plaintext(options) { return this.text(options) } diff --git a/src/01-document/_sectionMap.js b/src/01-document/_sectionMap.js index 1841ec04..9661c9ad 100644 --- a/src/01-document/_sectionMap.js +++ b/src/01-document/_sectionMap.js @@ -1,3 +1,6 @@ +const Document = require('./Document') + + /** * helper for looping around all sections of a document * diff --git a/src/01-document/disambig.js b/src/01-document/disambig.js index 6c2952da..df56630f 100644 --- a/src/01-document/disambig.js +++ b/src/01-document/disambig.js @@ -1,3 +1,6 @@ +const Document = require('./Document') + + const i18n = require('../_data/disambig').reduce((h, str) => { h[str] = true return h diff --git a/src/01-document/toJson.js b/src/01-document/toJson.js index 616f84f3..bae2ff10 100644 --- a/src/01-document/toJson.js +++ b/src/01-document/toJson.js @@ -1,30 +1,84 @@ const setDefaults = require('../_lib/setDefaults') +const Section = require('../02-section/Section') +const Document = require('./Document') + +/** + * @typedef DocumentToJsonOptions + * @property {boolean | undefined} title + * @property {boolean | undefined} pageID + * @property {boolean | undefined} categories + * @property {boolean | undefined} sections + * @property {boolean | undefined} coordinates + * @property {boolean | undefined} infoboxes + * @property {boolean | undefined} images + * @property {boolean | undefined} plaintext + * @property {boolean | undefined} citations + * @property {boolean | undefined} references + */ const defaults = { title: true, - sections: true, pageID: true, categories: true, + sections: true, + coordinates: false, + infoboxes:false, + images: false, + plaintext: false, + citations: false, + references: false } -//an opinionated output of the most-wanted data +/** + * @typedef documentToJsonReturn + * @property {string | undefined} title + * @property {number | null | undefined} pageID + * @property {string[] | undefined} categories + * @property {Section[] | undefined} sections + * @property {boolean | undefined} isRedirect + * @property {object | undefined} redirectTo + * @property {Template[] | undefined} coordinates + * @property {Infobox[] | undefined} infoboxes + * @property {Image[] | undefined} images + * @property {string | undefined} plaintext + * @property {Reference[] | undefined} references + */ + + +/** + * an opinionated output of the most-wanted data + * + * @private + * @param {Document} doc + * @param {DocumentToJsonOptions} options + * @returns {documentToJsonReturn} + */ const toJSON = function (doc, options) { options = setDefaults(options, defaults) + + /** + * @type {documentToJsonReturn} + */ let data = {} + if (options.title) { data.title = doc.title() } + if (options.pageID) { data.pageID = doc.pageID() } + if (options.categories) { data.categories = doc.categories() } + if (options.sections) { data.sections = doc.sections().map((i) => i.json(options)) } + if (doc.isRedirect() === true) { data.isRedirect = true - data.redirectTo = doc._redirectTo + data.redirectTo = doc.redirectTo() data.sections = [] } @@ -32,18 +86,23 @@ const toJSON = function (doc, options) { if (options.coordinates) { data.coordinates = doc.coordinates() } + if (options.infoboxes) { data.infoboxes = doc.infoboxes().map((i) => i.json(options)) } + if (options.images) { data.images = doc.images().map((i) => i.json(options)) } + if (options.plaintext) { data.plaintext = doc.text(options) } + if (options.citations || options.references) { data.references = doc.references() } + return data } module.exports = toJSON diff --git a/src/02-section/Section.js b/src/02-section/Section.js index ebd79cfd..db0e30c7 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -31,6 +31,11 @@ class Section { * @param {Document} doc the document that this section belongs to */ constructor(data, doc) { + /** + * + * @private + * @type {Document|null} + */ this._doc = doc || null this._title = data.title || '' @@ -59,10 +64,20 @@ class Section { parse.paragraphs(this, doc) } + /** + * returns the title of a section. if no title is available then it returns empty string + * + * @returns {string} the title of the section + */ title() { return this._title || '' } + /** + * returns the index of the current section in the document + * + * @returns {number | null} the index of the current section in the document + */ index() { if (!this._doc) { return null @@ -74,41 +89,82 @@ class Section { return index } + /** + * returns the depth (or indentation) of the section + * aka how many levels deep is this section located + * + * @returns {number} the depth of the section + */ depth() { return this._depth } + /** + * returns the depth (or indentation) of the section + * aka how many levels deep is this section located + * + * @returns {number} the depth of the section + */ indentation() { return this.depth() } - sentences(n) { + /** + * returns all sentences in the section + * if an clue is provided then it returns the sentence at clue-th index + * + * @param {number} [clue] the clue for selecting the sentence + * @returns {Sentence | Sentence[]} all sentences in an array or the clue-th sentence + */ + sentences(clue) { let arr = this.paragraphs().reduce((list, p) => { return list.concat(p.sentences()) }, []) - if (typeof n === 'number') { - return arr[n] + if (typeof clue === 'number') { + return arr[clue] } return arr || [] } - paragraphs(n) { + /** + * returns all paragraphs in the section + * if an clue is provided then it returns the paragraph at clue-th index + * + * @param {number} [clue] the clue for selecting the paragraph + * @returns {Paragraph | Paragraph[]} all paragraphs in an array or the clue-th paragraph + */ + paragraphs(clue) { let arr = this._paragraphs || [] - if (typeof n === 'number') { - return arr[n] + if (typeof clue === 'number') { + return arr[clue] } return arr || [] } - paragraph(n) { + /** + * returns all paragraphs in the section + * if an clue is provided then it returns the paragraph at clue-th index + * + * @param {number} [clue] the clue for selecting the paragraph + * @returns {Paragraph | Paragraph[]} all paragraphs in an array or the clue-th paragraph + */ + paragraph(clue) { let arr = this._paragraphs || [] - if (typeof n === 'number') { - return arr[n] + if (typeof clue === 'number') { + return arr[clue] } return arr[0] } - links(n) { + /** + * returns all links in the section + * if an clue is provided and it is a number then it returns the link at clue-th index + * if an clue is provided and it is a string then it returns the link at the that content + * + * @param {number| string} [clue] the clue for selecting the link + * @returns {Link | Link[]} all links in an array or the clue-th link or the link with the content of clue + */ + links(clue) { let arr = [] this.infoboxes().forEach((templ) => { @@ -131,21 +187,25 @@ class Section { .reduce((acc, val) => acc.concat(val), []) //flatten the array .filter((val) => val !== undefined) //filter out all the undefined from the flattened empty arrays - if (typeof n === 'number') { - return arr[n] + if (typeof clue === 'number') { + return arr[clue] } - if (typeof n === 'string') { - n = n.toLowerCase() - - let link = arr.find((o) => o.page().toLowerCase() === n) - + if (typeof clue === 'string') { + let link = arr.find(o => o.page().toLowerCase() === clue.toLowerCase()) return link === undefined ? [] : [link] } return arr } + /** + * returns all infoboxes in the section + * if an clue is provided then it returns the infobox at clue-th index + * + * @param {number} [clue] the clue for selecting the infobox + * @returns {Infobox | Infobox[]} all infoboxes in an array or the clue-th infobox + */ tables(clue) { let arr = this._tables || [] if (typeof clue === 'number') { @@ -154,19 +214,37 @@ class Section { return arr } + /** + * returns all templates in the section + * if an clue is provided and clue is a number then it returns the template at clue-th index + * if an clue is provided and clue is a string then it returns all template with that name + * + * @param {number|string} [clue] the clue for selecting the template + * @returns {Template | Template[]} all templates in an array or the clue-th template or all template name `clue` + */ templates(clue) { let arr = this._templates || [] - arr = arr.map((t) => t.json()) + arr = arr.map(t => t.json()) + if (typeof clue === 'number') { return arr[clue] } + if (typeof clue === 'string') { clue = clue.toLowerCase() return arr.filter((o) => o.template === clue || o.name === clue) } + return arr } + /** + * returns all infoboxes in the section + * if an clue is provided then it returns the infobox at clue-th index + * + * @param {number} [clue] the clue for selecting the infobox + * @returns {Infobox | Infobox[]} all infoboxes in an array or the clue-th infobox + */ infoboxes(clue) { let arr = this._infoboxes || [] if (typeof clue === 'number') { @@ -175,6 +253,13 @@ class Section { return arr } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @param {number} [clue] the clue for selecting the list + * @returns {Link | Link[]} all lists in an array or the clue-th list + */ coordinates(clue) { let arr = [...this.templates('coord'), ...this.templates('coor')] if (typeof clue === 'number') { @@ -186,6 +271,13 @@ class Section { return arr } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @param {number} [clue] the clue for selecting the list + * @returns {Link | Link[]} all lists in an array or the clue-th list + */ lists(clue) { let arr = [] this.paragraphs().forEach((p) => { @@ -197,17 +289,31 @@ class Section { return arr } - interwiki(num) { + /** + * returns all interwiki links in the section + * if an clue is provided then it returns the interwiki link at clue-th index + * + * @param {number} [clue] the clue for selecting the interwiki link + * @returns {Link | Link[]} all interwiki links in an array or the clue-th interwiki link + */ + interwiki(clue) { let arr = [] this.paragraphs().forEach((p) => { arr = arr.concat(p.interwiki()) }) - if (typeof num === 'number') { - return arr[num] + if (typeof clue === 'number') { + return arr[clue] } return arr || [] } + /** + * returns all images in the section + * if an clue is provided then it returns the image at clue-th index + * + * @param {number} [clue] the clue for selecting the reference + * @returns {Image | Image[]} all images in an array or the clue-th image + */ images(clue) { let arr = [] this.paragraphs().forEach((p) => { @@ -219,6 +325,13 @@ class Section { return arr || [] } + /** + * returns all references in the section + * if an clue is provided then it returns the reference at clue-th index + * + * @param {number} [clue] the clue for selecting the reference + * @returns {Reference | Reference[]} all references in an array or the clue-th reference + */ references(clue) { let arr = this._references || [] if (typeof clue === 'number') { @@ -227,26 +340,48 @@ class Section { return arr } + /** + * returns all references in the section + * if an clue is provided then it returns the reference at clue-th index + * + * @param {number} [clue] the clue for selecting the reference + * @returns {Reference | Reference[]} all references in an array or the clue-th reference + */ citations(clue) { return this.references(clue) } //transformations + /** + * Removes the section from the document + * + * @returns {null|Document} the document without this section. or null if there is no document + */ remove() { if (!this._doc) { return null } + let bads = {} bads[this.title()] = true + //remove children too this.children().forEach((sec) => (bads[sec.title()] = true)) let sections = this._doc.sections() sections = sections.filter((sec) => bads.hasOwnProperty(sec.title()) !== true) + sections = sections.filter(sec => bads.hasOwnProperty(sec.title()) !== true) + this._doc._sections = sections return this._doc } //move-around sections like in jquery + /** + * returns the next sibling of this section + * if it can find one then it returns null + * + * @returns {Section|null} the next sibling + */ nextSibling() { //if this section is not part of a document then we can go to the next part of the document if (!this._doc) { @@ -275,10 +410,21 @@ class Section { return null } + /** + * returns the next sibling of this section + * if it can find one then it returns null + * + * @returns {Section|null} the next sibling + */ next() { return this.nextSibling() } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ lastSibling() { if (!this._doc) { return null @@ -288,19 +434,44 @@ class Section { return sections[index - 1] || null } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ last() { return this.lastSibling() } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ previousSibling() { return this.lastSibling() } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ previous() { return this.lastSibling() } - children(n) { + /** + * returns all the children of a section + * + * If the clue is a string then it will return the child with that exact title + * Else if the clue is a number then it returns the child at that index + * Else it returns all the children + * + * @param {number | string} [clue] A title of a section or a index of a wanted section + * @returns {Section | Section[] | null} A section or a array of sections + */ + children(clue) { if (!this._doc) { return null } @@ -308,6 +479,7 @@ class Section { let sections = this._doc.sections() let index = this.index() let children = [] + //(immediately preceding sections with higher depth) if (sections[index + 1] && sections[index + 1].depth() > this.depth()) { for (let i = index + 1; i < sections.length; i += 1) { @@ -318,46 +490,87 @@ class Section { } } } - if (typeof n === 'string') { - n = n.toLowerCase() - return children.find((s) => s.title().toLowerCase() === n) + + if (typeof clue === 'string') { + return children.find(s => s.title().toLowerCase() === clue.toLowerCase()) } - if (typeof n === 'number') { - return children[n] + + if (typeof clue === 'number') { + return children[clue] } + return children } - sections(n) { - return this.children(n) + /** + * returns all the children of a section + * + * If the clue is a string then it will return the child with that exact title + * Else if the clue is a number then it returns the child at that index + * Else it returns all the children + * + * @param {number | string} [clue] A title of a section or a index of a wanted section + * @returns {Section | Section[] | null} A section or a array of sections + */ + sections(clue) { + return this.children(clue) } + /** + * returns all the parent of a section + * + * @returns {Section | null} A section that is the parent of a section + */ parent() { if (!this._doc) { return null } let sections = this._doc.sections() let index = this.index() + for (let i = index; i >= 0; i -= 1) { if (sections[i] && sections[i].depth() < this.depth()) { return sections[i] } } + return null } + //outputs + + /** + * returns a plaintext version of the section + * + * @param options options for the text transformation + * @returns {string} the section in text + */ text(options) { options = setDefaults(options, defaults) - let pList = this.paragraphs() - pList = pList.map((p) => p.text(options)) - return pList.join('\n\n') + + return this + .paragraphs() + .map(p => p.text(options)) + .join('\n\n') } + /** + * returns a json version of the section + * + * @param {sectionToJsonOptions} options keys to include in the resulting json + * @returns {object} the section in json + */ json(options) { options = setDefaults(options, defaults) return toJSON(this, options) } + /** + * this function removes the circular nature of including the document in the sections + * + * @private + * @returns {object} the section without this._doc + */ toJSON() { return Object.entries(this) .filter((entry) => entry[0] !== '_doc') diff --git a/src/02-section/heading.js b/src/02-section/heading.js index da575463..19cc7655 100644 --- a/src/02-section/heading.js +++ b/src/02-section/heading.js @@ -3,7 +3,22 @@ const parseSentence = require('../04-sentence/').fromText const parseReferences = require('../reference/') const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/ -//interpret depth, title of headings like '==See also==' + +/** + * @typedef fakeSection + * @property {string} title + * @property {null | number} depth + * @property {string} wiki + */ + +/** + * estimates the depth of a section and parses the title to a normal format + * + * @private + * @param {fakeSection} section + * @param {string} str + * @returns {fakeSection} section the depth in a object + */ const parseHeading = function (section, str) { let m = str.match(heading_reg) if (!m) { diff --git a/src/02-section/index.js b/src/02-section/index.js index 5893e8ab..5bd5bf92 100644 --- a/src/02-section/index.js +++ b/src/02-section/index.js @@ -1,3 +1,5 @@ +//@ts-expect-error because this is some kind of type definition for jsdoc that's why typescript does not recognize it +const Document = require('../01-document/Document') const Section = require('./Section') const i18n = require('../_data/i18n') const isReference = new RegExp('^(' + i18n.references.join('|') + '):?', 'i') @@ -8,6 +10,12 @@ const parse = { heading: require('./heading'), } +/** + * filters out the reference section and empty sections and + * + * @param {Section[]} sections + * @returns {Section[]} all the section + */ const removeReferenceSection = function (sections) { return sections.filter((s, i) => { if (isReference.test(s.title()) === true) { @@ -30,6 +38,15 @@ const removeReferenceSection = function (sections) { }) } +/** + * this function splits the wiki texts on '=' and puts every part in a Section Object + * it also pre processes the section text for the Section object + * then it filters out the reference section + * + * @private + * @param {Document} doc the document that contains the wiki text + * @returns {Section[]} the sections that are parsed out + */ const parseSections = function (doc) { let sections = [] let splits = doc._wiki.split(section_reg) diff --git a/src/02-section/start-to-end/index.js b/src/02-section/start-to-end/index.js index b38c05ef..e39ed269 100644 --- a/src/02-section/start-to-end/index.js +++ b/src/02-section/start-to-end/index.js @@ -28,7 +28,7 @@ const parseMath = require('./math') * @private * @param {Section} section * @param {Document} doc - * @return {Catcher} + * @returns {Catcher} */ const xmlTemplates = function (section, doc) { const catcher = { diff --git a/src/02-section/toJson.js b/src/02-section/toJson.js index 846c435c..89ed96ce 100644 --- a/src/02-section/toJson.js +++ b/src/02-section/toJson.js @@ -1,6 +1,22 @@ const setDefaults = require('../_lib/setDefaults') const encode = require('../_lib/encode') +const Section = require('../02-section/Section') +/** + * @typedef sectionToJsonOptions + * @property {boolean | undefined} headers + * @property {boolean | undefined} images + * @property {boolean | undefined} tables + * @property {boolean | undefined} depth + * @property {boolean | undefined} citations + * @property {boolean | undefined} references + * @property {boolean | undefined} lists + * @property {boolean | undefined} sentences + * @property {boolean | undefined} templates + * @property {boolean | undefined} infoboxes + * @property {boolean | undefined} paragraphs + * @property {boolean | undefined} encode + */ const defaults = { headers: true, depth: true, @@ -11,17 +27,46 @@ const defaults = { infoboxes: true, lists: true, references: true, + citations: true, + sentences: false, } -// + +/** + * @typedef sectionToJsonReturn + * @property {string | undefined} title + * @property {number | undefined} depth + * @property {Paragraph[] | undefined} paragraphs + * @property {Image[] | undefined} images + * @property {Table[] | undefined} tables + * @property {Template[] | undefined} templates + * @property {Infobox[] | undefined} infoboxes + * @property {List[] | undefined} lists + * @property {Reference[] | undefined} references + * @property {Sentence[] | undefined} sentences + */ + +/** + * + * @param {Section} section + * @param {sectionToJsonOptions} options + * @returns {sectionToJsonReturn} + */ const toJSON = function (section, options) { options = setDefaults(options, defaults) + + /** + * @type {sectionToJsonReturn} + */ let data = {} + if (options.headers === true) { data.title = section.title() } + if (options.depth === true) { data.depth = section.depth() } + //these return objects if (options.paragraphs === true) { let paragraphs = section.paragraphs().map((p) => p.json(options)) @@ -29,6 +74,7 @@ const toJSON = function (section, options) { data.paragraphs = paragraphs } } + //image json data if (options.images === true) { let images = section.images().map((img) => img.json(options)) @@ -36,6 +82,7 @@ const toJSON = function (section, options) { data.images = images } } + //table json data if (options.tables === true) { let tables = section.tables().map((t) => t.json(options)) @@ -43,6 +90,7 @@ const toJSON = function (section, options) { data.tables = tables } } + //template json data if (options.templates === true) { let templates = section.templates() diff --git a/src/_data/flags.js b/src/_data/flags.js index 055c25c1..70df86bd 100644 --- a/src/_data/flags.js +++ b/src/_data/flags.js @@ -21,11 +21,7 @@ module.exports = [ ['🇧🇪', 'bel', 'belgium'], ['🇧🇫', 'bfa', 'burkina faso'], ['🇧🇬', 'bgr', 'bulgaria'], - [ - '🇧🇬', - 'bul', //dupe - 'bulgaria', - ], + ['🇧🇬', 'bul', 'bulgaria'], //dupe ['🇧🇭', 'bhr', 'bahrain'], ['🇧🇮', 'bdi', 'burundi'], ['🇧🇯', 'ben', 'benin'], @@ -47,7 +43,7 @@ module.exports = [ ['🇨🇫', 'caf', 'central african republic'], ['🇨🇬', 'cog', 'congo'], ['🇨🇭', 'che', 'switzerland'], - ['🇨🇮', 'civ', "côte d'ivoire"], + ['🇨🇮', 'civ', 'côte d\'ivoire'], ['🇨🇰', 'cok', 'cook islands'], ['🇨🇱', 'chl', 'chile'], ['🇨🇲', 'cmr', 'cameroon'], @@ -61,11 +57,7 @@ module.exports = [ ['🇨🇾', 'cyp', 'cyprus'], ['🇨🇿', 'cze', 'czech republic'], ['🇩🇪', 'deu', 'germany'], - [ - '🇩🇪', - 'ger', //alias - 'germany', - ], + ['🇩🇪', 'ger', 'germany'],//alias ['🇩🇯', 'dji', 'djibouti'], ['🇩🇰', 'dnk', 'denmark'], ['🇩🇲', 'dma', 'dominica'], @@ -87,7 +79,7 @@ module.exports = [ ['🇬🇦', 'gab', 'gabon'], ['🇬🇧', 'gbr', 'united kingdom'], ['🇬🇩', 'grd', 'grenada'], - // ['🇬🇪', 'geo', 'georgia'], + //['🇬🇪', 'geo', 'georgia'], ['🇬🇫', 'guf', 'french guiana'], ['🇬🇬', 'ggy', 'guernsey'], ['🇬🇭', 'gha', 'ghana'], @@ -134,7 +126,7 @@ module.exports = [ ['🇰🇼', 'kwt', 'kuwait'], ['🇰🇾', 'cym', 'cayman islands'], ['🇰🇿', 'kaz', 'kazakhstan'], - ['🇱🇦', 'lao', "lao people's democratic republic"], + ['🇱🇦', 'lao', 'lao people\'s democratic republic'], ['🇱🇧', 'lbn', 'lebanon'], ['🇱🇨', 'lca', 'saint lucia'], ['🇱🇮', 'lie', 'liechtenstein'], @@ -241,12 +233,8 @@ module.exports = [ ['🇺🇦', 'ukr', 'ukraine'], ['🇺🇬', 'uga', 'uganda'], ['🇺🇲', 'umi', 'united states minor outlying islands'], + ['🇺🇸', 'us', 'united states'],//alias ['🇺🇸', 'usa', 'united states'], - [ - '🇺🇸', - 'us', //alias - 'united states', - ], ['🇺🇾', 'ury', 'uruguay'], ['🇺🇿', 'uzb', 'uzbekistan'], ['🇻🇦', 'vat', 'vatican city'], @@ -256,7 +244,6 @@ module.exports = [ ['🇻🇮', 'vir', 'virgin islands, u.s.'], ['🇻🇳', 'vnm', 'viet nam'], ['🇻🇺', 'vut', 'vanuatu'], - ['', 'win', 'west indies'], ['🇼🇫', 'wlf', 'wallis and futuna'], ['🇼🇸', 'wsm', 'samoa'], ['🇾🇪', 'yem', 'yemen'], diff --git a/src/_fetch/_headers.js b/src/_fetch/_headers.js index 9a4c5e7c..925be4c8 100644 --- a/src/_fetch/_headers.js +++ b/src/_fetch/_headers.js @@ -1,6 +1,8 @@ /** + * @private * @typedef HeaderOptions * @property {string} redirect + * @property {object} headers * @property {*} headers.Origin * @property {string} headers.Content-Type * @property {string} headers.Api-User-Agent diff --git a/src/_fetch/index.js b/src/_fetch/index.js index 8fa34924..4e5bbaef 100644 --- a/src/_fetch/index.js +++ b/src/_fetch/index.js @@ -14,11 +14,8 @@ const isUrl = /^https?:\/\// * @property {string | undefined} [domain] * @property {boolean | undefined} [follow_redirects] * @property {string | undefined} [lang] - * - * * @property {string | number | Array| undefined} [title] - * - * @property {string | undefined} ["Api-User-Agent"] + * @property {string | undefined} [Api-User-Agent] */ /** @@ -39,7 +36,7 @@ const defaults = { * @param {string | number | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch * @param {fetchDefaults| Function | string} [options] the options for the fetch or the language of the wiki for the article or the callback if you dont provide any options * @param {Function | fetchDefaults} [c] the callback function for the call or the options for the fetch - * @returns {Promise} promise of http result + * @returns {Promise} either null if no page is found, Document if you asked for one result, and a array of Documents if you asked for muliple pages */ const fetch = function (title, options, c) { let callback = null diff --git a/src/_lib/setDefaults.js b/src/_lib/setDefaults.js index 7ac33c02..b378a819 100644 --- a/src/_lib/setDefaults.js +++ b/src/_lib/setDefaults.js @@ -2,9 +2,9 @@ * applies the the key values of defaults to options * * @private - * @param {{}} options the user options - * @param {{}} defaults the defaults - * @returns {{}} the user options with the defaults applied + * @param {object} options the user options + * @param {object} defaults the defaults + * @returns {object} the user options with the defaults applied */ const setDefaults = function (options, defaults) { return Object.assign({}, defaults, options) diff --git a/src/template/_parsers/02-keyMaker.js b/src/template/_parsers/02-keyMaker.js index 45e832bc..392d94e9 100644 --- a/src/template/_parsers/02-keyMaker.js +++ b/src/template/_parsers/02-keyMaker.js @@ -1,5 +1,5 @@ -// every value in {{tmpl|a|b|c}} needs a name -// here we come up with names for them +//every value in {{tmpl|a|b|c}} needs a name +//here we come up with names for them const hasKey = /^[a-z0-9\u00C0-\u00FF\._\- '()œ]+=/iu //templates with these properties are asking for trouble @@ -9,7 +9,18 @@ const reserved = { prototype: true, } -//turn 'key=val' into {key:key, val:val} +/** + * @typedef parseKeyReturn + * @property {string} val + * @property {string} key + */ + +/** + * turn 'key=val' into {key:key, val:val} + * + * @param {string} str the string that will be parsed + * @returns {parseKeyReturn} the spit string + */ const parseKey = function (str) { let parts = str.split('=') let key = parts[0] || '' @@ -31,7 +42,7 @@ const parseKey = function (str) { * @private * @param {string[]} arr the array of parameters * @param {string[]} [order] the order in which the parameters are returned - * @returns {{}} and object with the names as the keys and the values as the values + * @returns {object} and object with the names as the keys and the values as the values */ const keyMaker = function (arr, order) { let keyIndex = 0 diff --git a/src/template/_parsers/parse.js b/src/template/_parsers/parse.js index 0e186ac0..8cb30219 100644 --- a/src/template/_parsers/parse.js +++ b/src/template/_parsers/parse.js @@ -12,7 +12,7 @@ const cleanup = require('./03-cleanup') * @private * @param str * @param {'json' | 'raw'} [fmt] - * @returns {Sentence|string|Object} + * @returns {Sentence|string|object} */ const makeFormat = function (str, fmt) { let s = parseSentence(str) @@ -33,7 +33,7 @@ const makeFormat = function (str, fmt) { * @param {string} tmpl the template text * @param {string[]} [order] the order in which the parameters are returned * @param {'json' | 'raw'} [fmt] whether you wan to parse the text of the template the raw object or just the text - * @returns {Object} the parameters of the template in a usable format + * @returns {object} the parameters of the template in a usable format */ const parser = function (tmpl, order = [], fmt) { //remove {{}}'s and split based on pipes diff --git a/src/template/templates/geo/index.js b/src/template/templates/geo/index.js index 2976d913..ae3a3b50 100644 --- a/src/template/templates/geo/index.js +++ b/src/template/templates/geo/index.js @@ -13,15 +13,18 @@ const templates = { //https://en.wikivoyage.org/wiki/Template:Geo geo: ['lat', 'lon', 'zoom'], } -// {{coord|latitude|longitude|coordinate parameters|template parameters}} -// {{coord|dd|N/S|dd|E/W|coordinate parameters|template parameters}} -// {{coord|dd|mm|N/S|dd|mm|E/W|coordinate parameters|template parameters}} -// {{coord|dd|mm|ss|N/S|dd|mm|ss|E/W|coordinate parameters|template parameters}} + +//{{coord|latitude|longitude|coordinate parameters|template parameters}} +//{{coord|dd|N/S|dd|E/W|coordinate parameters|template parameters}} +//{{coord|dd|mm|N/S|dd|mm|E/W|coordinate parameters|template parameters}} +//{{coord|dd|mm|ss|N/S|dd|mm|ss|E/W|coordinate parameters|template parameters}} templates['coor'] = templates.coord -// these are from the nl wiki + +//these are from the nl wiki templates['coor title dms'] = templates.coord templates['coor title dec'] = templates.coord templates['coor dms'] = templates.coord templates['coor dm'] = templates.coord templates['coor dec'] = templates.coord + module.exports = templates From 72aacf856d89fe7854e8731877fee13c20ac7950 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 1 Nov 2020 12:59:27 -0500 Subject: [PATCH 024/117] get tests passing again --- scratch.js | 24 +++++++++++++++++++++--- src/01-document/toJson.js | 9 +-------- src/02-section/Section.js | 37 ++++++++++++++++++------------------- src/02-section/toJson.js | 3 --- tests/Document.test.js | 1 - 5 files changed, 40 insertions(+), 34 deletions(-) diff --git a/scratch.js b/scratch.js index e1500387..52c2355e 100644 --- a/scratch.js +++ b/scratch.js @@ -15,6 +15,24 @@ wtf.extend(require('./plugins/api/src')) // }) // }) -wtf.fetch('Toronto Raptors').then((doc) => { - console.log(doc) -}) +// wtf.fetch('Toronto Raptors').then((doc) => { +// console.log(doc) +// }) +// const path = require('path') +// const fs = require('fs') +// let str = fs.readFileSync(path.join(__dirname, './tests/cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') +// let doc = wtf(str) +// console.log(doc.json().sections[0].paragraphs) +// console.log(doc.sections(0).json()) + +const str = ` +{{Infobox person + | name = Jodie Emery + | birth.date = January 4, 1985 + | known_for = [[cannabis (drug)|Cannabis]] legalisation +}} +hello world {{lkjsdf|foo=28|hs.he=90}}.` +let doc = wtf(str) +let json = doc.json({}) +// console.log(doc.sections(0).infoboxes()) +console.log(json.sections[0]) diff --git a/src/01-document/toJson.js b/src/01-document/toJson.js index bae2ff10..a0696f95 100644 --- a/src/01-document/toJson.js +++ b/src/01-document/toJson.js @@ -17,15 +17,9 @@ const Document = require('./Document') */ const defaults = { title: true, + sections: true, pageID: true, categories: true, - sections: true, - coordinates: false, - infoboxes:false, - images: false, - plaintext: false, - citations: false, - references: false } /** @@ -43,7 +37,6 @@ const defaults = { * @property {Reference[] | undefined} references */ - /** * an opinionated output of the most-wanted data * diff --git a/src/02-section/Section.js b/src/02-section/Section.js index db0e30c7..fa82350a 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -192,7 +192,7 @@ class Section { } if (typeof clue === 'string') { - let link = arr.find(o => o.page().toLowerCase() === clue.toLowerCase()) + let link = arr.find((o) => o.page().toLowerCase() === clue.toLowerCase()) return link === undefined ? [] : [link] } @@ -224,7 +224,7 @@ class Section { */ templates(clue) { let arr = this._templates || [] - arr = arr.map(t => t.json()) + arr = arr.map((t) => t.json()) if (typeof clue === 'number') { return arr[clue] @@ -369,7 +369,7 @@ class Section { this.children().forEach((sec) => (bads[sec.title()] = true)) let sections = this._doc.sections() sections = sections.filter((sec) => bads.hasOwnProperty(sec.title()) !== true) - sections = sections.filter(sec => bads.hasOwnProperty(sec.title()) !== true) + sections = sections.filter((sec) => bads.hasOwnProperty(sec.title()) !== true) this._doc._sections = sections return this._doc @@ -390,7 +390,7 @@ class Section { //first we get the a list of sections and our own position in this list let sections = this._doc.sections() - let index = this.index() + let index = this.index() || 0 //then we look trough the list looking for the next sibling //aka we look the next item at the same depth as us @@ -430,7 +430,7 @@ class Section { return null } let sections = this._doc.sections() - let index = this.index() + let index = this.index() || 0 return sections[index - 1] || null } @@ -477,7 +477,7 @@ class Section { } let sections = this._doc.sections() - let index = this.index() + let index = this.index() || 0 let children = [] //(immediately preceding sections with higher depth) @@ -492,7 +492,7 @@ class Section { } if (typeof clue === 'string') { - return children.find(s => s.title().toLowerCase() === clue.toLowerCase()) + return children.find((s) => s.title().toLowerCase() === clue.toLowerCase()) } if (typeof clue === 'number') { @@ -526,7 +526,7 @@ class Section { return null } let sections = this._doc.sections() - let index = this.index() + let index = this.index() || 0 for (let i = index; i >= 0; i -= 1) { if (sections[i] && sections[i].depth() < this.depth()) { @@ -548,9 +548,8 @@ class Section { text(options) { options = setDefaults(options, defaults) - return this - .paragraphs() - .map(p => p.text(options)) + return this.paragraphs() + .map((p) => p.text(options)) .join('\n\n') } @@ -571,14 +570,14 @@ class Section { * @private * @returns {object} the section without this._doc */ - toJSON() { - return Object.entries(this) - .filter((entry) => entry[0] !== '_doc') - .reduce((accum, [k, v]) => { - accum[k] = v - return accum - }, {}) - } + // toJSON() { + // return Object.entries(this) + // .filter((entry) => entry[0] !== '_doc') + // .reduce((accum, [k, v]) => { + // accum[k] = v + // return accum + // }, {}) + // } } module.exports = Section diff --git a/src/02-section/toJson.js b/src/02-section/toJson.js index 89ed96ce..f89c6913 100644 --- a/src/02-section/toJson.js +++ b/src/02-section/toJson.js @@ -27,8 +27,6 @@ const defaults = { infoboxes: true, lists: true, references: true, - citations: true, - sentences: false, } /** @@ -53,7 +51,6 @@ const defaults = { */ const toJSON = function (section, options) { options = setDefaults(options, defaults) - /** * @type {sectionToJsonReturn} */ diff --git a/tests/Document.test.js b/tests/Document.test.js index c2289910..a95a1c8b 100644 --- a/tests/Document.test.js +++ b/tests/Document.test.js @@ -2053,7 +2053,6 @@ test('plurals / singular - all should exist', (t) => { Object.keys(singels).forEach((fn) => { singels[fn].forEach((testCase) => { const result = testCase.json ? doc[fn](testCase.clue).json() : doc[fn](testCase.clue) - //console.log(JSON.stringify(result)) t.deepEqual( JSON.stringify(result), JSON.stringify(testCase.expected), From 4179f64bfdd1245045251e3134faaf097c5309ed Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 1 Nov 2020 13:11:47 -0500 Subject: [PATCH 025/117] update deps --- package-lock.json | 73 ++++++++++++++++++++++++++++++++++++++++------- package.json | 6 ++-- scratch.js | 4 +-- 3 files changed, 66 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index efffe94b..f8641c2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2351,9 +2351,9 @@ } }, "eslint-plugin-jsdoc": { - "version": "30.7.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.3.tgz", - "integrity": "sha512-slzJeKrm3vXabRYcFBpbUgWgdnATN9rNOFAr7IhmkxmR9Vk/6qN1c/IdvTqVSEctDRQ08chR+Lvk8fRayXgYZg==", + "version": "30.7.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.6.tgz", + "integrity": "sha512-w18IOiS/9ahKgRfQOuHbce+EQYx3fwIkZhUZDEK+augNlhJkzgTSZkrBkzaflSbFNZ9/Tk4xzUABEaTbsBSzew==", "dev": true, "requires": { "comment-parser": "^0.7.6", @@ -4171,9 +4171,9 @@ } }, "rollup": { - "version": "2.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz", - "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==", + "version": "2.33.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.0.tgz", + "integrity": "sha512-7jFrmKgQj1GOWlC8rExHaPcv2SQnWMv1BFUyH/xWS5w80h6132wBUWp/qTvQkAbnlqGvi13T6iP2kHo9Sb2HxA==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -4418,7 +4418,7 @@ }, "split": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/split/-/split-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", "dev": true, "requires": { @@ -4586,13 +4586,64 @@ "dev": true }, "tap-dancer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.0.tgz", - "integrity": "sha512-ivZ+x++JKBbMQP5Jp7xfT21HsGJ+AeNMV4grlREyowcgDilFiY7b+nmDwffA+iagItqth3W+9UW4DBHsak3P8Q==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { diff --git a/package.json b/package.json index 0902f4dc..3ebb4bb0 100644 --- a/package.json +++ b/package.json @@ -78,17 +78,17 @@ "cross-env": "7.0.2", "eslint": "7.12.1", "eslint-plugin-compat": "^3.8.0", - "eslint-plugin-jsdoc": "30.7.3", + "eslint-plugin-jsdoc": "30.7.6", "jsdoc": "^3.6.6", "nyc": "^15.1.0", "recursive-install": "1.4.0", - "rollup": "2.32.1", + "rollup": "2.33.0", "rollup-plugin-babel": "4.4.0", "rollup-plugin-commonjs": "10.1.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-terser": "7.0.2", "shelljs": "0.8.4", - "tap-dancer": "0.3.0", + "tap-dancer": "0.3.1", "tape": "5.0.1" }, "eslintIgnore": [ diff --git a/scratch.js b/scratch.js index 52c2355e..88d21960 100644 --- a/scratch.js +++ b/scratch.js @@ -33,6 +33,4 @@ const str = ` }} hello world {{lkjsdf|foo=28|hs.he=90}}.` let doc = wtf(str) -let json = doc.json({}) -// console.log(doc.sections(0).infoboxes()) -console.log(json.sections[0]) +console.log(doc) From 68beb967dcc522ce11e24a7c63552fa5c44693e9 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Mon, 2 Nov 2020 13:15:08 -0500 Subject: [PATCH 026/117] add pagination to template api --- plugins/api/src/_paginate.js | 12 +++++++++ plugins/api/src/getTransclusions.js | 37 +++++++++++++++++++++------ scratch.js | 39 ++++++----------------------- 3 files changed, 49 insertions(+), 39 deletions(-) create mode 100644 plugins/api/src/_paginate.js diff --git a/plugins/api/src/_paginate.js b/plugins/api/src/_paginate.js new file mode 100644 index 00000000..d5fabdea --- /dev/null +++ b/plugins/api/src/_paginate.js @@ -0,0 +1,12 @@ +const paginate = async function (url, prop, http) { + const doOne = function () { + http(url).then((res) => { + let pages = Object.keys(res.query.pages || {}) + if (pages.length === 0) { + return [] + } + return res.query.pages[pages[0]].transcludedin || [] + }) + } +} +module.exports = paginate diff --git a/plugins/api/src/getTransclusions.js b/plugins/api/src/getTransclusions.js index 0ec331e7..216a0856 100644 --- a/plugins/api/src/getTransclusions.js +++ b/plugins/api/src/getTransclusions.js @@ -1,4 +1,5 @@ const { normalize, defaults, toUrlParams } = require('./_fns') +const paginate = require('./_paginate') const params = { action: 'query', @@ -10,28 +11,48 @@ const params = { redirects: true } -const makeUrl = function (title, options, cursor) { +const makeUrl = function (title, options, append) { let url = `https://${options.lang}.wikipedia.org/${options.path}?` if (options.domain) { url = `https://${options.domain}/${options.path}?` } url += toUrlParams(params) url += `&titles=${normalize(title)}` - if (cursor) { - url += '&ticontinue=' + cursor + // support custom cursor params + if (append) { + url += append } return url } -// fetch all the pages that use a specific template -const getTransclusions = function (template, _options, http) { - let url = makeUrl(template, defaults) +const doOne = async function (url, http, prop) { return http(url).then((res) => { let pages = Object.keys(res.query.pages || {}) if (pages.length === 0) { - return [] + return { pages: [], cursor: null } + } + return { + pages: res.query.pages[pages[0]][prop] || [], + cursor: res.continue } - return res.query.pages[pages[0]].transcludedin || [] }) } + +// fetch all the pages that use a specific template +const getTransclusions = async function (template, _options, http) { + let list = [] + let getMore = true + let append = '' + while (getMore) { + let url = makeUrl(template, defaults, append) + let { pages, cursor } = await doOne(url, http, 'transcludedin') + list = list.concat(pages) + if (cursor && cursor.ticontinue) { + append = '&ticontinue=' + cursor.ticontinue + } else { + getMore = false + } + } + return list +} module.exports = getTransclusions diff --git a/scratch.js b/scratch.js index 88d21960..f06091dd 100644 --- a/scratch.js +++ b/scratch.js @@ -1,36 +1,13 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/api/src')) -// var str = `[[Image:Levellers declaration and standard.gif|thumb|Woodcut from a [[Diggers]] document by [[William Everard (Digger)|William Everard]]]]` -// console.log(wtf(str).json()) +const template = 'Template:Infobox medical condition (new)' -// wtf.getTemplatePages('Template:Switzerland-badminton-bio-stub').then(function (pages) { -// wtf.fetchList(pages).then((docs) => { -// docs.forEach((doc) => { -// let infobox = doc.infobox(0) -// if (infobox && infobox.get('height')) { -// console.log(doc.title(), infobox.get('height').text()) -// } -// }) -// }) -// }) +const getTemplates = async function (tmpl) { + let pages = await wtf.getTemplatePages(tmpl) + return pages.map((o) => o.title) +} -// wtf.fetch('Toronto Raptors').then((doc) => { -// console.log(doc) -// }) -// const path = require('path') -// const fs = require('fs') -// let str = fs.readFileSync(path.join(__dirname, './tests/cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') -// let doc = wtf(str) -// console.log(doc.json().sections[0].paragraphs) -// console.log(doc.sections(0).json()) - -const str = ` -{{Infobox person - | name = Jodie Emery - | birth.date = January 4, 1985 - | known_for = [[cannabis (drug)|Cannabis]] legalisation -}} -hello world {{lkjsdf|foo=28|hs.he=90}}.` -let doc = wtf(str) -console.log(doc) +getTemplates(template).then((arr) => { + console.log(JSON.stringify(arr, null, 2)) +}) From 4eac79946366d0f56e2ff0d4356f1578046e170d Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Mon, 2 Nov 2020 13:27:12 -0500 Subject: [PATCH 027/117] add pagination to redirects api --- plugins/api/src/_fns.js | 13 +++++++++++++ plugins/api/src/_paginate.js | 12 ------------ plugins/api/src/getIncoming.js | 30 +++++++++++++++++------------ plugins/api/src/getPageViews.js | 6 +++--- plugins/api/src/getRedirects.js | 30 +++++++++++++++++------------ plugins/api/src/getTransclusions.js | 18 ++--------------- plugins/api/src/index.js | 10 ++++++++-- scratch.js | 9 +++++---- 8 files changed, 67 insertions(+), 61 deletions(-) delete mode 100644 plugins/api/src/_paginate.js diff --git a/plugins/api/src/_fns.js b/plugins/api/src/_fns.js index db530ad5..7e3dcbdf 100644 --- a/plugins/api/src/_fns.js +++ b/plugins/api/src/_fns.js @@ -16,3 +16,16 @@ exports.toUrlParams = function (obj) { }) return arr.join('&') } + +exports.fetchOne = function (url, http, prop) { + return http(url).then((res) => { + let pages = Object.keys(res.query.pages || {}) + if (pages.length === 0) { + return { pages: [], cursor: null } + } + return { + pages: res.query.pages[pages[0]][prop] || [], + cursor: res.continue + } + }) +} diff --git a/plugins/api/src/_paginate.js b/plugins/api/src/_paginate.js deleted file mode 100644 index d5fabdea..00000000 --- a/plugins/api/src/_paginate.js +++ /dev/null @@ -1,12 +0,0 @@ -const paginate = async function (url, prop, http) { - const doOne = function () { - http(url).then((res) => { - let pages = Object.keys(res.query.pages || {}) - if (pages.length === 0) { - return [] - } - return res.query.pages[pages[0]].transcludedin || [] - }) - } -} -module.exports = paginate diff --git a/plugins/api/src/getIncoming.js b/plugins/api/src/getIncoming.js index ffe5dfb0..085d781c 100644 --- a/plugins/api/src/getIncoming.js +++ b/plugins/api/src/getIncoming.js @@ -1,4 +1,4 @@ -const { normalize, defaults, toUrlParams } = require('./_fns') +const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns') const params = { action: 'query', @@ -11,27 +11,33 @@ const params = { redirects: true } -const makeUrl = function (title, options, cursor) { +const makeUrl = function (title, options, append) { let url = `https://${options.lang}.wikipedia.org/${options.path}?` if (options.domain) { url = `https://${options.domain}/${options.path}?` } url += toUrlParams(params) url += `&titles=${normalize(title)}` - if (cursor) { - url += '&lhcontinue=' + cursor + if (append) { + url += append } return url } -const getIncoming = function (doc, http) { - let url = makeUrl(doc.title(), defaults) - return http(url).then((res) => { - let pages = Object.keys(res.query.pages || {}) - if (pages.length === 0) { - return [] +const getIncoming = async function (title, http) { + let list = [] + let getMore = true + let append = '' + while (getMore) { + let url = makeUrl(title, defaults, append) + let { pages, cursor } = await fetchOne(url, http, 'linkshere') + list = list.concat(pages) + if (cursor && cursor.lhcontinue) { + append = '&lhcontinue=' + cursor.lhcontinue + } else { + getMore = false } - return res.query.pages[pages[0]].linkshere || [] - }) + } + return list } module.exports = getIncoming diff --git a/plugins/api/src/getPageViews.js b/plugins/api/src/getPageViews.js index 908521c0..31c33322 100644 --- a/plugins/api/src/getPageViews.js +++ b/plugins/api/src/getPageViews.js @@ -8,15 +8,15 @@ const params = { redirects: true } -const makeUrl = function (title, options, cursor) { +const makeUrl = function (title, options, append) { let url = `https://${options.lang}.wikipedia.org/${options.path}?` if (options.domain) { url = `https://${options.domain}/${options.path}?` } url += toUrlParams(params) url += `&titles=${normalize(title)}` - if (cursor) { - url += '&rdcontinue=' + cursor + if (append) { + url += append } return url } diff --git a/plugins/api/src/getRedirects.js b/plugins/api/src/getRedirects.js index 2e3911b6..eb1e5907 100644 --- a/plugins/api/src/getRedirects.js +++ b/plugins/api/src/getRedirects.js @@ -1,4 +1,4 @@ -const { normalize, defaults, toUrlParams } = require('./_fns') +const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns') const params = { action: 'query', @@ -10,27 +10,33 @@ const params = { redirects: true } -const makeUrl = function (title, options, cursor) { +const makeUrl = function (title, options, append) { let url = `https://${options.lang}.wikipedia.org/${options.path}?` if (options.domain) { url = `https://${options.domain}/${options.path}?` } url += toUrlParams(params) url += `&titles=${normalize(title)}` - if (cursor) { - url += '&rdcontinue=' + cursor + if (append) { + url += append } return url } -const getRedirects = function (doc, http) { - let url = makeUrl(doc.title(), defaults) - return http(url).then((res) => { - let pages = Object.keys(res.query.pages || {}) - if (pages.length === 0) { - return [] +const getRedirects = async function (title, http) { + let list = [] + let getMore = true + let append = '' + while (getMore) { + let url = makeUrl(title, defaults, append) + let { pages, cursor } = await fetchOne(url, http, 'redirects') + list = list.concat(pages) + if (cursor && cursor.rdcontinue) { + append = '&rdcontinue=' + cursor.lhcontinue + } else { + getMore = false } - return res.query.pages[pages[0]].redirects || [] - }) + } + return list } module.exports = getRedirects diff --git a/plugins/api/src/getTransclusions.js b/plugins/api/src/getTransclusions.js index 216a0856..0cc1a0cf 100644 --- a/plugins/api/src/getTransclusions.js +++ b/plugins/api/src/getTransclusions.js @@ -1,5 +1,4 @@ -const { normalize, defaults, toUrlParams } = require('./_fns') -const paginate = require('./_paginate') +const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns') const params = { action: 'query', @@ -25,19 +24,6 @@ const makeUrl = function (title, options, append) { return url } -const doOne = async function (url, http, prop) { - return http(url).then((res) => { - let pages = Object.keys(res.query.pages || {}) - if (pages.length === 0) { - return { pages: [], cursor: null } - } - return { - pages: res.query.pages[pages[0]][prop] || [], - cursor: res.continue - } - }) -} - // fetch all the pages that use a specific template const getTransclusions = async function (template, _options, http) { let list = [] @@ -45,7 +31,7 @@ const getTransclusions = async function (template, _options, http) { let append = '' while (getMore) { let url = makeUrl(template, defaults, append) - let { pages, cursor } = await doOne(url, http, 'transcludedin') + let { pages, cursor } = await fetchOne(url, http, 'transcludedin') list = list.concat(pages) if (cursor && cursor.ticontinue) { append = '&ticontinue=' + cursor.ticontinue diff --git a/plugins/api/src/index.js b/plugins/api/src/index.js index c5dc67e9..28634bfe 100644 --- a/plugins/api/src/index.js +++ b/plugins/api/src/index.js @@ -9,10 +9,10 @@ const fetchList = require('./fetchList') const addMethod = function (models) { // doc methods models.Doc.prototype.getRedirects = function () { - return getRedirects(this, models.http) + return getRedirects(this.title(), models.http) } models.Doc.prototype.getIncoming = function () { - return getIncoming(this, models.http) + return getIncoming(this.title(), models.http) } models.Doc.prototype.getPageViews = function () { return getPageViews(this, models.http) @@ -31,5 +31,11 @@ const addMethod = function (models) { models.wtf.fetchList = function (list, options) { return fetchList(list, options, models.wtf) } + models.wtf.getIncoming = function (title) { + return getIncoming(title, models.http) + } + models.wtf.getRedirects = function (title) { + return getRedirects(title, models.http) + } } module.exports = addMethod diff --git a/scratch.js b/scratch.js index f06091dd..d0010d12 100644 --- a/scratch.js +++ b/scratch.js @@ -1,13 +1,14 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/api/src')) -const template = 'Template:Infobox medical condition (new)' +// const template = 'Template:Infobox medical condition (new)' +const template = 'Toronto' -const getTemplates = async function (tmpl) { - let pages = await wtf.getTemplatePages(tmpl) +const getAll = async function (tmpl) { + let pages = await wtf.getRedirects(tmpl) return pages.map((o) => o.title) } -getTemplates(template).then((arr) => { +getAll(template).then((arr) => { console.log(JSON.stringify(arr, null, 2)) }) From 9cedccbc45439193829ecad552f98b37f1063056 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Tue, 10 Nov 2020 13:13:39 -0500 Subject: [PATCH 028/117] fix failure to pass clue through infobox methods --- scratch.js | 57 ++++++++++++++++++++++++++++------ src/01-document/Document.js | 2 +- src/01-document/_sectionMap.js | 1 - src/02-section/Section.js | 14 ++++++--- 4 files changed, 58 insertions(+), 16 deletions(-) diff --git a/scratch.js b/scratch.js index d0010d12..e7fd7bff 100644 --- a/scratch.js +++ b/scratch.js @@ -1,14 +1,53 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/api/src')) -// const template = 'Template:Infobox medical condition (new)' -const template = 'Toronto' +const template = 'Template:Infobox medical condition (new)' -const getAll = async function (tmpl) { - let pages = await wtf.getRedirects(tmpl) - return pages.map((o) => o.title) -} +// const getAll = async function (tmpl) { +// let pages = await wtf.getTemplatePages(tmpl) +// return pages.map((o) => o.title) +// } -getAll(template).then((arr) => { - console.log(JSON.stringify(arr, null, 2)) -}) +// getAll(template).then((arr) => { +// console.log(JSON.stringify(arr, null, 2)) +// }) + +let str = `{{short description|Human disease}} +{{Infobox medical condition (new) +| name = Bursitis +| synonyms = +| image = Bursitis_Elbow_WC.JPG +| caption = Example of [[olecranon bursitis]] +| pronounce = +| field = [[Orthopedics]] +|| symptoms = +| complications = +| onset = +| duration = +| types = +| causes = +| risks = +| diagnosis = +| differential = +| prevention = +| treatment = +| medication = +| prognosis = +| frequency = +| deaths = +}} + +{{Medical resources + | DiseasesDB = 31623 + | ICD10 = {{ICD10|M|70||m|70}}–{{ICD10|M|71||m|70}} + | ICD9 = {{ICD9|727.3}} + | ICDO = + | OMIM = + | MedlinePlus = 000419 + | eMedicineSubj = emerg + | eMedicineTopic = 74 + | MeshID = D002062 + }} +'''Bursitis''' is the [[inflammation]] of one or ` +let doc = wtf(str) +console.log(doc.infoboxes(`Infobox medical condition (new)`)) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index 23b30796..449f0b5d 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -628,7 +628,7 @@ class Document { * @returns {Infobox | Infobox[]} the selected infobox or an array of infoboxes */ infoboxes(clue) { - let arr = sectionMap(this, 'infoboxes') + let arr = sectionMap(this, 'infoboxes', clue) //sort them by biggest-first arr = arr.sort((a, b) => { if (Object.keys(a.data).length > Object.keys(b.data).length) { diff --git a/src/01-document/_sectionMap.js b/src/01-document/_sectionMap.js index 9661c9ad..dae809aa 100644 --- a/src/01-document/_sectionMap.js +++ b/src/01-document/_sectionMap.js @@ -1,6 +1,5 @@ const Document = require('./Document') - /** * helper for looping around all sections of a document * diff --git a/src/02-section/Section.js b/src/02-section/Section.js index fa82350a..897b063b 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -200,11 +200,11 @@ class Section { } /** - * returns all infoboxes in the section - * if an clue is provided then it returns the infobox at clue-th index + * returns all tables in the section + * if an clue is provided then it returns the table at clue-th index * - * @param {number} [clue] the clue for selecting the infobox - * @returns {Infobox | Infobox[]} all infoboxes in an array or the clue-th infobox + * @param {number} [clue] the clue for selecting the table + * @returns {Table | Tables[]} all tables in an array or the clue-th infobox */ tables(clue) { let arr = this._tables || [] @@ -242,13 +242,17 @@ class Section { * returns all infoboxes in the section * if an clue is provided then it returns the infobox at clue-th index * - * @param {number} [clue] the clue for selecting the infobox + * @param {number|string} [clue] the clue for selecting the infobox * @returns {Infobox | Infobox[]} all infoboxes in an array or the clue-th infobox */ infoboxes(clue) { let arr = this._infoboxes || [] if (typeof clue === 'number') { return arr[clue] + } else if (typeof clue === 'string') { + clue = clue.replace(/^infobox /i, '') + clue = clue.trim().toLowerCase() + return arr.filter((info) => info._type === clue) } return arr } From 954117c264e3ff49ac3474a5e67a16341e45d547 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 12:44:00 -0500 Subject: [PATCH 029/117] refactor plural methods to always return an array even with a clue param --- changelog.md | 8 +- package.json | 2 +- plugins/api/tests/constructor.test.js | 2 +- plugins/person/src/getSentence.js | 2 +- scratch.js | 45 +--- scripts/test.js | 2 +- src/01-document/Document.js | 354 ++++++-------------------- src/01-document/disambig.js | 8 +- src/02-section/Section.js | 49 ++-- tests/Document.test.js | 10 +- tests/api.test.js | 14 +- tests/templates-data.test.js | 18 +- ts-doc-config.json | 21 -- 13 files changed, 133 insertions(+), 402 deletions(-) delete mode 100644 ts-doc-config.json diff --git a/changelog.md b/changelog.md index 69dd722e..cfa75209 100644 --- a/changelog.md +++ b/changelog.md @@ -1,8 +1,10 @@ #### 8.5.1 diff --git a/package.json b/package.json index 3ebb4bb0..5a2f3272 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "testDoc": "nyc -r lcov -n 'src/02-section/*' tape tests/Document.test.js", "test": "cross-env TESTENV=dev && node ./scripts/test.js", "test:fetch": "cross-env TESTENV=dev && tape ./tests/fetch/*.test.js | tap-dancer", - "test:spec": "cross-env TESTENV=dev && tape ./tests/fetch/*.test.js | tap-spec", + "test:spec": "cross-env TESTENV=dev && tape ./tests/**/*.test.js | tap-spec", "test:types": "ts-node ./tests/types/index.ts", "testb": "cross-env TESTENV=prod && node ./scripts/test.js", "watch": "amble ./scratch.js" diff --git a/plugins/api/tests/constructor.test.js b/plugins/api/tests/constructor.test.js index e25012b5..1f6eb895 100644 --- a/plugins/api/tests/constructor.test.js +++ b/plugins/api/tests/constructor.test.js @@ -38,7 +38,7 @@ test('fetchList', (t) => { let arr = ['Marina Gilardoni', 'Jessica Kilian', 'Tanja Morel'] wtf.fetchList(arr, opts).then(function (docs) { docs.forEach((doc) => { - t.ok(doc.sentences(0).text(), `got ${doc.title()}`) + t.ok(doc.sentence().text(), `got ${doc.title()}`) }) }) }) diff --git a/plugins/person/src/getSentence.js b/plugins/person/src/getSentence.js index f479cf6c..3a7a0590 100644 --- a/plugins/person/src/getSentence.js +++ b/plugins/person/src/getSentence.js @@ -1,7 +1,7 @@ const spacetime = require('spacetime') const parseSentence = function (doc) { - let s = doc.sentences(0) + let s = doc.sentence() if (!s) { return null } diff --git a/scratch.js b/scratch.js index e7fd7bff..46dfbbf0 100644 --- a/scratch.js +++ b/scratch.js @@ -1,8 +1,6 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/api/src')) -const template = 'Template:Infobox medical condition (new)' - // const getAll = async function (tmpl) { // let pages = await wtf.getTemplatePages(tmpl) // return pages.map((o) => o.title) @@ -12,42 +10,11 @@ const template = 'Template:Infobox medical condition (new)' // console.log(JSON.stringify(arr, null, 2)) // }) -let str = `{{short description|Human disease}} -{{Infobox medical condition (new) -| name = Bursitis -| synonyms = -| image = Bursitis_Elbow_WC.JPG -| caption = Example of [[olecranon bursitis]] -| pronounce = -| field = [[Orthopedics]] -|| symptoms = -| complications = -| onset = -| duration = -| types = -| causes = -| risks = -| diagnosis = -| differential = -| prevention = -| treatment = -| medication = -| prognosis = -| frequency = -| deaths = -}} +let str = ` +Born in [[Basra]], he spent most of his productive period in the [[Fatimid Caliphate|Fatimid]] capital of [[Cairo]] and earned his living authoring various treatises and tutoring members of the nobilities.According to [[Al-Qifti]]. {{Harvnb|O'Connor|Robertson|1999}}. -{{Medical resources - | DiseasesDB = 31623 - | ICD10 = {{ICD10|M|70||m|70}}–{{ICD10|M|71||m|70}} - | ICD9 = {{ICD9|727.3}} - | ICDO = - | OMIM = - | MedlinePlus = 000419 - | eMedicineSubj = emerg - | eMedicineTopic = 74 - | MeshID = D002062 - }} -'''Bursitis''' is the [[inflammation]] of one or ` +Two in [[Basra]], he spent most of his productive period in the [[Fatimid Caliphate|Fatimid]] capital of [[Cairo]] and earned his living authoring various treatises and tutoring members of the nobilities.According to [[Al-Qifti]]. {{Harvnb|O'Connor|Robertson|1999}}. +` let doc = wtf(str) -console.log(doc.infoboxes(`Infobox medical condition (new)`)) +console.log(doc.paragraph(1)) +// console.log(doc.infobox()) diff --git a/scripts/test.js b/scripts/test.js index 5d1d819e..9918050a 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -18,7 +18,7 @@ if (arg) { // run the main tests: let fail = false -let code = sh.exec('tape "./tests/*.test.js" | tap-dancer --color always').code +let code = sh.exec('tape "./tests/*.test.js" | tap-spec --color always').code if (code !== 0) { fail = true } diff --git a/src/01-document/Document.js b/src/01-document/Document.js index 449f0b5d..186fa39f 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -2,10 +2,7 @@ const sectionMap = require('./_sectionMap') const toJSON = require('./toJson') const disambig = require('./disambig') const setDefaults = require('../_lib/setDefaults') -const { isArray } = require('../_lib/helpers') - const Image = require('../image/Image') -const Section = require('../02-section/Section') const redirects = require('./redirects') const preProcess = require('./preProcess') @@ -14,34 +11,12 @@ const parse = { categories: require('./categories'), } -/** - * Call the aliased function with the provided clue. if the clue is unavailable then we use 0 as the clue - * If the return value from the aliased function is an array then we return the 0th element of the array - * - * Do not forget to bind this to have it available in the function - * - * @private - * @param {Function} aliasedFunction The function to be wrapped - * @param {number | string} [clue] The clue for the wrapped function - * @returns {object|string|number} The return value of the wrapped function - */ -function aliasWrapper(aliasedFunction, clue) { - const res = aliasedFunction(clue || 0) - if (isArray(res)) { - return res[0] - } - return res -} - const defaults = { tables: true, lists: true, paragraphs: true, } -/*** - * @class - */ class Document { /** * The constructor for the document class @@ -52,24 +27,33 @@ class Document { */ constructor(wiki, options) { options = options || {} - this._title = options.title || null - this._pageID = options.pageID || options.id || null - this._namespace = options.namespace || options.ns || null - this._lang = options.lang || options.language || null - this._domain = options.domain || null - this._type = 'page' - this._redirectTo = null - this._wikidata = options.wikidata || null - this._wiki = wiki || '' - this._categories = [] - this._sections = [] - this._coordinates = [] + + let props = { + pageID: options.pageID || options.id || null, + namespace: options.namespace || options.ns || null, + lang: options.lang || options.language || null, + domain: options.domain || null, + type: 'page', + redirectTo: null, + wikidata: options.wikidata || null, + wiki: wiki || '', + categories: [], + sections: [], + coordinates: [], + } + + Object.keys(props).forEach((k) => { + Object.defineProperty(this, '_' + k, { + enumerable: false, + writable: true, + value: props[k], + }) + }) //detect if page is just redirect, and return it if (redirects.isRedirect(this._wiki) === true) { this._type = 'redirect' this._redirectTo = redirects.parse(this._wiki) - const [categories, newWiki] = parse.categories(this._wiki) this._categories = categories this._wiki = newWiki @@ -110,7 +94,7 @@ class Document { } //guess the title of this page from first sentence bolding let guess = null - let sen = this.sentences(0) + let sen = this.sentences()[0] if (sen) { guess = sen.bolds(0) } @@ -128,7 +112,7 @@ class Document { if (id !== undefined) { this._pageID = id } - return this._pageID + return this._pageID || null } /** @@ -142,7 +126,7 @@ class Document { if (id !== undefined) { this._wikidata = id } - return this._wikidata + return this._wikidata || null } /** @@ -156,7 +140,7 @@ class Document { if (str !== undefined) { this._domain = str } - return this._domain + return this._domain || null } /** @@ -170,18 +154,7 @@ class Document { if (lang !== undefined) { this._lang = lang } - return this._lang - } - - /** - * If an language is given then it sets the language and returns the given language - * Else if the language is already set it returns the language - * - * @param {string} [lang] The language that will be set - * @returns {string|null} The given or found language - */ - lang(lang) { - return this.language(lang) + return this._lang || null } /** @@ -215,18 +188,7 @@ class Document { if (ns !== undefined) { this._namespace = ns } - return this._namespace - } - - /** - * If an namespace is given then it sets the namespace and returns the given namespace - * Else if the namespace is already set it returns the namespace - * - * @param {string} [ns] The namespace that will be set - * @returns {string|null} The given or found namespace - */ - ns(ns) { - return this.namespace(ns) + return this._namespace || null } /** @@ -247,33 +209,6 @@ class Document { return this._redirectTo } - /** - * Returns information about the page this page redirects to - * - * @returns {null|object} The redirected page - */ - redirectsTo() { - return this.redirectTo() - } - - /** - * Returns information about the page this page redirects to - * - * @returns {null|object} The redirected page - */ - redirect() { - return this.redirectTo() - } - - /** - * Returns information about the page this page redirects to - * - * @returns {null|object} The redirected page - */ - redirects() { - return this.redirectTo() - } - /** * This function finds out if a page is a disambiguation page * @@ -283,15 +218,6 @@ class Document { return disambig(this) } - /** - * This function finds out if a page is a disambiguation page - * - * @returns {boolean} Whether the page is a disambiguation page - */ - isDisambig() { - return this.isDisambiguation() - } - /** * If a clue is available return the category at that index * Else return all categories @@ -300,22 +226,9 @@ class Document { * @returns {string | string[]} The category at the provided index or all categories */ categories(clue) { - if (typeof clue === 'number') { - return this._categories[clue] - } return this._categories || [] } - /** - * Returns the 0th or clue-th category - * - * @param {number} [clue] The index of the wanted category - * @returns {object|string|number} The category at the provided index - */ - category(clue) { - return aliasWrapper(this.categories.bind(this), clue) - } - /** * returns the sections of the document * @@ -324,37 +237,25 @@ class Document { * Else it returns all the sections * * @param {number | string} [clue] A title of a section or a index of a wanted section - * @returns {Section | Section[]} A section or a array of sections + * @returns {object | object[]} A section or a array of sections */ sections(clue) { let arr = this._sections || [] - arr.forEach((sec) => (sec._doc = this)) + arr.forEach((sec) => { + // link-up parent and child + sec._doc = this + }) //grab a specific section, by its title if (typeof clue === 'string') { let str = clue.toLowerCase().trim() - return arr.find((s) => { + return arr.filter((s) => { return s.title().toLowerCase() === str }) } - - if (typeof clue === 'number') { - return arr[clue] - } - return arr } - /** - * Returns the 0th or clue-th category - * - * @param {number} [clue] The index of the wanted section - * @returns {Section} The section at the provided index - */ - section(clue) { - return aliasWrapper(this.sections.bind(this), clue) - } - /** * Returns the paragraphs in the document * @@ -362,61 +263,31 @@ class Document { * Else it returns all paragraphs in an array * * @param {number} [clue] The index of the to be selected paragraph - * @returns {Paragraph | Paragraph[]} the selected paragraph or an array of all paragraphs + * @returns {object | object[]} the selected paragraph or an array of all paragraphs */ paragraphs(clue) { let arr = [] this.sections().forEach((s) => { arr = arr.concat(s.paragraphs()) }) - if (typeof clue === 'number') { - return arr[clue] - } return arr } - /** - * returns the first or the clue-th paragraph - * - * @param {number} [clue] the index of the paragraph - * @returns {Paragraph} The selected paragraph - */ - paragraph(clue) { - let arr = this.paragraphs() || [] - if (typeof clue === 'number') { - return arr[clue] - } - return arr[0] - } - /** * if no clue is provided, it compiles an array of sentences in the wiki text. * if the clue is provided it return the sentence at the provided index * * @param {number} clue the index of the wanted sentence - * @returns {Sentence[]|Sentence} an array of sentences or a single sentence + * @returns {object[]|object} an array of sentences or a single sentence */ sentences(clue) { let arr = [] this.sections().forEach((sec) => { arr = arr.concat(sec.sentences()) }) - if (typeof clue === 'number') { - return arr[clue] - } return arr } - /** - * Returns the 0th or clue-th sentence - * - * @param {number} [clue] The index of the wanted sentence - * @returns {Sentence} The sentence at the provided index - */ - sentence(clue) { - return aliasWrapper(this.sentences.bind(this), clue) - } - /** * This function search the whole page, including the infobox and image gallery templates for images * and then returns them in an array if no clue is provided. @@ -448,22 +319,9 @@ class Document { }) } }) - if (typeof clue === 'number') { - return arr[clue] - } return arr } - /** - * Returns the 0th or clue-th image - * - * @param {number} [clue] The index of the wanted image - * @returns {Image} The image at the provided index - */ - image(clue) { - return aliasWrapper(this.images.bind(this), clue) - } - /** * Return all links or if a clue is provided only the link at that index * @@ -474,16 +332,6 @@ class Document { return sectionMap(this, 'links', clue) } - /** - * Returns the 0th or clue-th link - * - * @param {number} [clue] The index of the wanted link - * @returns {object|string|number} The link at the provided index - */ - link(clue) { - return aliasWrapper(this.links.bind(this), clue) - } - /** * Return all inter wiki links or if a clue is provided only the inter wiki link at that index * @@ -499,85 +347,45 @@ class Document { * Else return all lists * * @param {number} [clue] The index of the wanted list - * @returns {List | List[]} The list at the provided index or all lists + * @returns {object | object[]} The list at the provided index or all lists */ lists(clue) { return sectionMap(this, 'lists', clue) } - /** - * Returns the 0th or clue-th list - * - * @param {number} [clue] The index of the wanted list - * @returns {object|string|number} The list at the provided index - */ - list(clue) { - return aliasWrapper(this.lists.bind(this), clue) - } - /** * If a clue is available return the tables at that index * Else return all tables * * @param {number} [clue] The index of the wanted table - * @returns {Table | Tables[]} The table at the provided index or all tables + * @returns {object | object[]} The table at the provided index or all tables */ tables(clue) { return sectionMap(this, 'tables', clue) } - /** - * Returns the 0th or clue-th table - * - * @param {number} [clue] The index of the wanted table - * @returns {object|string|number} The table at the provided index - */ - table(clue) { - return aliasWrapper(this.tables.bind(this), clue) - } - /** * If a clue is available return the template at that index * Else return all templates * * @param {number} [clue] The index of the wanted template - * @returns {Template | Template[]} The category at the provided index or all categories + * @returns {object | object[]} The category at the provided index or all categories */ templates(clue) { return sectionMap(this, 'templates', clue) } - /** - * Returns the 0th or clue-th template - * - * @param {number} [clue] The index of the wanted template - * @returns {object|string|number} The template at the provided index - */ - template(clue) { - return aliasWrapper(this.templates.bind(this), clue) - } - /** * If a clue is available return the references at that index * Else return all references * * @param {number} [clue] The index of the wanted references - * @returns {Reference | Reference[]} The category at the provided index or all references + * @returns {object | object[]} The category at the provided index or all references */ references(clue) { return sectionMap(this, 'references', clue) } - /** - * Returns the 0th or clue-th reference - * - * @param {number} [clue] The index of the wanted reference - * @returns {object|string|number} The reference at the provided index - */ - reference(clue) { - return aliasWrapper(this.references.bind(this), clue) - } - /** * Returns the 0th or clue-th reference * @@ -588,16 +396,6 @@ class Document { return this.references(clue) } - /** - * Returns the 0th or clue-th citation - * - * @param {number} [clue] The index of the wanted citation - * @returns {object|string|number} The citation at the provided index - */ - citation(clue) { - return aliasWrapper(this.references.bind(this), clue) - } - /** * finds and returns all coordinates * or if an clue is given, the coordinate at the index @@ -609,23 +407,13 @@ class Document { return sectionMap(this, 'coordinates', clue) } - /** - * Returns the 0th or clue-th coordinate - * - * @param {number} [clue] The index of the wanted coordinate - * @returns {object|string|number} The coordinate at the provided index - */ - coordinate(clue) { - return aliasWrapper(this.coordinates.bind(this), clue) - } - /** * If clue is unidentified then it returns all infoboxes * If clue is a number then it returns the infobox at that index * It always sorts the infoboxes by size * * @param {number} [clue] the index of the infobox you want to select - * @returns {Infobox | Infobox[]} the selected infobox or an array of infoboxes + * @returns {object | object[]} the selected infobox or an array of infoboxes */ infoboxes(clue) { let arr = sectionMap(this, 'infoboxes', clue) @@ -636,20 +424,8 @@ class Document { } return 1 }) - if (typeof clue === 'number') { - return arr[clue] - } - return arr - } - /** - * Returns the 0th or clue-th infobox - * - * @param {number} [clue] The index of the wanted infobox - * @returns {object|string|number} The infobox at the provided index - */ - infobox(clue) { - return aliasWrapper(this.infoboxes.bind(this), clue) + return arr } /** @@ -668,16 +444,6 @@ class Document { return arr.join('\n\n') } - /** - * return a plain text version of the wiki article - * - * @param {object} [options] the options for the parser - * @returns {string} the plain text version of the article - */ - plaintext(options) { - return this.text(options) - } - /** * return a json version of the Document class * @@ -707,4 +473,40 @@ class Document { } } +// aliases +const singular = { + categories: 'category', + sections: 'section', + paragraphs: 'paragraph', + sentences: 'sentence', + images: 'image', + links: 'link', + // interwiki + lists: 'list', + tables: 'table', + templates: 'template', + references: 'reference', + citations: 'citation', + coordinates: 'coordinate', + infoboxes: 'infobox', +} +Object.keys(singular).forEach((k) => { + let sing = singular[k] + Document.prototype[sing] = function (clue) { + let arr = this[k](clue) + if (typeof clue === 'number') { + return arr[clue] + } + return arr[0] + } +}) +Document.prototype.lang = Document.prototype.language +Document.prototype.ns = Document.prototype.namespace +Document.prototype.plaintext = Document.prototype.text +Document.prototype.isDisambig = Document.prototype.isDisambiguation +Document.prototype.citations = Document.prototype.references +Document.prototype.redirectsTo = Document.prototype.redirectTo +Document.prototype.redirect = Document.prototype.redirectTo +Document.prototype.redirects = Document.prototype.redirectTo + module.exports = Document diff --git a/src/01-document/disambig.js b/src/01-document/disambig.js index df56630f..00e78a12 100644 --- a/src/01-document/disambig.js +++ b/src/01-document/disambig.js @@ -1,6 +1,3 @@ -const Document = require('./Document') - - const i18n = require('../_data/disambig').reduce((h, str) => { h[str] = true return h @@ -67,8 +64,9 @@ const isDisambig = function (doc) { return true } //try 'may refer to' on first line for en-wiki? - if (doc.sentences(0)) { - let firstLine = doc.sentences(0).text() + let s = doc.sentences()[0] + if (s) { + let firstLine = s.text() if (firstLine !== null && firstLine[0]) { if (/. may refer to ./i.test(firstLine) === true) { return true diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 897b063b..7a756a66 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -1,5 +1,3 @@ -//@ts-expect-error because this is some kind of type definition for jsdoc that's why typescript does not recognize it -const Document = require('../01-document/Document') const toJSON = require('./toJson') const setDefaults = require('../_lib/setDefaults') @@ -34,9 +32,9 @@ class Section { /** * * @private - * @type {Document|null} + * @type {Document} */ - this._doc = doc || null + this._doc = doc this._title = data.title || '' this._depth = data.depth @@ -114,7 +112,7 @@ class Section { * if an clue is provided then it returns the sentence at clue-th index * * @param {number} [clue] the clue for selecting the sentence - * @returns {Sentence | Sentence[]} all sentences in an array or the clue-th sentence + * @returns {object | object[]} all sentences in an array or the clue-th sentence */ sentences(clue) { let arr = this.paragraphs().reduce((list, p) => { @@ -131,7 +129,7 @@ class Section { * if an clue is provided then it returns the paragraph at clue-th index * * @param {number} [clue] the clue for selecting the paragraph - * @returns {Paragraph | Paragraph[]} all paragraphs in an array or the clue-th paragraph + * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph */ paragraphs(clue) { let arr = this._paragraphs || [] @@ -146,7 +144,7 @@ class Section { * if an clue is provided then it returns the paragraph at clue-th index * * @param {number} [clue] the clue for selecting the paragraph - * @returns {Paragraph | Paragraph[]} all paragraphs in an array or the clue-th paragraph + * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph */ paragraph(clue) { let arr = this._paragraphs || [] @@ -162,7 +160,7 @@ class Section { * if an clue is provided and it is a string then it returns the link at the that content * * @param {number| string} [clue] the clue for selecting the link - * @returns {Link | Link[]} all links in an array or the clue-th link or the link with the content of clue + * @returns {object | object[]} all links in an array or the clue-th link or the link with the content of clue */ links(clue) { let arr = [] @@ -204,7 +202,7 @@ class Section { * if an clue is provided then it returns the table at clue-th index * * @param {number} [clue] the clue for selecting the table - * @returns {Table | Tables[]} all tables in an array or the clue-th infobox + * @returns {object | object[]} all tables in an array or the clue-th infobox */ tables(clue) { let arr = this._tables || [] @@ -220,7 +218,7 @@ class Section { * if an clue is provided and clue is a string then it returns all template with that name * * @param {number|string} [clue] the clue for selecting the template - * @returns {Template | Template[]} all templates in an array or the clue-th template or all template name `clue` + * @returns {object | object[]} all templates in an array or the clue-th template or all template name `clue` */ templates(clue) { let arr = this._templates || [] @@ -243,7 +241,7 @@ class Section { * if an clue is provided then it returns the infobox at clue-th index * * @param {number|string} [clue] the clue for selecting the infobox - * @returns {Infobox | Infobox[]} all infoboxes in an array or the clue-th infobox + * @returns {object | object[]} all infoboxes in an array or the clue-th infobox */ infoboxes(clue) { let arr = this._infoboxes || [] @@ -262,7 +260,7 @@ class Section { * if an clue is provided then it returns the list at clue-th index * * @param {number} [clue] the clue for selecting the list - * @returns {Link | Link[]} all lists in an array or the clue-th list + * @returns {object | object[]} all lists in an array or the clue-th list */ coordinates(clue) { let arr = [...this.templates('coord'), ...this.templates('coor')] @@ -280,7 +278,7 @@ class Section { * if an clue is provided then it returns the list at clue-th index * * @param {number} [clue] the clue for selecting the list - * @returns {Link | Link[]} all lists in an array or the clue-th list + * @returns {object | object[]} all lists in an array or the clue-th list */ lists(clue) { let arr = [] @@ -298,7 +296,7 @@ class Section { * if an clue is provided then it returns the interwiki link at clue-th index * * @param {number} [clue] the clue for selecting the interwiki link - * @returns {Link | Link[]} all interwiki links in an array or the clue-th interwiki link + * @returns {object | object[]} all interwiki links in an array or the clue-th interwiki link */ interwiki(clue) { let arr = [] @@ -334,7 +332,7 @@ class Section { * if an clue is provided then it returns the reference at clue-th index * * @param {number} [clue] the clue for selecting the reference - * @returns {Reference | Reference[]} all references in an array or the clue-th reference + * @returns {object | object[]} all references in an array or the clue-th reference */ references(clue) { let arr = this._references || [] @@ -349,7 +347,7 @@ class Section { * if an clue is provided then it returns the reference at clue-th index * * @param {number} [clue] the clue for selecting the reference - * @returns {Reference | Reference[]} all references in an array or the clue-th reference + * @returns {object | object[]} all references in an array or the clue-th reference */ citations(clue) { return this.references(clue) @@ -546,7 +544,7 @@ class Section { /** * returns a plaintext version of the section * - * @param options options for the text transformation + * @param {object} options options for the text transformation * @returns {string} the section in text */ text(options) { @@ -560,28 +558,13 @@ class Section { /** * returns a json version of the section * - * @param {sectionToJsonOptions} options keys to include in the resulting json + * @param {object} options keys to include in the resulting json * @returns {object} the section in json */ json(options) { options = setDefaults(options, defaults) return toJSON(this, options) } - - /** - * this function removes the circular nature of including the document in the sections - * - * @private - * @returns {object} the section without this._doc - */ - // toJSON() { - // return Object.entries(this) - // .filter((entry) => entry[0] !== '_doc') - // .reduce((accum, [k, v]) => { - // accum[k] = v - // return accum - // }, {}) - // } } module.exports = Section diff --git a/tests/Document.test.js b/tests/Document.test.js index a95a1c8b..07a53b88 100644 --- a/tests/Document.test.js +++ b/tests/Document.test.js @@ -396,7 +396,7 @@ test('sections - get - if the clue is a number return the sections in that index let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(doc.sections(1).text().length, 401, 'the section at index 1') + t.equal(doc.section(1).text().length, 401, 'the section at index 1') t.end() }) @@ -404,7 +404,7 @@ test('sections - get - if the clue is a string return the sections of that title let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(doc.sections('Career').text().length, 401, 'the section with the title "Career"') + t.equal(doc.section('Career').text().length, 401, 'the section with the title "Career"') t.end() }) @@ -412,7 +412,7 @@ test('sections - get - if the clue is a string return the sections of that title let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(doc.sections('CAREER').text().length, 401, 'the section with the title "Career"') + t.equal(doc.section('CAREER').text().length, 401, 'the section with the title "Career"') t.end() }) @@ -449,7 +449,7 @@ test('paragraphs - get - if the clue is a number return the paragraph at that in let doc = wtf(str) //I used the length of the paragraphs as an analogue for the content. - t.equal(JSON.stringify(doc.paragraphs(1).text().length), '66', 'the paragraph at index 1') + t.equal(JSON.stringify(doc.paragraph(1).text().length), '66', 'the paragraph at index 1') t.end() }) @@ -461,7 +461,7 @@ test('paragraphs - get - if the clue is a string (not number) return all the par const expected = [804, 66, 567, 474, 169, 159, 136, 167, 137, 451, 44, 17] t.deepEqual( - doc.paragraphs('string').map((p) => p.text().length), + doc.paragraph('string').map((p) => p.text().length), expected, 'the paragraphs in the wiki text' ) diff --git a/tests/api.test.js b/tests/api.test.js index 147ff141..50598960 100644 --- a/tests/api.test.js +++ b/tests/api.test.js @@ -37,7 +37,7 @@ test('Document-methods-do-not-throw', (t) => { test('Section-methods-do-not-throw', (t) => { pages.forEach((page) => { const doc = wtf(readFile(page)) - const sec = doc.sections(0) + const sec = doc.section() docs.Section.forEach((obj) => { const desc = obj.name + ' - ' + page sec[obj.name]() @@ -50,7 +50,7 @@ test('Section-methods-do-not-throw', (t) => { test('Sentence-methods-do-not-throw', (t) => { pages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.sentences(0) + const sen = doc.sentence() docs.Sentence.forEach((obj) => { const desc = obj.name + ' - ' + page sen[obj.name]() @@ -63,7 +63,7 @@ test('Sentence-methods-do-not-throw', (t) => { test('Reference-methods-do-not-throw', (t) => { pages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.references(0) + const sen = doc.reference() docs.Reference.forEach((obj) => { const desc = obj.name + ' - ' + page sen[obj.name]() @@ -76,7 +76,7 @@ test('Reference-methods-do-not-throw', (t) => { test('Image-methods-do-not-throw', (t) => { pages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.images(0) + const sen = doc.image() docs.Image.forEach((obj) => { const desc = obj.name + ' - ' + page sen[obj.name]() @@ -99,7 +99,7 @@ test('Infobox-methods-do-not-throw', (t) => { ] mypages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.infoboxes(0) + const sen = doc.infobox() docs.Infobox.forEach((obj) => { const desc = obj.name + ' - ' + page sen[obj.name]() @@ -113,7 +113,7 @@ test('List-methods-do-not-throw', (t) => { const mypages = ['al_Haytham', 'Mozilla-Firefox', 'toronto', 'toronto_star', 'jodie_emery', 'Allen-R.-Morris'] mypages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.lists(0) + const sen = doc.list() docs.List.forEach((obj) => { const desc = obj.name + ' - ' + page sen[obj.name]() @@ -127,7 +127,7 @@ test('Table-methods-do-not-throw', (t) => { const mypages = ['Mozilla-Firefox', 'toronto', 'Allen-R.-Morris', 'bluejays'] mypages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.tables(0) + const sen = doc.table() docs.Table.forEach((obj) => { const desc = obj.name + ' - ' + page sen[obj.name]() diff --git a/tests/templates-data.test.js b/tests/templates-data.test.js index f0cdcb57..16a124b5 100644 --- a/tests/templates-data.test.js +++ b/tests/templates-data.test.js @@ -28,7 +28,7 @@ test('external-links', function (t) { arr.forEach((a) => { const doc = wtf(a[1]) t.equal(doc.templates().length, 1, a[0] + ' count') - const tmpl = doc.templates(0) || {} + const tmpl = doc.template() || {} t.equal(tmpl.template, a[0], a[1] + ' name') }) t.end() @@ -117,7 +117,7 @@ test('wikipedia-templates', function (t) { arr.forEach((a) => { const doc = wtf(a[1]) t.equal(doc.templates().length, 1, a[0] + ' count') - const tmpl = doc.templates(0) || {} + const tmpl = doc.template() || {} t.equal(tmpl.template, a[0], a[0] + ' name') }) t.end() @@ -144,7 +144,7 @@ test('weather', function (t) { |Dec high C = -0.8 |source 1=[[Environment Canada]] }}` - let arr = wtf(str).templates(0).byMonth['high c'] + let arr = wtf(str).template().byMonth['high c'] t.equal(arr.length, 12, 'got twelve months') t.equal(arr[1], 0.7, 'got february') @@ -153,7 +153,7 @@ test('weather', function (t) { | 18.4|19.9|22.3|23.7|27.5|31.3|36.8|36.5|32.5|27.5|22.2|18.7 | 5.9 |7.6 |9.4 |11.0|13.8|16.3|19.9|20.1|18.2|14.7|10.4|6.5 }}` - arr = wtf(str).templates(0).byMonth['high c'] + arr = wtf(str).template().byMonth['high c'] t.equal(arr.length, 12, 'got twelve months concise') t.equal(arr[1], 19.9, 'got february') t.end() @@ -184,7 +184,7 @@ test('election', function (t) { world` const doc = wtf(str) t.equal(doc.templates().length, 1, 'found one template') - const tmpl = doc.templates(0) || {} + const tmpl = doc.template() || {} t.equal(tmpl.template, 'election box', 'template name') t.equal(tmpl.candidates.length, 2, 'two candidates') t.end() @@ -192,7 +192,7 @@ test('election', function (t) { test('test-flexible-format', function (t) { let doc = wtf(`hello {{Hollywood Walk of Fame|Alan Alda}} world`) - let tmpl = doc.templates(0) || {} + let tmpl = doc.template() || {} t.equal(tmpl.template, 'hollywood walk of fame', 'template1') t.equal(tmpl.name, 'Alan Alda', 'name1') t.equal(doc.text(), 'hello world', 'text1') @@ -200,7 +200,7 @@ test('test-flexible-format', function (t) { //other format doc = wtf(`hello {{Hollywood Walk of Fame|name = Alan Alda}} world`) - tmpl = doc.templates(0) || {} + tmpl = doc.template() || {} t.equal(tmpl.template, 'hollywood walk of fame', 'template2') t.equal(tmpl.name, 'Alan Alda', 'name2') t.equal(doc.text(), 'hello world', 'text2') @@ -228,7 +228,7 @@ test('covid-1', function (t) { }} ` let doc = wtf(str) - let obj = doc.templates(0) + let obj = doc.template() t.equal(obj.location, 'Savannah', 'location') t.equal(obj.data.length, 5, '5 rows') t.equal(obj.data[0].date, '2009-04-13', 'row[0]') @@ -265,7 +265,7 @@ test('playoff-brackets', function (t) { | RD2-score2 = '''218/8 (48.5 overs)''' }}` let doc = wtf(str) - let rounds = doc.templates(0).rounds + let rounds = doc.template().rounds t.equal(rounds.length, 2, 'two rounds') let final = rounds[1][0] t.equal(final[0].score, '217 (49.4 overs)', 'got score') diff --git a/ts-doc-config.json b/ts-doc-config.json deleted file mode 100644 index 5bb4900d..00000000 --- a/ts-doc-config.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "recurseDepth": 10, - "source": { - "includePattern": ".+\\.js(doc|x)?$" - }, - "sourceType": "module", - "tags": { - "allowUnknownTags": true, - "dictionaries": [ "jsdoc", "closure" ] - }, - "templates": { - "cleverLinks": false, - "monospaceLinks": false - }, - "plugins": [ "./node_modules/tsd-jsdoc/dist/plugin" ], - "opts": { - "template": "./node_modules/tsd-jsdoc/dist", - "recurse": true, - "destination": "./builds/" - } -} From 3649c3cdd2fd15201fee73076c5d6aa7930f32b1 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 12:56:23 -0500 Subject: [PATCH 030/117] move json test to own file --- scratch.js | 27 +- src/01-document/_sectionMap.js | 3 - tests/Document.test.js | 836 --------------------------------- tests/json-full.test.js | 719 ++++++++++++++++++++++++++++ tests/json.test.js | 2 +- 5 files changed, 742 insertions(+), 845 deletions(-) create mode 100644 tests/json-full.test.js diff --git a/scratch.js b/scratch.js index 46dfbbf0..718cf982 100644 --- a/scratch.js +++ b/scratch.js @@ -10,11 +10,28 @@ wtf.extend(require('./plugins/api/src')) // console.log(JSON.stringify(arr, null, 2)) // }) -let str = ` -Born in [[Basra]], he spent most of his productive period in the [[Fatimid Caliphate|Fatimid]] capital of [[Cairo]] and earned his living authoring various treatises and tutoring members of the nobilities.According to [[Al-Qifti]]. {{Harvnb|O'Connor|Robertson|1999}}. +let str = `{{redirect|Alhazen}} +{{bots|deny=Citation bot}} +{{Infobox scientist +| name = Hasan Ibn al-Haytham
(Alhazen) +|image = +|caption = +| birth_date = {{nowrap |{{birth-date|0965|{{circa}} 965}} {{smaller|(c. 354 [[Islamic calendar|AH]]){{Harvnb|Falco|2007}}.}} }} +| birth_place = [[Basra]], [[medieval Iraq|Iraq]] +| death_date = {{nowrap |{{death-date|1040|{{circa}} 1040}} {{smaller|(c. 430 AH){{Harvnb|Rosenthal|1960–1961}}.}} }} +| death_place = [[Cairo]], [[Fatimid Caliphate|Egypt]] +| residence = {{hlist |[[Basra]] |[[Cairo]]}} +| fields = {{hlist |[[Optics]] |[[Astronomy]] |[[Mathematics]]}} +| workplaces = +|alma_mater = +|notable_students = +| influences = [[Aristotle]], [[Euclid]], [[Ptolemy]], [[Galen]], [[Banū Mūsā]], [[Thābit ibn Qurra]], [[Al-Kindi]], [[Ibn Sahl (mathematician)|Ibn Sahl]], [[Abū Sahl al-Qūhī]] +| influenced = [[Omar Khayyam]], [[Taqi ad-Din Muhammad ibn Ma'ruf]], [[Kamāl al-Dīn al-Fārisī]], [[Averroes]], [[Al-Khazini]], [[John Peckham]], [[Witelo]], [[Roger Bacon]],{{Cite book|url=https://books.google.co.in/books?id=mhLVHR5QAQkC&printsec=frontcover#v=onepage&q&f=false|title=Ptolemy's Theory of Visual Perception: An English Translation of the Optics|last=A. Mark Smith|publisher=American Philosophical Society|year=1996|isbn=|location=|pages=58}} [[Kepler]] +| known_for = ''[[Book of Optics]]'', ''[[Ibn al-Haytham#Doubts Concerning Ptolemy|Doubts Concerning Ptolemy]]'', [[Alhazen's problem]], [[Analysis]],{{Harvnb|O'Connor|Robertson|1999}}. [[Catoptrics]],{{Harvnb|El-Bizri|2010|p=11}}: "Ibn al-Haytham's groundbreaking studies in optics, including his research in catoptrics and dioptrics (respectively the sciences investigating the principles and instruments pertaining to the reflection and refraction of light), were principally gathered in his monumental opus: Kitåb al-manåóir (The Optics; De Aspectibus or Perspectivae; composed between 1028 CE and 1038 CE)." [[Horopter]], [[Moon illusion]], [[Experiment|experimental science]], [[scientific method]]ology,{{Harvnb|Rooney|2012|p=39}}: "As a rigorous experimental physicist, he is sometimes credited with inventing the scientific method." [[visual perception]], [[empirical theory of perception]], [[Comparative psychology|Animal psychology]]{{Harvnb|Baker|2012|p=449}}: "As shown earlier, Ibn al-Haytham was among the first scholars to experiment with animal psychology. +| footnotes = +}} -Two in [[Basra]], he spent most of his productive period in the [[Fatimid Caliphate|Fatimid]] capital of [[Cairo]] and earned his living authoring various treatises and tutoring members of the nobilities.According to [[Al-Qifti]]. {{Harvnb|O'Connor|Robertson|1999}}. +Born in [[Basra]], he spent most of his productive period in the [[Fatimid Caliphate|Fatimid]] capital of [[Cairo]] and earned his living authoring various treatises and tutoring members of the nobilities.According to [[Al-Qifti]]. {{Harvnb|O'Connor|Robertson|1999}}. ` let doc = wtf(str) -console.log(doc.paragraph(1)) -// console.log(doc.infobox()) +console.log(doc.infobox(0)) diff --git a/src/01-document/_sectionMap.js b/src/01-document/_sectionMap.js index dae809aa..9bcf1496 100644 --- a/src/01-document/_sectionMap.js +++ b/src/01-document/_sectionMap.js @@ -22,9 +22,6 @@ const sectionMap = function (doc, fn, clue) { arr.push(t) }) }) - if (typeof clue === 'number') { - return arr[clue] - } return arr } module.exports = sectionMap diff --git a/tests/Document.test.js b/tests/Document.test.js index 07a53b88..1e2b5b58 100644 --- a/tests/Document.test.js +++ b/tests/Document.test.js @@ -381,9 +381,7 @@ test('sections - get - if the sections is in the option. ignore it', (t) => { test('sections - get - if the clue is a undefined / unset return the list of categories', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - const expected = [321, 401, 0] - t.deepEqual( doc.sections().map((s) => s.text().length), expected, @@ -395,7 +393,6 @@ test('sections - get - if the clue is a undefined / unset return the list of cat test('sections - get - if the clue is a number return the sections in that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(doc.section(1).text().length, 401, 'the section at index 1') t.end() }) @@ -403,7 +400,6 @@ test('sections - get - if the clue is a number return the sections in that index test('sections - get - if the clue is a string return the sections of that title', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(doc.section('Career').text().length, 401, 'the section with the title "Career"') t.end() }) @@ -411,7 +407,6 @@ test('sections - get - if the clue is a string return the sections of that title test('sections - get - if the clue is a string return the sections of that title even if the cases dont match', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Charlie-Milstead.txt'), 'utf-8') let doc = wtf(str) - t.equal(doc.section('CAREER').text().length, 401, 'the section with the title "Career"') t.end() }) @@ -432,10 +427,7 @@ test('paragraphs - get - if the paragraphs is in the option. ignore it', (t) => test('paragraphs - get - if the clue is a undefined / unset return the list of paragraphs', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. const expected = [804, 66, 567, 474, 169, 159, 136, 167, 137, 451, 44, 17] - t.deepEqual( doc.paragraphs().map((p) => p.text().length), expected, @@ -447,7 +439,6 @@ test('paragraphs - get - if the clue is a undefined / unset return the list of p test('paragraphs - get - if the clue is a number return the paragraph at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - //I used the length of the paragraphs as an analogue for the content. t.equal(JSON.stringify(doc.paragraph(1).text().length), '66', 'the paragraph at index 1') t.end() @@ -456,10 +447,7 @@ test('paragraphs - get - if the clue is a number return the paragraph at that in test('paragraphs - get - if the clue is a string (not number) return all the paragraphs', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. const expected = [804, 66, 567, 474, 169, 159, 136, 167, 137, 451, 44, 17] - t.deepEqual( doc.paragraph('string').map((p) => p.text().length), expected, @@ -472,8 +460,6 @@ test('paragraphs - get - if the clue is a string (not number) return all the par test('paragraph - get - if the clue is a number return the paragraph at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraph as an analogue for the content. t.equal(JSON.stringify(doc.paragraph(1).text().length), '66', 'the paragraph at index 1') t.end() }) @@ -481,8 +467,6 @@ test('paragraph - get - if the clue is a number return the paragraph at that ind test('paragraph - get - if the clue is unset or undefined return the first paragraph', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraph as an analogue for the content. t.equal(JSON.stringify(doc.paragraph().text().length), '804', 'the paragraph at index 0') t.end() }) @@ -490,8 +474,6 @@ test('paragraph - get - if the clue is unset or undefined return the first parag test('paragraph - get - if the clue is not a number return the first paragraph', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraph as an analogue for the content. t.equal(JSON.stringify(doc.paragraph('string').text().length), '804', 'the paragraph at index 0') t.end() }) @@ -512,8 +494,6 @@ test('sentences - get - if the sentences is in the option. ignore it', (t) => { test('sentences - get - if the clue is a undefined / unset return the list of sentences', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the sentences as an analogue for the content. const expected = [ 90, 77, @@ -551,7 +531,6 @@ test('sentences - get - if the clue is a undefined / unset return the list of se 186, 17, ] - t.deepEqual( doc.sentences().map((p) => p.text().length), expected, @@ -563,8 +542,6 @@ test('sentences - get - if the clue is a undefined / unset return the list of se test('sentences - get - if the clue is a number return the paragraph at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the sentences as an analogue for the content. t.equal(JSON.stringify(doc.sentences(1).text().length), '77', 'the sentences at index 1') t.end() }) @@ -572,8 +549,6 @@ test('sentences - get - if the clue is a number return the paragraph at that ind test('sentences - get - if the clue is a string (not number) return all the sentences', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. const expected = [ 90, 77, @@ -623,8 +598,6 @@ test('sentences - get - if the clue is a string (not number) return all the sent test('sentence - get - should return the first sentence', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(doc.sentence().text().length, 90, 'the first sentence in the wiki text') t.end() }) @@ -645,10 +618,7 @@ test('images - get - if the images is in the option. ignore it', (t) => { test('images - get - if the clue is a undefined / unset return the list of images', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. const expected = [82, 89] - t.deepEqual( doc.images().map((p) => p.url().length), expected, @@ -660,8 +630,6 @@ test('images - get - if the clue is a undefined / unset return the list of image test('images - get - if the clue is a number return the images at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.equal(JSON.stringify(doc.images(1).url().length), '89', 'the images at index 1') t.end() }) @@ -669,10 +637,7 @@ test('images - get - if the clue is a number return the images at that index', ( test('images - get - if the clue is a string (not number) return all the images', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. const expected = [82, 89] - t.deepEqual( doc.images('string').map((p) => p.url().length), expected, @@ -684,10 +649,7 @@ test('images - get - if the clue is a string (not number) return all the images' test('images - get - also get images from galeries', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Goryeo-ware.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. const expected = [137, 67, 137, 222, 120] - t.deepEqual( doc.images('string').map((p) => p.url().length), expected, @@ -700,8 +662,6 @@ test('images - get - also get images from galeries', (t) => { test('image - get - return the first image on the page', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(doc.image().url().length, 82, 'the first image on the page') t.end() }) @@ -710,10 +670,7 @@ test('image - get - return the first image on the page', (t) => { test('links - get - return all links on the page', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - const expected = [41, 71, 82, 94, 38, 40, 110, 40] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.links().map((l) => JSON.stringify(l.json()).length), expected, @@ -725,8 +682,6 @@ test('links - get - return all links on the page', (t) => { test('links - get - if the clue is a number return the link at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(JSON.stringify(doc.links(1).json()).length, 71, 'the link at index 1') t.end() }) @@ -734,8 +689,6 @@ test('links - get - if the clue is a number return the link at that index', (t) test('links - get - if the clue is a string return the link with that content', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( JSON.stringify(doc.links('Jace Rocker')[0].json()).length, 40, @@ -747,10 +700,7 @@ test('links - get - if the clue is a string return the link with that content', test('links - get - if the clue is any other type then return all links', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - const expected = [41, 71, 82, 94, 38, 40, 110, 40] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.links([]).map((l) => JSON.stringify(l.json()).length), expected, @@ -763,10 +713,7 @@ test('links - get - if the clue is any other type then return all links', (t) => test('interwiki - get - return all interwiki on the page', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - const expected = [82, 94] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.interwiki().map((l) => JSON.stringify(l.json()).length), expected, @@ -778,8 +725,6 @@ test('interwiki - get - return all interwiki on the page', (t) => { test('interwiki - get - if the clue is a number return the interwiki at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(JSON.stringify(doc.interwiki(1).json()).length, 94, 'the interwiki at index 1') t.end() }) @@ -787,10 +732,7 @@ test('interwiki - get - if the clue is a number return the interwiki at that ind test('interwiki - get - if the clue is any other type then return all interwiki', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - const expected = [82, 94] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.interwiki([]).map((l) => JSON.stringify(l.json()).length), expected, @@ -803,10 +745,7 @@ test('interwiki - get - if the clue is any other type then return all interwiki' test('lists - get - return all lists on the page', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'anarchism.txt'), 'utf-8') let doc = wtf(str) - const expected = [1946, 815, 4911, 197, 2290, 428] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.lists().map((l) => JSON.stringify(l.json()).length), expected, @@ -818,8 +757,6 @@ test('lists - get - return all lists on the page', (t) => { test('lists - get - if the clue is a number return the lists at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'anarchism.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(JSON.stringify(doc.lists(1).json()).length, 815, 'the lists at index 1') t.end() }) @@ -827,10 +764,7 @@ test('lists - get - if the clue is a number return the lists at that index', (t) test('lists - get - if the clue is any other type then return all lists', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'anarchism.txt'), 'utf-8') let doc = wtf(str) - const expected = [1946, 815, 4911, 197, 2290, 428] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.lists('string').map((l) => JSON.stringify(l.json()).length), expected, @@ -842,10 +776,7 @@ test('lists - get - if the clue is any other type then return all lists', (t) => test('tables - get - return all tables', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [1638, 783] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.tables().map((l) => JSON.stringify(l.json()).length), expected, @@ -857,8 +788,6 @@ test('tables - get - return all tables', (t) => { test('tables - get - if the clue is a number return the tables at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(JSON.stringify(doc.tables(1).json()).length, 783, 'the tables at index 1') t.end() }) @@ -866,10 +795,7 @@ test('tables - get - if the clue is a number return the tables at that index', ( test('tables - get - if the clue is any other type then return all tables', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [1638, 783] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.tables('string').map((l) => JSON.stringify(l.json()).length), expected, @@ -882,10 +808,7 @@ test('tables - get - if the clue is any other type then return all tables', (t) test('templates - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [13, 12, 5, 4, 4, 7, 7, 18] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.templates().map((te) => te.template.length), expected, @@ -897,7 +820,6 @@ test('templates - get - return all templates', (t) => { test('templates - get - if the clue is a number return the templates at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(doc.templates(1).template.length, 12, 'the templates at index 1') t.end() @@ -906,10 +828,7 @@ test('templates - get - if the clue is a number return the templates at that ind test('templates - get - if the clue is any other type then return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [13, 12, 5, 4, 4, 7, 7, 18] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.templates().map((te) => te.template.length), expected, @@ -922,7 +841,6 @@ test('templates - get - if the clue is any other type then return all templates' test('references - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [ 19, 3, @@ -959,8 +877,6 @@ test('references - get - return all templates', (t) => { 0, 0, ] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.references().map((r) => r.title().length), expected, @@ -972,8 +888,6 @@ test('references - get - return all templates', (t) => { test('references - get - if the clue is a number return the references at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(doc.references(1).title().length, 3, 'the references at index 1') t.end() }) @@ -981,7 +895,6 @@ test('references - get - if the clue is a number return the references at that i test('references - get - if the clue is any other type then return all references', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [ 19, 3, @@ -1018,8 +931,6 @@ test('references - get - if the clue is any other type then return all reference 0, 0, ] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.references('string').map((re) => re.title().length), expected, @@ -1032,7 +943,6 @@ test('references - get - if the clue is any other type then return all reference test('citations - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [ 19, 3, @@ -1069,8 +979,6 @@ test('citations - get - return all templates', (t) => { 0, 0, ] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.citations().map((c) => c.title().length), expected, @@ -1082,8 +990,6 @@ test('citations - get - return all templates', (t) => { test('citations - get - if the clue is a number return the citations at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(doc.citations(1).title().length, 3, 'the citations at index 1') t.end() }) @@ -1091,7 +997,6 @@ test('citations - get - if the clue is a number return the citations at that ind test('citations - get - if the clue is any other type then return all references', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [ 19, 3, @@ -1128,8 +1033,6 @@ test('citations - get - if the clue is any other type then return all references 0, 0, ] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.citations('string').map((ci) => ci.title().length), expected, @@ -1142,7 +1045,6 @@ test('citations - get - if the clue is any other type then return all references test('coordinates - get - return all coordinates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Dollar-Point,-California.txt'), 'utf-8') let doc = wtf(str) - const expected = [ { display: 'inline,title', @@ -1158,7 +1060,6 @@ test('coordinates - get - return all coordinates', (t) => { lon: -120.10889, }, ] - t.deepEqual(doc.coordinates(), expected, 'returns all coordinates') t.end() }) @@ -1166,14 +1067,12 @@ test('coordinates - get - return all coordinates', (t) => { test('coordinates - get - if the clue is a number return the coordinates at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Dollar-Point,-California.txt'), 'utf-8') let doc = wtf(str) - const expected = { template: 'coord', props: { type: 'city' }, lat: 39.18861, lon: -120.10889, } - t.deepEqual(doc.coordinates(1), expected, 'the coordinates at index 1') t.end() }) @@ -1181,7 +1080,6 @@ test('coordinates - get - if the clue is a number return the coordinates at that test('coordinates - get - if the clue is any other type then return all coordinates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Dollar-Point,-California.txt'), 'utf-8') let doc = wtf(str) - const expected = [ { display: 'inline,title', @@ -1197,7 +1095,6 @@ test('coordinates - get - if the clue is any other type then return all coordina lon: -120.10889, }, ] - t.deepEqual(doc.coordinates('string'), expected, 'returns all coordinates') t.end() }) @@ -1235,10 +1132,7 @@ const infoboxPage = ` test('references - get - return all templates', (t) => { let doc = wtf(infoboxPage) - const expected = [201, 201, 89] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.infoboxes().map((i) => JSON.stringify(i.json()).length), expected, @@ -1249,18 +1143,13 @@ test('references - get - return all templates', (t) => { test('references - get - if the clue is a number return the references at that index', (t) => { let doc = wtf(infoboxPage) - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(JSON.stringify(doc.infoboxes(1).json()).length, 201, 'the references at index 1') t.end() }) test('references - get - if the clue is any other type then return all references', (t) => { let doc = wtf(infoboxPage) - const expected = [201, 201, 89] - - //I used the length of the paragraphs as an analogue for the content. t.deepEqual( doc.infoboxes('string').map((info) => JSON.stringify(info.json()).length), expected, @@ -1273,7 +1162,6 @@ test('references - get - if the clue is any other type then return all reference test('text - get - get the text version of the document', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Remote-Data-Services.txt'), 'utf-8') let doc = wtf(str) - const expected = 'Remote Data Services (RDS, formerly known as Advanced Data Connector or ADC) is a Microsoft technology used in conjunction with ActiveX Data Objects (ADO) that allowed the retrieval of a set of data from a database server, which the client then altered in some way and then sent back to the server for further processing. With the popular adoption of Transact-SQL, which extends SQL with such programming constructs as loops and conditional statements, this became less necessary and it was eventually deprecated in Microsoft Data Access Components version 2.7. Microsoft produced SOAP Toolkit 2.0, which allows clients to do this via an open XML-based standard.\n\n\n * MSDN Remote Data Service (RDS) description' t.deepEqual(doc.text(), expected, 'Text version of the document') @@ -1282,9 +1170,7 @@ test('text - get - get the text version of the document', (t) => { test('text - get - enpty string for redirects', (t) => { let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - const expected = '' - t.deepEqual(doc.text(), expected, 'empty string') t.end() }) @@ -1293,7 +1179,6 @@ test('text - get - enpty string for redirects', (t) => { test('plaintext - get - get the plaintext version of the document', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Remote-Data-Services.txt'), 'utf-8') let doc = wtf(str) - const expected = 'Remote Data Services (RDS, formerly known as Advanced Data Connector or ADC) is a Microsoft technology used in conjunction with ActiveX Data Objects (ADO) that allowed the retrieval of a set of data from a database server, which the client then altered in some way and then sent back to the server for further processing. With the popular adoption of Transact-SQL, which extends SQL with such programming constructs as loops and conditional statements, this became less necessary and it was eventually deprecated in Microsoft Data Access Components version 2.7. Microsoft produced SOAP Toolkit 2.0, which allows clients to do this via an open XML-based standard.\n\n\n * MSDN Remote Data Service (RDS) description' t.deepEqual(doc.plaintext(), expected, 'Text version of the document') @@ -1302,9 +1187,7 @@ test('plaintext - get - get the plaintext version of the document', (t) => { test('plaintext - get - enpty string for redirects', (t) => { let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - const expected = '' - t.deepEqual(doc.plaintext(), expected, 'empty string') t.end() }) @@ -1313,7 +1196,6 @@ test('plaintext - get - enpty string for redirects', (t) => { test('json - get - get the json version of the document', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Remote-Data-Services.txt'), 'utf-8') let doc = wtf(str) - //I used the length of the paragraphs as an analogue for the content. t.deepEqual(JSON.stringify(doc.json()).length, 1971, 'JSON version of the document') t.end() @@ -1324,7 +1206,6 @@ test('json - get - get the json version of the document', (t) => { //singular-methods test('plurals / singular - all should exist', (t) => { let doc = wtf('#DOORVERWIJZING [[Doelpagina]]') - let singels = [ 'section', 'infobox', @@ -1339,726 +1220,9 @@ test('plurals / singular - all should exist', (t) => { 'template', 'category', ] - singels.forEach((s) => { t.equal(typeof doc[s], 'function', 'every function needs to be defined. also ' + s) }) t.end() }) -test('plurals / singular - all should exist', (t) => { - let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') - let doc = wtf(str) - - let singels = { - section: [ - { - clue: undefined, - json: true, - expected: { - title: '', - depth: 0, - paragraphs: [ - { - sentences: [ - { - text: - 'Arts Club of Chicago is a private club located in the Near North Side community area of Chicago in Cook County, Illinois, United States, a block east of the Magnificent Mile, that exhibits international contemporary art.', - links: [ - { - text: 'Near North Side', - type: 'internal', - page: 'Near North Side, Chicago', - }, - { - text: 'community area', - type: 'internal', - page: 'Community areas of Chicago', - }, - { type: 'internal', page: 'Chicago' }, - { - type: 'internal', - page: 'Cook County, Illinois', - }, - { type: 'internal', page: 'Magnificent Mile' }, - { - text: 'contemporary art', - type: 'internal', - page: 'contemporary art', - }, - ], - formatting: { bold: ['Arts Club of Chicago'] }, - }, - { - text: - "It was founded in 1916, inspired by the success of the Art Institute of Chicago's handling of the Armory Show.", - links: [ - { type: 'internal', page: 'Art Institute of Chicago' }, - { - type: 'internal', - page: 'Armory Show', - }, - ], - }, - { - text: - 'Its founding was viewed as a statement that art had become an important component of civilized urban life.', - }, - { - text: 'The Arts Club is said to have been pro-Modernist from its founding.', - links: [{ text: 'Modernist', type: 'internal', page: 'Modernism' }], - }, - { - text: - 'The Club strove to break new ground with its shows, rather than collect the works of established artists as the Art Institute does.', - }, - ], - }, - { - sentences: [ - { - text: "The club presented Pablo Picasso's first United States showing.", - links: [{ type: 'internal', page: 'Pablo Picasso' }], - }, - { - text: - 'In addition, the 1951 exhibition by Jean Dubuffet and his "Anticultural Positions" lecture at the Arts Club were tremendous influences on what would become the mid-1960s Imagist movement.', - links: [ - { type: 'internal', page: 'Jean Dubuffet' }, - { type: 'internal', page: 'Imagist' }, - ], - }, - { - text: - 'Another important presentation in the history of the Arts Club was the Fernand Léger showing of Le Ballet Mecanique.', - links: [{ type: 'internal', page: 'Fernand Léger' }], - formatting: { italic: ['Le Ballet Mecanique'] }, - }, - ], - }, - { - sentences: [ - { - text: - "The Club's move in 1997 to its current location at 201 E. Ontario Street was not without controversy because the club demolished its former interior space designed by Ludwig Mies van der Rohe and moved only the central staircase to the new gallery space.", - links: [{ type: 'internal', page: 'Ludwig Mies van der Rohe' }], - }, - { text: 'However, the new space is 19000 sqft, which is 7000 sqft larger than the old space.' }, - ], - }, - ], - templates: [ - { - date: 'August 2016', - template: 'use mdy dates', - }, - { template: 'good article' }, - { - display: 'inline', - template: 'coord', - lat: 41.89327, - lon: -87.62251, - }, - ], - infoboxes: [ - { - name: { text: 'Arts Club of Chicago' }, - pushpin_map: { text: 'United States Chicago Near North Side' }, - coordinates: { text: '41.89327°N, -87.62251°W' }, - map_caption: { - text: "Location within Chicago's Near North Side community area", - links: [ - { - text: 'Near North Side', - type: 'internal', - page: 'Near North Side, Chicago', - }, - { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, - ], - }, - image: { text: '20070701 Arts Club of Chicago.JPG' }, - established: { text: '1916 (current location since April 4, 1997)' }, - location: { - text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', - links: [ - { type: 'internal', page: 'Chicago' }, - { - type: 'internal', - page: 'Illinois', - }, - { text: '🇺🇸', type: 'internal', page: 'united states' }, - ], - }, - website: { - text: 'www.artsclubchicago.org', - links: [ - { - text: 'www.artsclubchicago.org', - type: 'external', - site: 'http://www.artsclubchicago.org', - }, - ], - }, - }, - ], - references: [ - { - url: 'http://www.encyclopedia.chicagohistory.org/pages/70.html', - author: 'Kruty, Paul', - title: 'Armory Show of 1913', - accessdate: 'June 27, 2007', - year: '2005', - publisher: 'Chicago Historical Society', - work: 'The Electronic Encyclopedia of Chicago', - template: 'citation', - type: 'web', - }, - { - url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', - author: 'Warren, Lynne', - title: 'Art', - accessdate: 'June 27, 2007', - year: '2005', - publisher: 'Chicago Historical Society', - work: 'The Electronic Encyclopedia of Chicago', - template: 'citation', - type: 'web', - }, - { - url: 'http://www.encyclopedia.chicagohistory.org/pages/83.html', - author: 'Roeder George H., Jr.', - title: 'Artists, Education and Culture of', - accessdate: 'June 27, 2007', - year: '2005', - publisher: 'Chicago Historical Society', - work: 'The Electronic Encyclopedia of Chicago', - template: 'citation', - type: 'web', - }, - { - url: - 'http://www.aiachicago.org/special_features/1996_Design_Awards/Unbuilt/Awards/Winners/unbuilt_171.html', - 'archive-url': - 'https://web.archive.org/web/20011124011911/http://www.aiachicago.org/special_features/1996_Design_Awards/Unbuilt/Awards/Winners/unbuilt_171.html', - 'dead-url': 'yes', - 'archive-date': 'November 24, 2001', - title: 'Honor : The Arts Club of Chicago', - accessdate: 'June 28, 2007', - publisher: 'American Institute of Architects Chicago', - template: 'citation', - type: 'web', - }, - { - url: 'http://www.artn.com/Building.pdf', - title: 'The Arts Club of Chicago Building Fact Sheet', - accessdate: 'June 29, 2007', - publisher: 'www.artn.com', - format: 'PDF', - archiveurl: 'https://web.archive.org/web/20060615211113/http://www.artn.com/Building.pdf', - archivedate: 'June 15, 2006', - template: 'citation', - type: 'web', - }, - ], - }, - }, - { - clue: 1, - json: true, - expected: { - title: 'Mission and purpose', - depth: 0, - paragraphs: [ - { - sentences: [ - { - text: - 'The inaugural mission of the club was "to encourage higher standards of art, maintain galleries for that purpose, and to promote the mutual acquaintance of art lovers and art workers."', - }, - { - text: - 'This mission arose from the contemporary Chicago active art scene, which had 30 commercial art galleries showing traditional art and an internationally recognized museum.', - links: [{ text: 'art galleries', type: 'internal', page: 'art gallery' }], - }, - { - text: 'Additionally, the local mass media gave equitable coverage to the visual arts.', - links: [ - { text: 'mass media', type: 'internal', page: 'mass media' }, - { - text: 'visual arts', - type: 'internal', - page: 'visual art', - }, - ], - }, - { - text: 'The art scene also had enough clubs and organizations for musicians, writers and artists.', - links: [{ text: 'artists', type: 'internal', page: 'artist' }], - }, - { - text: 'Unfortunately, the lively art scene did not adequately represent the avant-garde art.', - links: [{ text: 'avant-garde', type: 'internal', page: 'avant-garde' }], - }, - { - text: - 'The local galleries emphasized American, English and the occasional French work, emphasizing prints and drawings.', - }, - { - text: - 'This necessitated trips to New York City, London or Paris for Chicagoans who wanted to buy art.', - }, - ], - }, - { - sentences: [ - { text: 'The club does not generally show traveling exhibitions curated by others.' }, - { text: 'Instead, it curates its own exhibits, often with very original works.' }, - { text: 'This places emphasis on cutting edge and avant-garde art.' }, - ], - }, - ], - references: [{ template: 'citation', type: 'inline', data: {}, inline: {} }], - }, - }, - ], - infobox: [ - { - clue: undefined, - json: true, - expected: { - name: { text: 'Arts Club of Chicago' }, - pushpin_map: { text: 'United States Chicago Near North Side' }, - coordinates: { text: '41.89327°N, -87.62251°W' }, - map_caption: { - text: "Location within Chicago's Near North Side community area", - links: [ - { - text: 'Near North Side', - type: 'internal', - page: 'Near North Side, Chicago', - }, - { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, - ], - }, - image: { text: '20070701 Arts Club of Chicago.JPG' }, - established: { text: '1916 (current location since April 4, 1997)' }, - location: { - text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', - links: [ - { text: undefined, type: 'internal', page: 'Chicago' }, - { - text: undefined, - type: 'internal', - page: 'Illinois', - }, - { text: '🇺🇸', type: 'internal', page: 'united states' }, - ], - }, - website: { - text: 'www.artsclubchicago.org', - links: [{ text: 'www.artsclubchicago.org', type: 'external', site: 'http://www.artsclubchicago.org' }], - }, - }, - }, - { - clue: 0, - json: true, - expected: { - name: { text: 'Arts Club of Chicago' }, - pushpin_map: { text: 'United States Chicago Near North Side' }, - coordinates: { text: '41.89327°N, -87.62251°W' }, - map_caption: { - text: "Location within Chicago's Near North Side community area", - links: [ - { - text: 'Near North Side', - type: 'internal', - page: 'Near North Side, Chicago', - }, - { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, - ], - }, - image: { text: '20070701 Arts Club of Chicago.JPG' }, - established: { text: '1916 (current location since April 4, 1997)' }, - location: { - text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', - links: [ - { text: undefined, type: 'internal', page: 'Chicago' }, - { - text: undefined, - type: 'internal', - page: 'Illinois', - }, - { text: '🇺🇸', type: 'internal', page: 'united states' }, - ], - }, - website: { - text: 'www.artsclubchicago.org', - links: [{ text: 'www.artsclubchicago.org', type: 'external', site: 'http://www.artsclubchicago.org' }], - }, - }, - }, - ], - sentence: [ - { - clue: undefined, - json: true, - expected: { - text: - 'Arts Club of Chicago is a private club located in the Near North Side community area of Chicago in Cook County, Illinois, United States, a block east of the Magnificent Mile, that exhibits international contemporary art.', - links: [ - { - text: 'Near North Side', - type: 'internal', - page: 'Near North Side, Chicago', - }, - { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, - { - text: undefined, - type: 'internal', - page: 'Chicago', - }, - { text: undefined, type: 'internal', page: 'Cook County, Illinois' }, - { - text: undefined, - type: 'internal', - page: 'Magnificent Mile', - }, - { text: 'contemporary art', type: 'internal', page: 'contemporary art' }, - ], - formatting: { bold: ['Arts Club of Chicago'] }, - }, - }, - { - clue: 1, - json: true, - expected: { - text: - "It was founded in 1916, inspired by the success of the Art Institute of Chicago's handling of the Armory Show.", - links: [ - { type: 'internal', page: 'Art Institute of Chicago' }, - { - type: 'internal', - page: 'Armory Show', - }, - ], - }, - }, - ], - citation: [ - { - clue: undefined, - json: true, - expected: { - url: 'http://www.encyclopedia.chicagohistory.org/pages/70.html', - author: 'Kruty, Paul', - title: 'Armory Show of 1913', - accessdate: 'June 27, 2007', - year: '2005', - publisher: 'Chicago Historical Society', - work: 'The Electronic Encyclopedia of Chicago', - template: 'citation', - type: 'web', - }, - }, - { - clue: 1, - json: true, - expected: { - url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', - author: 'Warren, Lynne', - title: 'Art', - accessdate: 'June 27, 2007', - year: '2005', - publisher: 'Chicago Historical Society', - work: 'The Electronic Encyclopedia of Chicago', - template: 'citation', - type: 'web', - }, - }, - ], - reference: [ - { - clue: undefined, - json: true, - expected: { - url: 'http://www.encyclopedia.chicagohistory.org/pages/70.html', - author: 'Kruty, Paul', - title: 'Armory Show of 1913', - accessdate: 'June 27, 2007', - year: '2005', - publisher: 'Chicago Historical Society', - work: 'The Electronic Encyclopedia of Chicago', - template: 'citation', - type: 'web', - }, - }, - { - clue: 1, - json: true, - expected: { - url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', - author: 'Warren, Lynne', - title: 'Art', - accessdate: 'June 27, 2007', - year: '2005', - publisher: 'Chicago Historical Society', - work: 'The Electronic Encyclopedia of Chicago', - template: 'citation', - type: 'web', - }, - }, - ], - coordinate: [ - { - clue: undefined, - expected: { display: 'inline', template: 'coord', lat: 41.89327, lon: -87.62251 }, - }, - { - clue: 1, - expected: undefined, - }, - ], - table: [ - { - clue: undefined, - json: true, - expected: [ - { - Name: { - text: 'Fine Arts Building', - links: [{ text: 'Fine Arts Building', type: 'internal', page: 'Fine Arts Building (Chicago)' }], - }, - 'Street Address': { - text: '401 S. Michigan Avenue', - links: [{ text: 'Michigan Avenue', type: 'internal', page: 'Michigan Avenue (Chicago)' }], - }, - Years: { text: '1916-18' }, - 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, - }, - { - Name: { text: '' }, - 'Street Address': { text: '610 S. Michigan Avenue' }, - Years: { text: '1918-24' }, - 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, - }, - { - Name: { - text: 'Wrigley Building (north tower)', - links: [{ text: undefined, type: 'internal', page: 'Wrigley Building' }], - }, - 'Street Address': { text: '410 N. Michigan Avenue' }, - Years: { text: '1924-36' }, - 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, - }, - { - Name: { - text: 'Wrigley Building (south tower)', - links: [{ text: undefined, type: 'internal', page: 'Wrigley Building' }], - }, - 'Street Address': { text: '410 N. Michigan Avenue' }, - Years: { text: '1936-47' }, - 'Architect/Interior Designer': { text: 'Arthur Heun/Elizabeth "Bobsy" Goodspeed Chapman' }, - }, - { - Name: { text: '' }, - 'Street Address': { text: '109 E. Ontario Street' }, - Years: { text: '1951-95' }, - 'Architect/Interior Designer': { - text: 'Ludwig Mies van der Rohe', - links: [{ text: undefined, type: 'internal', page: 'Ludwig Mies van der Rohe' }], - }, - }, - { - Name: { text: '' }, - 'Street Address': { text: '222 W. Superior Street' }, - Years: { text: '1995-97' }, - 'Architect/Interior Designer': { text: '' }, - }, - { - Name: { text: '' }, - 'Street Address': { text: '201 E. Ontario Street' }, - Years: { text: '1997-' }, - 'Architect/Interior Designer': { text: 'Vinci/Hamp Architects, Inc.' }, - }, - ], - }, - { - clue: 1, - json: true, - expected: [ - { - Name: { text: 'Mrs. Robert McGann' }, - Years: { text: '1916-18' }, - }, - { - Name: { text: 'Rue Winterbotham Carpenter' }, - Years: { text: '1918-31' }, - }, - { - Name: { text: 'Elizabeth "Bobsy" Goodspeed' }, - Years: { text: '1932-40' }, - }, - { - Name: { text: 'Mrs. William B. Hale' }, - Years: { text: '1940', number: 1940 }, - }, - { - Name: { text: 'Rue Winterbotham Shaw' }, - Years: { text: '1940-79' }, - }, - { - Name: { text: 'Mrs. Roger Barnett' }, - Years: { text: '1979', number: 1979 }, - }, - { - Name: { text: 'James Phinney Baxter IV' }, - Years: { text: '1979-81' }, - }, - { - Name: { text: 'Stanley M. Freehling' }, - Years: { text: '1981–2005' }, - }, - { Name: { text: 'Marilynn B. Alsdorf' }, Years: { text: '2006–2011' } }, - { - Name: { text: 'Sophia Shaw' }, - Years: { text: '2011–2013' }, - }, - { Name: { text: 'Helyn Goldenberg' }, Years: { text: '2013–present' } }, - ], - }, - ], - list: [ - { - clue: undefined, - json: true, - expected: [ - { - text: - 'Red Petals, plate steel, steel wire, sheet aluminum, soft-iron bolts, and aluminum paint, 1942, by Alexander Calder', - formatting: { italic: ['Red Petals'] }, - }, - { - text: - 'Main Staircase for The Arts Club of Chicago, steel, travertine marble, 1948-1951, by Ludwig Mies van der Rohe', - formatting: { italic: ['Main Staircase for The Arts Club of Chicago'] }, - }, - { - text: 'Untitled, charcoal on ivory laid paper, 1922, by Henri Matisse', - links: [{ text: 'charcoal', type: 'internal', page: 'charcoal' }], - formatting: { italic: ['Untitled'] }, - }, - { - text: - 'Personage and Birds in Front of the Sun (Personnage et oiseaux devant le soleil), ink and gouache on paper, 1942, by Joan Miró', - formatting: { - italic: ['Personage and Birds in Front of the Sun (Personnage et oiseaux devant le soleil)'], - }, - }, - { - text: - 'This Thing is Made to Perpetuate My Memory (Cette Chose est faite pour perpetuer mon souvenir), ink, gouache or watercolor, and silver and bronze paint on board, 1915, by Francis Picabia', - formatting: { - italic: [ - 'This Thing is Made to Perpetuate My Memory (Cette Chose est faite pour perpetuer mon souvenir)', - ], - }, - }, - { - text: - 'Head of a Woman (Tete de femme), red and black chalk with chalk wash on tan laid paper, laid down on lightweight Japanese paper, 1922, by Pablo Picasso', - formatting: { italic: ['Head of a Woman (Tete de femme)'] }, - }, - ], - }, - { - clue: 1, - json: true, - expected: [ - { - text: - 'Fitzgerald, Michael C. (1984). Making Modernism: Picasso and the Creation of the Market for Twentieth Century Art. Farrar Straus & Giroux. ISBN: 0-37410-611-8.', - formatting: { - italic: ['Making Modernism: Picasso and the Creation of the Market for Twentieth Century Art'], - }, - }, - { - text: - 'Shaw, Sophia (ed.) (1997). The Arts Club of Chicago: The Collection 1916-1996. The Arts Club of Chicago. ISBN: 0-96434-403-3.', - links: [ - { - text: 'The Arts Club of Chicago: The Collection 1916-1996', - type: 'external', - site: - 'https://web.archive.org/web/20060918054331/http://www.press.uchicago.edu/cgi-bin/hfs.cgi/00/13456.ctl', - }, - ], - formatting: { italic: ['The Arts Club of Chicago: The Collection 1916-1996'] }, - }, - { - text: 'Wells, James M. (1992). The Arts Club of Chicago: Seventy-Fifth Anniversary.', - formatting: { italic: ['The Arts Club of Chicago: Seventy-Fifth Anniversary'] }, - }, - ], - }, - ], - link: [ - { - clue: undefined, - json: true, - expected: { - text: 'Near North Side', - type: 'internal', - page: 'Near North Side, Chicago', - }, - }, - { - clue: 1, - json: true, - expected: { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, - }, - ], - image: [ - { - clue: undefined, - json: true, - expected: { - file: '20070701 Arts Club of Chicago.JPG', - thumb: 'https://wikipedia.org/wiki/Special:Redirect/file/20070701_Arts_Club_of_Chicago.JPG?width=300', - url: 'https://wikipedia.org/wiki/Special:Redirect/file/20070701_Arts_Club_of_Chicago.JPG', - }, - }, - { - clue: 1, - json: true, - expected: { - file: 'File:20070711 Mies van der Rohe Staircase.JPG', - thumb: 'https://wikipedia.org/wiki/Special:Redirect/file/20070711_Mies_van_der_Rohe_Staircase.JPG?width=300', - url: 'https://wikipedia.org/wiki/Special:Redirect/file/20070711_Mies_van_der_Rohe_Staircase.JPG', - caption: 'Mies van der Rohe staircase and Alexander Calder mobile', - links: [], - }, - }, - ], - template: [ - { clue: undefined, expected: { date: 'August 2016', template: 'use mdy dates' } }, - { clue: 1, expected: { template: 'good article' } }, - ], - category: [ - { clue: undefined, expected: '1916 establishments in Illinois' }, - { clue: 1, expected: 'Museums in Chicago' }, - ], - } - - Object.keys(singels).forEach((fn) => { - singels[fn].forEach((testCase) => { - const result = testCase.json ? doc[fn](testCase.clue).json() : doc[fn](testCase.clue) - t.deepEqual( - JSON.stringify(result), - JSON.stringify(testCase.expected), - 'expect doc.' + fn + '(' + testCase.clue + ') to equal ' + testCase.expected - ) - }) - }) - t.end() -}) diff --git a/tests/json-full.test.js b/tests/json-full.test.js new file mode 100644 index 00000000..b6bae443 --- /dev/null +++ b/tests/json-full.test.js @@ -0,0 +1,719 @@ +const wtf = require('./lib') +const fs = require('fs') +const path = require('path') +const test = require('tape') + +test('plurals / singular - all should exist', (t) => { + let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') + let doc = wtf(str) + let singels = { + section: [ + { + clue: undefined, + json: true, + expected: { + title: '', + depth: 0, + paragraphs: [ + { + sentences: [ + { + text: + 'Arts Club of Chicago is a private club located in the Near North Side community area of Chicago in Cook County, Illinois, United States, a block east of the Magnificent Mile, that exhibits international contemporary art.', + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { + text: 'community area', + type: 'internal', + page: 'Community areas of Chicago', + }, + { type: 'internal', page: 'Chicago' }, + { + type: 'internal', + page: 'Cook County, Illinois', + }, + { type: 'internal', page: 'Magnificent Mile' }, + { + text: 'contemporary art', + type: 'internal', + page: 'contemporary art', + }, + ], + formatting: { bold: ['Arts Club of Chicago'] }, + }, + { + text: + "It was founded in 1916, inspired by the success of the Art Institute of Chicago's handling of the Armory Show.", + links: [ + { type: 'internal', page: 'Art Institute of Chicago' }, + { + type: 'internal', + page: 'Armory Show', + }, + ], + }, + { + text: + 'Its founding was viewed as a statement that art had become an important component of civilized urban life.', + }, + { + text: 'The Arts Club is said to have been pro-Modernist from its founding.', + links: [{ text: 'Modernist', type: 'internal', page: 'Modernism' }], + }, + { + text: + 'The Club strove to break new ground with its shows, rather than collect the works of established artists as the Art Institute does.', + }, + ], + }, + { + sentences: [ + { + text: "The club presented Pablo Picasso's first United States showing.", + links: [{ type: 'internal', page: 'Pablo Picasso' }], + }, + { + text: + 'In addition, the 1951 exhibition by Jean Dubuffet and his "Anticultural Positions" lecture at the Arts Club were tremendous influences on what would become the mid-1960s Imagist movement.', + links: [ + { type: 'internal', page: 'Jean Dubuffet' }, + { type: 'internal', page: 'Imagist' }, + ], + }, + { + text: + 'Another important presentation in the history of the Arts Club was the Fernand Léger showing of Le Ballet Mecanique.', + links: [{ type: 'internal', page: 'Fernand Léger' }], + formatting: { italic: ['Le Ballet Mecanique'] }, + }, + ], + }, + { + sentences: [ + { + text: + "The Club's move in 1997 to its current location at 201 E. Ontario Street was not without controversy because the club demolished its former interior space designed by Ludwig Mies van der Rohe and moved only the central staircase to the new gallery space.", + links: [{ type: 'internal', page: 'Ludwig Mies van der Rohe' }], + }, + { text: 'However, the new space is 19000 sqft, which is 7000 sqft larger than the old space.' }, + ], + }, + ], + templates: [ + { + date: 'August 2016', + template: 'use mdy dates', + }, + { template: 'good article' }, + { + display: 'inline', + template: 'coord', + lat: 41.89327, + lon: -87.62251, + }, + ], + infoboxes: [ + { + name: { text: 'Arts Club of Chicago' }, + pushpin_map: { text: 'United States Chicago Near North Side' }, + coordinates: { text: '41.89327°N, -87.62251°W' }, + map_caption: { + text: "Location within Chicago's Near North Side community area", + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, + ], + }, + image: { text: '20070701 Arts Club of Chicago.JPG' }, + established: { text: '1916 (current location since April 4, 1997)' }, + location: { + text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', + links: [ + { type: 'internal', page: 'Chicago' }, + { + type: 'internal', + page: 'Illinois', + }, + { text: '🇺🇸', type: 'internal', page: 'united states' }, + ], + }, + website: { + text: 'www.artsclubchicago.org', + links: [ + { + text: 'www.artsclubchicago.org', + type: 'external', + site: 'http://www.artsclubchicago.org', + }, + ], + }, + }, + ], + references: [ + { + url: 'http://www.encyclopedia.chicagohistory.org/pages/70.html', + author: 'Kruty, Paul', + title: 'Armory Show of 1913', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', + }, + { + url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', + author: 'Warren, Lynne', + title: 'Art', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', + }, + { + url: 'http://www.encyclopedia.chicagohistory.org/pages/83.html', + author: 'Roeder George H., Jr.', + title: 'Artists, Education and Culture of', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', + }, + { + url: + 'http://www.aiachicago.org/special_features/1996_Design_Awards/Unbuilt/Awards/Winners/unbuilt_171.html', + 'archive-url': + 'https://web.archive.org/web/20011124011911/http://www.aiachicago.org/special_features/1996_Design_Awards/Unbuilt/Awards/Winners/unbuilt_171.html', + 'dead-url': 'yes', + 'archive-date': 'November 24, 2001', + title: 'Honor : The Arts Club of Chicago', + accessdate: 'June 28, 2007', + publisher: 'American Institute of Architects Chicago', + template: 'citation', + type: 'web', + }, + { + url: 'http://www.artn.com/Building.pdf', + title: 'The Arts Club of Chicago Building Fact Sheet', + accessdate: 'June 29, 2007', + publisher: 'www.artn.com', + format: 'PDF', + archiveurl: 'https://web.archive.org/web/20060615211113/http://www.artn.com/Building.pdf', + archivedate: 'June 15, 2006', + template: 'citation', + type: 'web', + }, + ], + }, + }, + { + clue: 1, + json: true, + expected: { + title: 'Mission and purpose', + depth: 0, + paragraphs: [ + { + sentences: [ + { + text: + 'The inaugural mission of the club was "to encourage higher standards of art, maintain galleries for that purpose, and to promote the mutual acquaintance of art lovers and art workers."', + }, + { + text: + 'This mission arose from the contemporary Chicago active art scene, which had 30 commercial art galleries showing traditional art and an internationally recognized museum.', + links: [{ text: 'art galleries', type: 'internal', page: 'art gallery' }], + }, + { + text: 'Additionally, the local mass media gave equitable coverage to the visual arts.', + links: [ + { text: 'mass media', type: 'internal', page: 'mass media' }, + { + text: 'visual arts', + type: 'internal', + page: 'visual art', + }, + ], + }, + { + text: 'The art scene also had enough clubs and organizations for musicians, writers and artists.', + links: [{ text: 'artists', type: 'internal', page: 'artist' }], + }, + { + text: 'Unfortunately, the lively art scene did not adequately represent the avant-garde art.', + links: [{ text: 'avant-garde', type: 'internal', page: 'avant-garde' }], + }, + { + text: + 'The local galleries emphasized American, English and the occasional French work, emphasizing prints and drawings.', + }, + { + text: + 'This necessitated trips to New York City, London or Paris for Chicagoans who wanted to buy art.', + }, + ], + }, + { + sentences: [ + { text: 'The club does not generally show traveling exhibitions curated by others.' }, + { text: 'Instead, it curates its own exhibits, often with very original works.' }, + { text: 'This places emphasis on cutting edge and avant-garde art.' }, + ], + }, + ], + references: [{ template: 'citation', type: 'inline', data: {}, inline: {} }], + }, + }, + ], + infobox: [ + { + clue: undefined, + json: true, + expected: { + name: { text: 'Arts Club of Chicago' }, + pushpin_map: { text: 'United States Chicago Near North Side' }, + coordinates: { text: '41.89327°N, -87.62251°W' }, + map_caption: { + text: "Location within Chicago's Near North Side community area", + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, + ], + }, + image: { text: '20070701 Arts Club of Chicago.JPG' }, + established: { text: '1916 (current location since April 4, 1997)' }, + location: { + text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', + links: [ + { text: undefined, type: 'internal', page: 'Chicago' }, + { + text: undefined, + type: 'internal', + page: 'Illinois', + }, + { text: '🇺🇸', type: 'internal', page: 'united states' }, + ], + }, + website: { + text: 'www.artsclubchicago.org', + links: [{ text: 'www.artsclubchicago.org', type: 'external', site: 'http://www.artsclubchicago.org' }], + }, + }, + }, + { + clue: 0, + json: true, + expected: { + name: { text: 'Arts Club of Chicago' }, + pushpin_map: { text: 'United States Chicago Near North Side' }, + coordinates: { text: '41.89327°N, -87.62251°W' }, + map_caption: { + text: "Location within Chicago's Near North Side community area", + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, + ], + }, + image: { text: '20070701 Arts Club of Chicago.JPG' }, + established: { text: '1916 (current location since April 4, 1997)' }, + location: { + text: '201 E. Ontario Street, Chicago, Illinois 60611 United States 🇺🇸', + links: [ + { text: undefined, type: 'internal', page: 'Chicago' }, + { + text: undefined, + type: 'internal', + page: 'Illinois', + }, + { text: '🇺🇸', type: 'internal', page: 'united states' }, + ], + }, + website: { + text: 'www.artsclubchicago.org', + links: [{ text: 'www.artsclubchicago.org', type: 'external', site: 'http://www.artsclubchicago.org' }], + }, + }, + }, + ], + sentence: [ + { + clue: undefined, + json: true, + expected: { + text: + 'Arts Club of Chicago is a private club located in the Near North Side community area of Chicago in Cook County, Illinois, United States, a block east of the Magnificent Mile, that exhibits international contemporary art.', + links: [ + { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, + { + text: undefined, + type: 'internal', + page: 'Chicago', + }, + { text: undefined, type: 'internal', page: 'Cook County, Illinois' }, + { + text: undefined, + type: 'internal', + page: 'Magnificent Mile', + }, + { text: 'contemporary art', type: 'internal', page: 'contemporary art' }, + ], + formatting: { bold: ['Arts Club of Chicago'] }, + }, + }, + { + clue: 1, + json: true, + expected: { + text: + "It was founded in 1916, inspired by the success of the Art Institute of Chicago's handling of the Armory Show.", + links: [ + { type: 'internal', page: 'Art Institute of Chicago' }, + { + type: 'internal', + page: 'Armory Show', + }, + ], + }, + }, + ], + citation: [ + { + clue: undefined, + json: true, + expected: { + url: 'http://www.encyclopedia.chicagohistory.org/pages/70.html', + author: 'Kruty, Paul', + title: 'Armory Show of 1913', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', + }, + }, + { + clue: 1, + json: true, + expected: { + url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', + author: 'Warren, Lynne', + title: 'Art', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', + }, + }, + ], + reference: [ + { + clue: undefined, + json: true, + expected: { + url: 'http://www.encyclopedia.chicagohistory.org/pages/70.html', + author: 'Kruty, Paul', + title: 'Armory Show of 1913', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', + }, + }, + { + clue: 1, + json: true, + expected: { + url: 'http://www.encyclopedia.chicagohistory.org/pages/72.html', + author: 'Warren, Lynne', + title: 'Art', + accessdate: 'June 27, 2007', + year: '2005', + publisher: 'Chicago Historical Society', + work: 'The Electronic Encyclopedia of Chicago', + template: 'citation', + type: 'web', + }, + }, + ], + coordinate: [ + { + clue: undefined, + expected: { display: 'inline', template: 'coord', lat: 41.89327, lon: -87.62251 }, + }, + { + clue: 1, + expected: undefined, + }, + ], + table: [ + { + clue: undefined, + json: true, + expected: [ + { + Name: { + text: 'Fine Arts Building', + links: [{ text: 'Fine Arts Building', type: 'internal', page: 'Fine Arts Building (Chicago)' }], + }, + 'Street Address': { + text: '401 S. Michigan Avenue', + links: [{ text: 'Michigan Avenue', type: 'internal', page: 'Michigan Avenue (Chicago)' }], + }, + Years: { text: '1916-18' }, + 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, + }, + { + Name: { text: '' }, + 'Street Address': { text: '610 S. Michigan Avenue' }, + Years: { text: '1918-24' }, + 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, + }, + { + Name: { + text: 'Wrigley Building (north tower)', + links: [{ text: undefined, type: 'internal', page: 'Wrigley Building' }], + }, + 'Street Address': { text: '410 N. Michigan Avenue' }, + Years: { text: '1924-36' }, + 'Architect/Interior Designer': { text: 'Arthur Heun/Rue Winterbotham Carpenter' }, + }, + { + Name: { + text: 'Wrigley Building (south tower)', + links: [{ text: undefined, type: 'internal', page: 'Wrigley Building' }], + }, + 'Street Address': { text: '410 N. Michigan Avenue' }, + Years: { text: '1936-47' }, + 'Architect/Interior Designer': { text: 'Arthur Heun/Elizabeth "Bobsy" Goodspeed Chapman' }, + }, + { + Name: { text: '' }, + 'Street Address': { text: '109 E. Ontario Street' }, + Years: { text: '1951-95' }, + 'Architect/Interior Designer': { + text: 'Ludwig Mies van der Rohe', + links: [{ text: undefined, type: 'internal', page: 'Ludwig Mies van der Rohe' }], + }, + }, + { + Name: { text: '' }, + 'Street Address': { text: '222 W. Superior Street' }, + Years: { text: '1995-97' }, + 'Architect/Interior Designer': { text: '' }, + }, + { + Name: { text: '' }, + 'Street Address': { text: '201 E. Ontario Street' }, + Years: { text: '1997-' }, + 'Architect/Interior Designer': { text: 'Vinci/Hamp Architects, Inc.' }, + }, + ], + }, + { + clue: 1, + json: true, + expected: [ + { + Name: { text: 'Mrs. Robert McGann' }, + Years: { text: '1916-18' }, + }, + { + Name: { text: 'Rue Winterbotham Carpenter' }, + Years: { text: '1918-31' }, + }, + { + Name: { text: 'Elizabeth "Bobsy" Goodspeed' }, + Years: { text: '1932-40' }, + }, + { + Name: { text: 'Mrs. William B. Hale' }, + Years: { text: '1940', number: 1940 }, + }, + { + Name: { text: 'Rue Winterbotham Shaw' }, + Years: { text: '1940-79' }, + }, + { + Name: { text: 'Mrs. Roger Barnett' }, + Years: { text: '1979', number: 1979 }, + }, + { + Name: { text: 'James Phinney Baxter IV' }, + Years: { text: '1979-81' }, + }, + { + Name: { text: 'Stanley M. Freehling' }, + Years: { text: '1981–2005' }, + }, + { Name: { text: 'Marilynn B. Alsdorf' }, Years: { text: '2006–2011' } }, + { + Name: { text: 'Sophia Shaw' }, + Years: { text: '2011–2013' }, + }, + { Name: { text: 'Helyn Goldenberg' }, Years: { text: '2013–present' } }, + ], + }, + ], + list: [ + { + clue: undefined, + json: true, + expected: [ + { + text: + 'Red Petals, plate steel, steel wire, sheet aluminum, soft-iron bolts, and aluminum paint, 1942, by Alexander Calder', + formatting: { italic: ['Red Petals'] }, + }, + { + text: + 'Main Staircase for The Arts Club of Chicago, steel, travertine marble, 1948-1951, by Ludwig Mies van der Rohe', + formatting: { italic: ['Main Staircase for The Arts Club of Chicago'] }, + }, + { + text: 'Untitled, charcoal on ivory laid paper, 1922, by Henri Matisse', + links: [{ text: 'charcoal', type: 'internal', page: 'charcoal' }], + formatting: { italic: ['Untitled'] }, + }, + { + text: + 'Personage and Birds in Front of the Sun (Personnage et oiseaux devant le soleil), ink and gouache on paper, 1942, by Joan Miró', + formatting: { + italic: ['Personage and Birds in Front of the Sun (Personnage et oiseaux devant le soleil)'], + }, + }, + { + text: + 'This Thing is Made to Perpetuate My Memory (Cette Chose est faite pour perpetuer mon souvenir), ink, gouache or watercolor, and silver and bronze paint on board, 1915, by Francis Picabia', + formatting: { + italic: [ + 'This Thing is Made to Perpetuate My Memory (Cette Chose est faite pour perpetuer mon souvenir)', + ], + }, + }, + { + text: + 'Head of a Woman (Tete de femme), red and black chalk with chalk wash on tan laid paper, laid down on lightweight Japanese paper, 1922, by Pablo Picasso', + formatting: { italic: ['Head of a Woman (Tete de femme)'] }, + }, + ], + }, + { + clue: 1, + json: true, + expected: [ + { + text: + 'Fitzgerald, Michael C. (1984). Making Modernism: Picasso and the Creation of the Market for Twentieth Century Art. Farrar Straus & Giroux. ISBN: 0-37410-611-8.', + formatting: { + italic: ['Making Modernism: Picasso and the Creation of the Market for Twentieth Century Art'], + }, + }, + { + text: + 'Shaw, Sophia (ed.) (1997). The Arts Club of Chicago: The Collection 1916-1996. The Arts Club of Chicago. ISBN: 0-96434-403-3.', + links: [ + { + text: 'The Arts Club of Chicago: The Collection 1916-1996', + type: 'external', + site: + 'https://web.archive.org/web/20060918054331/http://www.press.uchicago.edu/cgi-bin/hfs.cgi/00/13456.ctl', + }, + ], + formatting: { italic: ['The Arts Club of Chicago: The Collection 1916-1996'] }, + }, + { + text: 'Wells, James M. (1992). The Arts Club of Chicago: Seventy-Fifth Anniversary.', + formatting: { italic: ['The Arts Club of Chicago: Seventy-Fifth Anniversary'] }, + }, + ], + }, + ], + link: [ + { + clue: undefined, + json: true, + expected: { + text: 'Near North Side', + type: 'internal', + page: 'Near North Side, Chicago', + }, + }, + { + clue: 1, + json: true, + expected: { text: 'community area', type: 'internal', page: 'Community areas of Chicago' }, + }, + ], + image: [ + { + clue: undefined, + json: true, + expected: { + file: '20070701 Arts Club of Chicago.JPG', + thumb: 'https://wikipedia.org/wiki/Special:Redirect/file/20070701_Arts_Club_of_Chicago.JPG?width=300', + url: 'https://wikipedia.org/wiki/Special:Redirect/file/20070701_Arts_Club_of_Chicago.JPG', + }, + }, + { + clue: 1, + json: true, + expected: { + file: 'File:20070711 Mies van der Rohe Staircase.JPG', + thumb: 'https://wikipedia.org/wiki/Special:Redirect/file/20070711_Mies_van_der_Rohe_Staircase.JPG?width=300', + url: 'https://wikipedia.org/wiki/Special:Redirect/file/20070711_Mies_van_der_Rohe_Staircase.JPG', + caption: 'Mies van der Rohe staircase and Alexander Calder mobile', + links: [], + }, + }, + ], + template: [ + { clue: undefined, expected: { date: 'August 2016', template: 'use mdy dates' } }, + { clue: 1, expected: { template: 'good article' } }, + ], + category: [ + { clue: undefined, expected: '1916 establishments in Illinois' }, + { clue: 1, expected: 'Museums in Chicago' }, + ], + } + Object.keys(singels).forEach((fn) => { + singels[fn].forEach((testCase) => { + const result = testCase.json ? doc[fn](testCase.clue).json() : doc[fn](testCase.clue) + t.deepEqual( + JSON.stringify(result), + JSON.stringify(testCase.expected), + 'expect doc.' + fn + '(' + testCase.clue + ') to equal ' + testCase.expected + ) + }) + }) + t.end() +}) diff --git a/tests/json.test.js b/tests/json.test.js index 608d70d6..e91da90e 100644 --- a/tests/json.test.js +++ b/tests/json.test.js @@ -53,7 +53,7 @@ test('section-output', (t) => { test('sentence-output', (t) => { let doc = readFile('royal_cinema') - let sen = doc.sentences(0) + let sen = doc.sentence() let data = sen.json() t.ok(data.text, 'text') t.ok(data.links, 'links') From 8792d57f27e849bb16291778cb73c36b8aac0cc8 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 13:16:39 -0500 Subject: [PATCH 031/117] add same singular/plural pattern to Sentence class --- scratch.js | 7 +- src/04-sentence/Sentence.js | 37 +++--- tests/Document.test.js | 221 ++++-------------------------------- tests/coord.test.js | 22 ++-- tests/domain.test.js | 8 +- tests/fmt.test.js | 10 +- tests/i18n.test.js | 4 +- tests/images.test.js | 16 +-- 8 files changed, 77 insertions(+), 248 deletions(-) diff --git a/scratch.js b/scratch.js index 718cf982..ebae34b0 100644 --- a/scratch.js +++ b/scratch.js @@ -33,5 +33,8 @@ let str = `{{redirect|Alhazen}} Born in [[Basra]], he spent most of his productive period in the [[Fatimid Caliphate|Fatimid]] capital of [[Cairo]] and earned his living authoring various treatises and tutoring members of the nobilities.According to [[Al-Qifti]]. {{Harvnb|O'Connor|Robertson|1999}}. ` -let doc = wtf(str) -console.log(doc.infobox(0)) +// let doc = wtf(str) +// console.log(doc.infobox(0)) + +let doc = wtf('') +console.log(doc.url()) diff --git a/src/04-sentence/Sentence.js b/src/04-sentence/Sentence.js index fadcc78a..17e59c36 100644 --- a/src/04-sentence/Sentence.js +++ b/src/04-sentence/Sentence.js @@ -11,9 +11,7 @@ const Sentence = function (data) { const methods = { links: function (n) { let arr = this.data.links || [] - if (typeof n === 'number') { - return arr[n] - } else if (typeof n === 'string') { + if (typeof n === 'string') { //grab a link like .links('Fortnight') n = n.charAt(0).toUpperCase() + n.substring(1) //titlecase it let link = arr.find((o) => o.page === n) @@ -23,9 +21,6 @@ const methods = { }, interwiki: function (n) { let arr = this.links().filter((l) => l.wiki !== undefined) - if (typeof n === 'number') { - return arr[n] - } return arr }, bolds: function (n) { @@ -33,9 +28,6 @@ const methods = { if (this.data && this.data.fmt && this.data.fmt.bold) { arr = this.data.fmt.bold || [] } - if (typeof n === 'number') { - return arr[n] - } return arr }, italics: function (n) { @@ -43,16 +35,10 @@ const methods = { if (this.data && this.data.fmt && this.data.fmt.italic) { arr = this.data.fmt.italic || [] } - if (typeof n === 'number') { - return arr[n] - } return arr }, dates: function (n) { let arr = [] - if (typeof n === 'number') { - return arr[n] - } return arr }, text: function (str) { @@ -70,8 +56,25 @@ const methods = { Object.keys(methods).forEach((k) => { Sentence.prototype[k] = methods[k] }) -Sentence.prototype.italic = Sentence.prototype.italics -Sentence.prototype.bold = Sentence.prototype.bolds + +// aliases +const singular = { + links: 'link', + bolds: 'bold', + italics: 'italic', + dates: 'date', +} +Object.keys(singular).forEach((k) => { + let sing = singular[k] + Sentence.prototype[sing] = function (clue) { + let arr = this[k](clue) + if (typeof clue === 'number') { + return arr[clue] + } + return arr[0] + } +}) + Sentence.prototype.plaintext = Sentence.prototype.text module.exports = Sentence diff --git a/tests/Document.test.js b/tests/Document.test.js index 1e2b5b58..1316350b 100644 --- a/tests/Document.test.js +++ b/tests/Document.test.js @@ -449,7 +449,7 @@ test('paragraphs - get - if the clue is a string (not number) return all the par let doc = wtf(str) const expected = [804, 66, 567, 474, 169, 159, 136, 167, 137, 451, 44, 17] t.deepEqual( - doc.paragraph('string').map((p) => p.text().length), + doc.paragraphs('string').map((p) => p.text().length), expected, 'the paragraphs in the wiki text' ) @@ -542,54 +542,18 @@ test('sentences - get - if the clue is a undefined / unset return the list of se test('sentences - get - if the clue is a number return the paragraph at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - t.equal(JSON.stringify(doc.sentences(1).text().length), '77', 'the sentences at index 1') + t.equal(JSON.stringify(doc.sentence(1).text().length), '77', 'the sentences at index 1') t.end() }) test('sentences - get - if the clue is a string (not number) return all the sentences', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - const expected = [ - 90, - 77, - 104, - 55, - 62, - 58, - 94, - 45, - 91, - 75, - 43, - 66, - 126, - 128, - 100, - 210, - 83, - 187, - 43, - 56, - 101, - 65, - 103, - 90, - 68, - 136, - 91, - 75, - 122, - 14, - 116, - 48, - 98, - 186, - 17, - ] - + const expected = + '90,77,104,55,62,58,94,45,91,75,43,66,126,128,100,210,83,187,43,56,101,65,103,90,68,136,91,75,122,14,116,48,98,186,17' t.deepEqual( doc.sentences('string').map((p) => p.text().length), - expected, + expected.split(','), 'the sentences in the wiki text' ) t.end() @@ -630,7 +594,7 @@ test('images - get - if the clue is a undefined / unset return the list of image test('images - get - if the clue is a number return the images at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - t.equal(JSON.stringify(doc.images(1).url().length), '89', 'the images at index 1') + t.equal(JSON.stringify(doc.image(1).url().length), '89', 'the images at index 1') t.end() }) @@ -682,7 +646,7 @@ test('links - get - return all links on the page', (t) => { test('links - get - if the clue is a number return the link at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - t.deepEqual(JSON.stringify(doc.links(1).json()).length, 71, 'the link at index 1') + t.deepEqual(JSON.stringify(doc.link(1).json()).length, 71, 'the link at index 1') t.end() }) @@ -725,7 +689,7 @@ test('interwiki - get - return all interwiki on the page', (t) => { test('interwiki - get - if the clue is a number return the interwiki at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Britt-Morgan.txt'), 'utf-8') let doc = wtf(str) - t.deepEqual(JSON.stringify(doc.interwiki(1).json()).length, 94, 'the interwiki at index 1') + t.deepEqual(JSON.stringify(doc.interwiki()[1].json()).length, 94, 'the interwiki at index 1') t.end() }) @@ -757,7 +721,7 @@ test('lists - get - return all lists on the page', (t) => { test('lists - get - if the clue is a number return the lists at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'anarchism.txt'), 'utf-8') let doc = wtf(str) - t.deepEqual(JSON.stringify(doc.lists(1).json()).length, 815, 'the lists at index 1') + t.deepEqual(JSON.stringify(doc.list(1).json()).length, 815, 'the lists at index 1') t.end() }) @@ -788,7 +752,7 @@ test('tables - get - return all tables', (t) => { test('tables - get - if the clue is a number return the tables at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - t.deepEqual(JSON.stringify(doc.tables(1).json()).length, 783, 'the tables at index 1') + t.deepEqual(JSON.stringify(doc.tables()[1].json()).length, 783, 'the tables at index 1') t.end() }) @@ -821,7 +785,7 @@ test('templates - get - if the clue is a number return the templates at that ind let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.templates(1).template.length, 12, 'the templates at index 1') + t.deepEqual(doc.template(1).template.length, 12, 'the templates at index 1') t.end() }) @@ -841,45 +805,10 @@ test('templates - get - if the clue is any other type then return all templates' test('references - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [ - 19, - 3, - 33, - 32, - 44, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 31, - 0, - 0, - 0, - 0, - 31, - 71, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 13, - 13, - 0, - 0, - 10, - 0, - 0, - 0, - ] + const expected = '19,3,33,32,44,0,0,0,0,0,0,0,31,0,0,0,0,31,71,0,0,0,0,0,0,0,13,13,0,0,10,0,0,0' t.deepEqual( doc.references().map((r) => r.title().length), - expected, + expected.split(','), 'returns all references' ) t.end() @@ -888,52 +817,17 @@ test('references - get - return all templates', (t) => { test('references - get - if the clue is a number return the references at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - t.deepEqual(doc.references(1).title().length, 3, 'the references at index 1') + t.deepEqual(doc.reference(1).title().length, 3, 'the references at index 1') t.end() }) test('references - get - if the clue is any other type then return all references', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [ - 19, - 3, - 33, - 32, - 44, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 31, - 0, - 0, - 0, - 0, - 31, - 71, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 13, - 13, - 0, - 0, - 10, - 0, - 0, - 0, - ] + const expected = '19,3,33,32,44,0,0,0,0,0,0,0,31,0,0,0,0,31,71,0,0,0,0,0,0,0,13,13,0,0,10,0,0,0' t.deepEqual( doc.references('string').map((re) => re.title().length), - expected, + expected.split(','), 'returns all references' ) t.end() @@ -943,45 +837,10 @@ test('references - get - if the clue is any other type then return all reference test('citations - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [ - 19, - 3, - 33, - 32, - 44, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 31, - 0, - 0, - 0, - 0, - 31, - 71, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 13, - 13, - 0, - 0, - 10, - 0, - 0, - 0, - ] + const expected = '19,3,33,32,44,0,0,0,0,0,0,0,31,0,0,0,0,31,71,0,0,0,0,0,0,0,13,13,0,0,10,0,0,0' t.deepEqual( doc.citations().map((c) => c.title().length), - expected, + expected.split(','), 'returns all citations' ) t.end() @@ -990,52 +849,17 @@ test('citations - get - return all templates', (t) => { test('citations - get - if the clue is a number return the citations at that index', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - t.deepEqual(doc.citations(1).title().length, 3, 'the citations at index 1') + t.deepEqual(doc.citation(1).title().length, 3, 'the citations at index 1') t.end() }) test('citations - get - if the clue is any other type then return all references', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) - const expected = [ - 19, - 3, - 33, - 32, - 44, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 31, - 0, - 0, - 0, - 0, - 31, - 71, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 13, - 13, - 0, - 0, - 10, - 0, - 0, - 0, - ] + const expected = '19,3,33,32,44,0,0,0,0,0,0,0,31,0,0,0,0,31,71,0,0,0,0,0,0,0,13,13,0,0,10,0,0,0' t.deepEqual( doc.citations('string').map((ci) => ci.title().length), - expected, + expected.split(','), 'returns all citations' ) t.end() @@ -1143,7 +967,7 @@ test('references - get - return all templates', (t) => { test('references - get - if the clue is a number return the references at that index', (t) => { let doc = wtf(infoboxPage) - t.deepEqual(JSON.stringify(doc.infoboxes(1).json()).length, 201, 'the references at index 1') + t.deepEqual(JSON.stringify(doc.infobox(1).json()).length, 201, 'the references at index 1') t.end() }) @@ -1225,4 +1049,3 @@ test('plurals / singular - all should exist', (t) => { }) t.end() }) - diff --git a/tests/coord.test.js b/tests/coord.test.js index 72b0d34a..33279724 100644 --- a/tests/coord.test.js +++ b/tests/coord.test.js @@ -8,53 +8,53 @@ test('coord formats', (t) => { t.equal(obj.lon, -87.913, 'fmt-1-lon') str = `hello {{Coord|44.112|N|87.913|W|display=title}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinate(0) t.equal(obj.lat, 44.112, 'fmt-2-lat') t.equal(obj.lon, -87.913, 'fmt-2-lon') str = `hello {{Coord|51|30|N|0|7|W|type:city}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinate() t.equal(obj.lat, 51.5, 'fmt-2-with-zero-lat') t.equal(obj.lon, -0.11667, 'fmt-2-with-zero-lon') str = `hello {{coord|9|26|44|S|160|01|13|E |display=title}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinate() t.equal(obj.lat, -9.44556, 'fmt-2-with-space-lat') t.equal(obj.lon, 160.02028, 'fmt-2-with-space-lon') //minutes/seconds str = `hello {{Coord|57|18|22|N|4|27|32|W|display=title}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinates()[0] t.equal(obj.lat, 57.30611, 'fmt-3-lat') t.equal(obj.lon, -4.45889, 'fmt-3-lon') // from the dutch wiki str = `hello {{Coor title dms|51|26|30|N|4|55|0|E|type:landmark}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinate() t.equal(obj.lat, 51.44167, 'fmt-4-lat') t.equal(obj.lon, 4.91667, 'fmt-4-lon') t.equal(obj.props.type, 'landmark', 'fmt-4-type') str = `hello {{Coor title dec|52.652222|5.066388|type:city_region:NL}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinate() t.equal(obj.lat, 52.65222, 'fmt-5-lat') t.equal(obj.lon, 5.06639, 'fmt-5-lon') t.equal(obj.props.type, 'city_region:NL', 'fmt-5-type') str = `hello {{Coor dms|29|58|41|N|31|07|53|E|type:landmark_region:EG_scale:5000}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinate() t.equal(obj.lat, 29.97806, 'fmt-6-lat') t.equal(obj.lon, 31.13139, 'fmt-6-lon') t.equal(obj.props.type, 'landmark_region:EG_scale:5000', 'fmt-6-type') str = `hello {{Coor dm|64|33|N|40|32|E|type:landmark}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinate() t.equal(obj.lat, 64.55, 'fmt-7-lat') t.equal(obj.lon, 40.53333, 'fmt-7-lon') t.equal(obj.props.type, 'landmark', 'fmt-7-type') str = `hello {{Coor dec|-10.341666666667|-179.9997222|scale:25000}} world` - obj = wtf(str).coordinates(0) + obj = wtf(str).coordinate() t.equal(obj.lat, -10.34167, 'fmt-8-lat') t.equal(obj.lon, -179.99972, 'fmt-8-lon') t.equal(obj.props.scale, '25000', 'fmt-8-type') @@ -64,7 +64,7 @@ test('coord formats', (t) => { //thank you to https://github.com/gmaclennan/parse-dms/blob/master/test/index.js test('Parse DMS', function (t) { const str = `hi {{coord|59|12|7.7|N|02|15|39.6|W}} there` - const obj = wtf(str).coordinates(0) + const obj = wtf(str).coordinate() const want = { lat: 59.20214, lon: -2.261, @@ -75,7 +75,7 @@ test('Parse DMS', function (t) { }) test('Parse DMS-missing', function (t) { const str = `hi {{coord|59|N|02|W}} there` - const obj = wtf(str).coordinates(0) + const obj = wtf(str).coordinate() const want = { lat: 59, lon: -2, diff --git a/tests/domain.test.js b/tests/domain.test.js index 0a19540d..caab1e1f 100644 --- a/tests/domain.test.js +++ b/tests/domain.test.js @@ -4,7 +4,7 @@ const wtf = require('./lib') test('domain - normal', (t) => { let str = `hello [[File:SpencerKelly.jpg]] world` let doc = wtf(str, { domain: 'cool.com' }) - let img = doc.images(0).url() + let img = doc.image(0).url() t.equal(img, 'https://cool.com/wiki/Special:Redirect/file/SpencerKelly.jpg', 'set new domain - normal') t.end() }) @@ -14,7 +14,7 @@ test('domain - xml gallery', (t) => { File:YYZ Aerial 2.jpg ` let doc = wtf(str, { domain: 'cool.com' }) - let img = doc.images(0).url() + let img = doc.image(0).url() t.equal(img, 'https://cool.com/wiki/Special:Redirect/file/YYZ_Aerial_2.jpg', 'set new domain - xml') t.end() }) @@ -29,7 +29,7 @@ test('domain - template gallery', (t) => { |alt1=Statue facing a city building with Greek columns and huge U.S. flag }}` let doc = wtf(str, { domain: 'verycool.com' }) - let img = doc.images(0).url() + let img = doc.image().url() t.equal(img, 'https://verycool.com/wiki/Special:Redirect/file/VeryCool.JPG', 'set new domain - template') t.end() }) @@ -40,7 +40,7 @@ test('domain - infobox', (t) => { | image = Cool.jpg }}` let doc = wtf(str, { domain: 'cool.com' }) - let img = doc.images(0).url() + let img = doc.image(0).url() t.equal(img, 'https://cool.com/wiki/Special:Redirect/file/Cool.jpg', 'set new domain - infobox') img = doc.infobox().image().url() diff --git a/tests/fmt.test.js b/tests/fmt.test.js index 22d02f6d..d1741fa9 100644 --- a/tests/fmt.test.js +++ b/tests/fmt.test.js @@ -5,12 +5,12 @@ test('bold/italics', (t) => { const str = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]]. She is '''''very''''' good` - let sentence = wtf(str).sentences(0) + let sentence = wtf(str).sentence(0) t.deepEqual(sentence.bold(), ['K. Nicole Mitchell'], 'one bold') t.deepEqual(sentence.italic(), ['currently'], 'one italic') t.equal(sentence.links().length, 1, 'one link') - sentence = wtf(str).sentences(1) + sentence = wtf(str).sentence(1) t.deepEqual(sentence.bold(), ['very'], 'two bold') t.deepEqual(sentence.italic(), ['very'], 'two italic') t.end() @@ -18,7 +18,7 @@ test('bold/italics', (t) => { test('inline mixquotes test', (t) => { const str = `this is ''''four'''' and this is '''''five'''''` - const sentence = wtf(str).sentences(0) + const sentence = wtf(str).sentences()[0] // t.deepEqual(sentence.fmt.bold, ['five', '\'four\''], 'two bold'); t.deepEqual(sentence.italic(), ['five'], 'five is italic') t.end() @@ -42,7 +42,7 @@ test('inline mixquotes test', (t) => { test('links-with-ticks', (t) => { const doc = wtf(`hello '''[[Palme d'Or]]''' world`) t.equal(doc.text(), `hello Palme d'Or world`, 'text') - t.equal(doc.links(0).page(), `Palme d'Or`, 'link') - t.equal(doc.sentences(0).data.fmt.bold[0], `Palme d'Or`, 'fmt-bold') + t.equal(doc.link(0).page(), `Palme d'Or`, 'link') + t.equal(doc.sentence(0).data.fmt.bold[0], `Palme d'Or`, 'fmt-bold') t.end() }) diff --git a/tests/i18n.test.js b/tests/i18n.test.js index 044e016c..237e175a 100644 --- a/tests/i18n.test.js +++ b/tests/i18n.test.js @@ -6,7 +6,7 @@ test('nihongo templates templates', (t) => { let doc = wtf(str) t.equal(doc.text(), 'hello Tokyo Tower (東京タワー) world', 'sub english word') t.equal(doc.templates().length, 1, 'have template') - t.equal(doc.templates(0).romaji, 'Tōkyō tawā', 'have translation') + t.equal(doc.template(0).romaji, 'Tōkyō tawā', 'have translation') str = `In Japanese, {{Nihongo2|虚無僧}} reads ''komusō''.` doc = wtf(str) @@ -20,7 +20,7 @@ test('nihongo templates templates', (t) => { test('hindi image', (t) => { const str = `[[चित्र:Gandhis ashes.jpg|thumb|left|[[राज घाट और अन्य स्मारक|राज घाट]] ([[:en:Raj Ghat and other memorials|Raj Ghat]]):आगा खान पैलेस में गांधी की अस्थियां (पुणे, भारत) .]]` - const img = wtf(str).images(0).json() + const img = wtf(str).image(0).json() t.equal(img.file, 'चित्र:Gandhis ashes.jpg') t.end() }) diff --git a/tests/images.test.js b/tests/images.test.js index eab84742..25a21264 100644 --- a/tests/images.test.js +++ b/tests/images.test.js @@ -19,11 +19,11 @@ File:Anders Zorn - Ateljéidyll.jpg|G''Studio Idyll'', 1918 The paintings have the freedom and energy of sketches, using warm and cool light and shade areas with contrasting areas of warm and cool tones, and an understanding of colour contrasts and reflected lights. Zorn's accomplished use of the brush allows the forms and the texture of the painted subject to reflect and transmit light. In addition to portraits and nudes, Zorn excelled in realistic depictions of water, as well as scenes depicting rustic life and customs. ` const doc = wtf(str) - t.deepEqual(doc.sections('paintings').templates('gallery').length, 1, 'section-has-gallery') - const templ = doc.templates(0) + t.deepEqual(doc.section('paintings').templates('gallery').length, 1, 'section-has-gallery') + const templ = doc.template(0) t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 5, '5 images') - t.deepEqual(templ.images[0].caption.links(0).page(), 'Freyja', 'image has caption') + t.deepEqual(templ.images[0].caption.link().page(), 'Freyja', 'image has caption') t.deepEqual(doc.images().length, 5, 'images() finds gallery') t.end() }) @@ -43,7 +43,7 @@ test('gallery-tag-2', (t) => { foo`) - const templ = doc.templates(0) + const templ = doc.template() t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 8, '8 images') t.deepEqual(templ.images[0].file, 'Culex-female.jpg', 'got filename') @@ -57,7 +57,7 @@ test('gallery-template', (t) => { |File:Kurmi threshing.jpg|Another ethnographic print from 1916 showing a Kurmi family employing its beasts of burden to thresh wheat. |File:Kurmi winnowing.jpg|A third print from the same collection showing the Kurmi family winnowing. }} ` - const templ = wtf(str).templates(0) + const templ = wtf(str).template() t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 4, 'has 4 images') t.end() @@ -66,7 +66,7 @@ test('gallery-template', (t) => { test('from-infobox', (t) => { let doc = readFile('jodie_emery') t.equal( - doc.infobox(0).images(0).thumb(), + doc.infobox(0).image(0).thumb(), 'https://wikipedia.org/wiki/Special:Redirect/file/Marc_Emery_and_Jodie_Emery.JPG?width=300', 'has correct thumbnail' ) @@ -75,7 +75,7 @@ test('from-infobox', (t) => { test('img-alt', (t) => { let str = `[[File:Wikipedesketch1.png|thumb|alt=A cartoon centipede detailed description.|The Wikipede edits ''[[Myriapoda]]''.]]` - let img = wtf(str).images(0).json() + let img = wtf(str).image().json() t.equal(img.file, 'File:Wikipedesketch1.png', 'file') t.equal(img.thumb, 'https://wikipedia.org/wiki/Special:Redirect/file/Wikipedesketch1.png?width=300', 'thumb') t.equal(img.url, 'https://wikipedia.org/wiki/Special:Redirect/file/Wikipedesketch1.png', 'image') @@ -87,7 +87,7 @@ test('img-alt', (t) => { test('parsed-captions', (t) => { let str = `[[File:Volkswagen W12.jpg|thumb|upright|[[Volkswagen Group]] W12 engine from the [[Volkswagen Phaeton|Volkswagen Phaeton W12]]]]` - let img = wtf(str).images(0).json() + let img = wtf(str).image().json() t.equal(img.caption, 'Volkswagen Group W12 engine from the Volkswagen Phaeton W12', 'caption') t.end() }) From 3e362847fec23f199d41b1b0415ab30a4abde922 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 13:23:03 -0500 Subject: [PATCH 032/117] repeat singular/plural pattern for paragraph, section --- src/02-section/Section.js | 57 ++++++++++++++++------------------- src/03-paragraph/Paragraph.js | 40 +++++++++++++----------- 2 files changed, 48 insertions(+), 49 deletions(-) diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 7a756a66..239761e1 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -18,9 +18,6 @@ const defaults = { infoboxes: true, } -/** - * @class - */ class Section { /** * the stuff between headings - 'History' section for example @@ -139,21 +136,6 @@ class Section { return arr || [] } - /** - * returns all paragraphs in the section - * if an clue is provided then it returns the paragraph at clue-th index - * - * @param {number} [clue] the clue for selecting the paragraph - * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph - */ - paragraph(clue) { - let arr = this._paragraphs || [] - if (typeof clue === 'number') { - return arr[clue] - } - return arr[0] - } - /** * returns all links in the section * if an clue is provided and it is a number then it returns the link at clue-th index @@ -342,17 +324,6 @@ class Section { return arr } - /** - * returns all references in the section - * if an clue is provided then it returns the reference at clue-th index - * - * @param {number} [clue] the clue for selecting the reference - * @returns {object | object[]} all references in an array or the clue-th reference - */ - citations(clue) { - return this.references(clue) - } - //transformations /** * Removes the section from the document @@ -549,7 +520,6 @@ class Section { */ text(options) { options = setDefaults(options, defaults) - return this.paragraphs() .map((p) => p.text(options)) .join('\n\n') @@ -566,5 +536,30 @@ class Section { return toJSON(this, options) } } - +Section.prototype.citations = Section.prototype.references + +// aliases +const singular = { + sentences: 'sentence', + paragraphs: 'paragraph', + links: 'link', + tables: 'table', + templates: 'template', + infoboxes: 'infobox', + coordinates: 'coordinate', + lists: 'list', + images: 'image', + references: 'reference', + citations: 'reference', +} +Object.keys(singular).forEach((k) => { + let sing = singular[k] + Section.prototype[sing] = function (clue) { + let arr = this[k](clue) + if (typeof clue === 'number') { + return arr[clue] + } + return arr[0] + } +}) module.exports = Section diff --git a/src/03-paragraph/Paragraph.js b/src/03-paragraph/Paragraph.js index 97a4f661..3ac341cb 100644 --- a/src/03-paragraph/Paragraph.js +++ b/src/03-paragraph/Paragraph.js @@ -15,27 +15,15 @@ const Paragraph = function (data) { const methods = { sentences: function (num) { - if (typeof num === 'number') { - return this.data.sentences[num] - } return this.data.sentences || [] }, references: function (num) { - if (typeof num === 'number') { - return this.data.references[num] - } return this.data.references }, lists: function (num) { - if (typeof num === 'number') { - return this.data.lists[num] - } return this.data.lists }, images(num) { - if (typeof num === 'number') { - return this.data.images[num] - } return this.data.images || [] }, links: function (n) { @@ -43,9 +31,7 @@ const methods = { this.sentences().forEach((s) => { arr = arr.concat(s.links(n)) }) - if (typeof n === 'number') { - return arr[n] - } else if (typeof n === 'string') { + if (typeof n === 'string') { //grab a specific link like .links('Fortnight') n = n.charAt(0).toUpperCase() + n.substring(1) //titlecase it let link = arr.find((o) => o.page() === n) @@ -58,9 +44,6 @@ const methods = { this.sentences().forEach((s) => { arr = arr.concat(s.interwiki()) }) - if (typeof num === 'number') { - return arr[num] - } return arr || [] }, text: function (options) { @@ -82,4 +65,25 @@ methods.citations = methods.references Object.keys(methods).forEach((k) => { Paragraph.prototype[k] = methods[k] }) + +// aliases +const singular = { + sentences: 'sentence', + references: 'reference', + citation: 'citations', + lists: 'list', + images: 'image', + links: 'link', +} +Object.keys(singular).forEach((k) => { + let sing = singular[k] + Paragraph.prototype[sing] = function (clue) { + let arr = this[k](clue) + if (typeof clue === 'number') { + return arr[clue] + } + return arr[0] + } +}) + module.exports = Paragraph From 0b4650dd58d82a2cc3c2b179984055a48b998c01 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 13:44:48 -0500 Subject: [PATCH 033/117] more refactoring of tests to support plural/singular refactor --- README.md | 2 +- plugins/latex/tests/latex.test.js | 44 +++++++---------------- plugins/summary/src/index.js | 2 +- plugins/summary/tests/stress.test.js | 2 +- scratch.js | 32 ++++++----------- src/01-document/Document.js | 4 +-- tests/Section.test.js | 4 +-- tests/api.test.js | 20 +++++------ tests/currencies.test.js | 2 +- tests/date.test.js | 2 +- tests/html.test.js | 4 +-- tests/links.test.js | 26 +++++++------- tests/lists.test.js | 8 ++--- tests/math.test.js | 10 +++--- tests/misc.test.js | 4 +-- tests/more-templates.test.js | 19 +++++----- tests/page.test.js | 54 ++++++++++++++-------------- tests/paragraphs.test.js | 6 ++-- tests/redirect.test.js | 4 +-- tests/reference.test.js | 4 +-- tests/sentences.test.js | 2 +- tests/start-end.test.js | 2 +- tests/stress.test.js | 6 ++-- tests/table.test.js | 6 ++-- tests/template.test.js | 20 +++++------ tests/tracklist.test.js | 2 +- tests/unit.test.js | 4 +-- 27 files changed, 131 insertions(+), 164 deletions(-) diff --git a/README.md b/README.md index a5e19904..4de30b8d 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ doc.images(0).json() // { file: 'Image:Duveneck Whistling Boy.jpg', url: 'https://commons.wiki...' } // json for a particular section: -doc.sections('see also').links(0).json() +doc.sections('see also').link().json() // { page: 'Slide Whistle' } ``` diff --git a/plugins/latex/tests/latex.test.js b/plugins/latex/tests/latex.test.js index 8ef9edff..013acc2f 100644 --- a/plugins/latex/tests/latex.test.js +++ b/plugins/latex/tests/latex.test.js @@ -1,73 +1,55 @@ const test = require('tape') const wtf = require('./_lib') -const tidy = str => { +const tidy = (str) => { str = str.replace(/\s[\s]+/g, ' ') str = str.replace(/\n/g, '') str = str.replace(/ >/g, '>') return str } -test('basic-latex', t => { - let have = wtf('that cat is [[a]] cool dude') - .sentences(0) - .latex() +test('basic-latex', (t) => { + let have = wtf('that cat is [[a]] cool dude').sentence().latex() let want = 'that cat is \\href{./a}{a} cool dude' t.equal(tidy(have), tidy(want), 'link') - have = wtf('that cat is [[ab cd]] cool dude') - .sentences(0) - .latex() + have = wtf('that cat is [[ab cd]] cool dude').sentence().latex() want = 'that cat is \\href{./ab_cd}{ab cd} cool dude' t.equal(tidy(have), tidy(want), 'link-blank') - have = wtf('that cat is [http://www.wikiversity.org ab cd] cool dude') - .sentences(0) - .latex() + have = wtf('that cat is [http://www.wikiversity.org ab cd] cool dude').sentence().latex() want = 'that cat is \\href{http://www.wikiversity.org}{ab cd} cool dude' t.equal(tidy(have), tidy(want), 'link-external') //Image simple - have = wtf(`My image [File:my_image.png]`) - .images(0) - .latex() + have = wtf(`My image [File:my_image.png]`).images(0).latex() want = '\\begin{figure}\n\\includegraphics[width=\\linewidth]{https://wikipedia.org/wiki/Special:Redirect/file/My_image.png?width=300}\n\\caption{my image}\n\\end{figure}' t.equal(tidy(have), tidy(want), 'image') t.end() }) -test('latex-formatting', t => { +test('latex-formatting', (t) => { //1 tick - let have = wtf(`i 'think' so`) - .sentences(0) - .latex() + let have = wtf(`i 'think' so`).sentence().latex() let want = `i 'think' so` t.equal(tidy(have), tidy(want), 'one-tick') //2 ticks - have = wtf(`i ''think'' so`) - .sentences(0) - .latex() + have = wtf(`i ''think'' so`).sentence().latex() want = 'i \\textit{think} so' t.equal(tidy(have), tidy(want), 'italic') //3 ticks - have = wtf(`i '''think''' so`) - .sentences(0) - .latex() + have = wtf(`i '''think''' so`).sentence().latex() want = 'i \\textbf{think} so' t.equal(tidy(have), tidy(want), 'bold') //4 ticks - have = wtf(`i ''''think'''' so`) - .sentences(0) - .latex() - want = 'i \\textbf{\'think\'} so' + have = wtf(`i ''''think'''' so`).sentence().latex() + want = "i \\textbf{'think'} so" t.equal(tidy(have), tidy(want), 'four-tick') //5 ticks - have = wtf(`i '''''think''''' so`) - .sentences(0) - .latex() + have = wtf(`i '''''think''''' so`).sentence().latex() want = 'i \\textbf{\\textit{think}} so' t.equal(tidy(have), tidy(want), 'five-tick') t.end() diff --git a/plugins/summary/src/index.js b/plugins/summary/src/index.js index c250607c..875b2a77 100644 --- a/plugins/summary/src/index.js +++ b/plugins/summary/src/index.js @@ -51,7 +51,7 @@ const plugin = function (models) { if (this.sentences(1)) { txt = this.sentences(1).text() } else { - txt = this.sentences(0).text() + txt = this.sentence(0).text() } let doc = nlp(txt) let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase() diff --git a/plugins/summary/tests/stress.test.js b/plugins/summary/tests/stress.test.js index 9eeda3fd..01a374c1 100644 --- a/plugins/summary/tests/stress.test.js +++ b/plugins/summary/tests/stress.test.js @@ -8,7 +8,7 @@ const path = require('path') // console.log(cat, '\n\n') // wtf.parseCategory(cat).then((res) => { // res.docs.forEach((doc) => { -// console.log(doc.sentences(0).text()) +// console.log(doc.sentence().text()) // // console.log(padEnd(doc.title(), 26) + ' ' + doc.summary({ article: false }) || '-') // }) // }) diff --git a/scratch.js b/scratch.js index ebae34b0..c4c3260a 100644 --- a/scratch.js +++ b/scratch.js @@ -10,31 +10,19 @@ wtf.extend(require('./plugins/api/src')) // console.log(JSON.stringify(arr, null, 2)) // }) -let str = `{{redirect|Alhazen}} -{{bots|deny=Citation bot}} -{{Infobox scientist -| name = Hasan Ibn al-Haytham
(Alhazen) -|image = -|caption = -| birth_date = {{nowrap |{{birth-date|0965|{{circa}} 965}} {{smaller|(c. 354 [[Islamic calendar|AH]]){{Harvnb|Falco|2007}}.}} }} -| birth_place = [[Basra]], [[medieval Iraq|Iraq]] -| death_date = {{nowrap |{{death-date|1040|{{circa}} 1040}} {{smaller|(c. 430 AH){{Harvnb|Rosenthal|1960–1961}}.}} }} -| death_place = [[Cairo]], [[Fatimid Caliphate|Egypt]] -| residence = {{hlist |[[Basra]] |[[Cairo]]}} -| fields = {{hlist |[[Optics]] |[[Astronomy]] |[[Mathematics]]}} -| workplaces = -|alma_mater = -|notable_students = -| influences = [[Aristotle]], [[Euclid]], [[Ptolemy]], [[Galen]], [[Banū Mūsā]], [[Thābit ibn Qurra]], [[Al-Kindi]], [[Ibn Sahl (mathematician)|Ibn Sahl]], [[Abū Sahl al-Qūhī]] -| influenced = [[Omar Khayyam]], [[Taqi ad-Din Muhammad ibn Ma'ruf]], [[Kamāl al-Dīn al-Fārisī]], [[Averroes]], [[Al-Khazini]], [[John Peckham]], [[Witelo]], [[Roger Bacon]],{{Cite book|url=https://books.google.co.in/books?id=mhLVHR5QAQkC&printsec=frontcover#v=onepage&q&f=false|title=Ptolemy's Theory of Visual Perception: An English Translation of the Optics|last=A. Mark Smith|publisher=American Philosophical Society|year=1996|isbn=|location=|pages=58}} [[Kepler]] -| known_for = ''[[Book of Optics]]'', ''[[Ibn al-Haytham#Doubts Concerning Ptolemy|Doubts Concerning Ptolemy]]'', [[Alhazen's problem]], [[Analysis]],{{Harvnb|O'Connor|Robertson|1999}}. [[Catoptrics]],{{Harvnb|El-Bizri|2010|p=11}}: "Ibn al-Haytham's groundbreaking studies in optics, including his research in catoptrics and dioptrics (respectively the sciences investigating the principles and instruments pertaining to the reflection and refraction of light), were principally gathered in his monumental opus: Kitåb al-manåóir (The Optics; De Aspectibus or Perspectivae; composed between 1028 CE and 1038 CE)." [[Horopter]], [[Moon illusion]], [[Experiment|experimental science]], [[scientific method]]ology,{{Harvnb|Rooney|2012|p=39}}: "As a rigorous experimental physicist, he is sometimes credited with inventing the scientific method." [[visual perception]], [[empirical theory of perception]], [[Comparative psychology|Animal psychology]]{{Harvnb|Baker|2012|p=449}}: "As shown earlier, Ibn al-Haytham was among the first scholars to experiment with animal psychology. -| footnotes = -}} +let str = ` +'''Ibn al-Haytham''' ([[Latinization of names|latinized]] '''Alhazen'''also ''Alhacen'', ''Avennathan'', ''Avenetan'' (etc.); the identity of "Alhazen" with Ibn al-Haytham al-Basri "was identified towards the end of the 19th century". ({{harvnb|Vernet|1996|p=788}}) full name ''{{transl|ar|ALA|Abū ʿAlī al-Ḥasan ibn al-Ḥasan ibn al-Haytham}}'' {{lang|ar|أبو علي، الحسن بن الحسن بن الهيثم}}; {{c.|lk=no|965|1040}}) was a [[Mathematics in medieval Islam|mathematician]], [[Astronomy in the medieval Islamic world|astronomer]], and [[Physics in the medieval Islamic world|physicist]] of the [[Islamic Golden Age]].For the description of his main fields, see e.g. {{harvnb|Vernet|1996|p=788}} ("He is one of the principal Arab mathematicians and, without any doubt, the best physicist.") {{Harvnb|Sabra|2008}}, {{Harvnb|Kalin|Ayduz|Dagli|2009|p=}} ("Ibn al-Ḥaytam was an eminent eleventh-century Arab optician, geometer, arithmetician, algebraist, astronomer, and engineer."), {{Harvnb|Dallal|1999|p=}} ("Ibn al-Haytham (d. 1039), known in the West as Alhazan, was a leading Arab mathematician, astronomer, and physicist. His optical compendium, Kitab al-Manazir, is the greatest medieval work on optics.") He made significant contributions to the principles of [[optics]] and [[visual perception]] in particular, his most influential work being his ''[[Book of Optics|Kitāb al-Manāẓir]]'' (كتاب المناظر, "Book of Optics"), written during 1011–1021, survived in the Latin edition.{{Harvnb|Selin|2008|p=}}: "The three most recognizable Islamic contributors to meteorology were: the Alexandrian mathematician/ astronomer Ibn al-Haytham (Alhazen 965-1039), the Arab-speaking Persian physician Ibn Sina (Avicenna 980-1037), and the Spanish Moorish physician/jurist Ibn Rushd (Averroes; 1126-1198)." He has been dubbed the "father of modern optics" by the [[UNESCO]]. {{Cite journal|last=|first=|date=1976|title=Impact of Science on Society|url=https://books.google.co.uk/books?id=4YE3AAAAMAAJ&q=%22Father+of+Modern+Optics%22&dq=%22Father+of+Modern+Optics%22&hl=en&sa=X&ei=RuhgVJCUIcHksATBo4CoDA|journal=UNESCO|volume= 26-27|pages=page-140|via=}}. +{{Cite web|url=http://www.light2015.org/Home/ScienceStories/1000-Years-of-Arabic-Optics.html|title=International Year of Light - Ibn Al-Haytham and the Legacy of Arabic Optics|website=www.light2015.org|language=en|access-date=2017-10-09}}. +{{Cite web|url=http://en.unesco.org/news/international-year-light-ibn-al-haytham-pioneer-modern-optics-celebrated-unesco|title=International Year of Light: Ibn al Haytham, pioneer of modern optics celebrated at UNESCO|website=UNESCO|language=en|access-date=2017-10-09}}. Specifically, he was the first to explain that vision occurs when light bounces on an object and then is directed to one's eyes. {{cite book|ref=harv|last=Adamson|first=Peter|title=Philosophy in the Islamic World: A History of Philosophy Without Any Gaps|url=https://books.google.com/books?id=KEpRDAAAQBAJ|date=7 July 2016|publisher=Oxford University Press|isbn=978-0-19-957749-1|p=77}} He was also an early proponent of the concept that a hypothesis must be proved by experiments based on confirmable procedures or mathematical evidence, as such anticipating the [[scientific method]].{{Harvnb|Ackerman|1991}}.[[Nomanul Haq|Haq, Syed]] (2009). "Science in Islam". Oxford Dictionary of the Middle Ages. {{ISSN|1703-7603}}. Retrieved 2014-10-22.[[G. J. Toomer]]. [https://www.jstor.org/stable/228328?pg=464 Review on JSTOR, Toomer's 1964 review of Matthias Schramm (1963) ''Ibn Al-Haythams Weg Zur Physik''] Toomer p.464: "Schramm sums up [Ibn Al-Haytham's] achievement in the development of scientific method." +{{cite web|url=http://www.light2015.org/Home/ScienceStories/1000-Years-of-Arabic-Optics.html|title=International Year of Light - Ibn Al-Haytham and the Legacy of Arabic Optics|publisher=}} +{{Cite news|url=http://news.bbc.co.uk/2/hi/science/nature/7810846.stm|work=BBC News|title=The 'first true scientist'|author=Al-Khalili, Jim|date=4 January 2009|accessdate=24 September 2013}} +{{Cite journal|last=Gorini|first=Rosanna|title=Al-Haytham the man of experience. First steps in the science of vision|url=http://www.ishim.net/ishimj/4/10.pdf|journal=Journal of the International Society for the History of Islamic Medicine|volume=2|issue=4|pages=53–55|date=October 2003|format=PDF|accessdate=2008-09-25|ref=harv}} Born in [[Basra]], he spent most of his productive period in the [[Fatimid Caliphate|Fatimid]] capital of [[Cairo]] and earned his living authoring various treatises and tutoring members of the nobilities.According to [[Al-Qifti]]. {{Harvnb|O'Connor|Robertson|1999}}. ` // let doc = wtf(str) // console.log(doc.infobox(0)) -let doc = wtf('') -console.log(doc.url()) +let doc = wtf(str) +// console.log(doc.sentence().bolds()) +console.log(doc.title()) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index 186fa39f..a0ee71f3 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -94,9 +94,9 @@ class Document { } //guess the title of this page from first sentence bolding let guess = null - let sen = this.sentences()[0] + let sen = this.sentence() if (sen) { - guess = sen.bolds(0) + guess = sen.bold() } return guess } diff --git a/tests/Section.test.js b/tests/Section.test.js index 6aee15a1..51ebed32 100644 --- a/tests/Section.test.js +++ b/tests/Section.test.js @@ -202,7 +202,7 @@ test('infoboxes - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - t.equal(JSON.stringify(sec.infoboxes(0)).length, 33, 'the infoboxes should equal the expected') + t.equal(JSON.stringify(sec..infobox()).length, 33, 'the infoboxes should equal the expected') t.end() }) @@ -253,7 +253,7 @@ test('lists - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section('See also') - t.equal(JSON.stringify(sec.lists(0).lines()).length, 22, 'the lists should equal the expected') + t.equal(JSON.stringify(sec.list().lines()).length, 22, 'the lists should equal the expected') t.end() }) diff --git a/tests/api.test.js b/tests/api.test.js index 50598960..10f08774 100644 --- a/tests/api.test.js +++ b/tests/api.test.js @@ -63,10 +63,10 @@ test('Sentence-methods-do-not-throw', (t) => { test('Reference-methods-do-not-throw', (t) => { pages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.reference() + const ref = doc.reference() docs.Reference.forEach((obj) => { const desc = obj.name + ' - ' + page - sen[obj.name]() + ref[obj.name]() t.ok(true, desc) }) }) @@ -76,10 +76,10 @@ test('Reference-methods-do-not-throw', (t) => { test('Image-methods-do-not-throw', (t) => { pages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.image() + const img = doc.image() docs.Image.forEach((obj) => { const desc = obj.name + ' - ' + page - sen[obj.name]() + img[obj.name]() t.ok(true, desc) }) }) @@ -99,10 +99,10 @@ test('Infobox-methods-do-not-throw', (t) => { ] mypages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.infobox() + const inf = doc.infobox() docs.Infobox.forEach((obj) => { const desc = obj.name + ' - ' + page - sen[obj.name]() + inf[obj.name]() t.ok(true, desc) }) }) @@ -113,10 +113,10 @@ test('List-methods-do-not-throw', (t) => { const mypages = ['al_Haytham', 'Mozilla-Firefox', 'toronto', 'toronto_star', 'jodie_emery', 'Allen-R.-Morris'] mypages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.list() + const list = doc.list() docs.List.forEach((obj) => { const desc = obj.name + ' - ' + page - sen[obj.name]() + list[obj.name]() t.ok(true, desc) }) }) @@ -127,10 +127,10 @@ test('Table-methods-do-not-throw', (t) => { const mypages = ['Mozilla-Firefox', 'toronto', 'Allen-R.-Morris', 'bluejays'] mypages.forEach((page) => { const doc = wtf(readFile(page)) - const sen = doc.table() + const table = doc.table() docs.Table.forEach((obj) => { const desc = obj.name + ' - ' + page - sen[obj.name]() + table[obj.name]() t.ok(true, desc) }) }) diff --git a/tests/currencies.test.js b/tests/currencies.test.js index b84ca68b..80b6b773 100644 --- a/tests/currencies.test.js +++ b/tests/currencies.test.js @@ -11,7 +11,7 @@ test('currency-templates', function (t) { doc = wtf('{{Currency|1,000|JPY}} world') t.equal(doc.text(), '¥1,000 world', 'currency yen') t.equal(doc.templates().length, 1, 'got a template') - t.equal(doc.templates(0).amount, '1,000', 'got template amount') + t.equal(doc.template().amount, '1,000', 'got template amount') doc = wtf('{{Currency|1000|USD}}') t.equal(doc.text(), 'US$1000', 'currency named parameters') diff --git a/tests/date.test.js b/tests/date.test.js index 42f711dc..7ace9d93 100644 --- a/tests/date.test.js +++ b/tests/date.test.js @@ -92,7 +92,7 @@ test('hyphenated language-date templates', (t) => { }) // test('date-data', t => { -// const obj = wtf('hello {{start date|1993|02|24|08|30}} world').sentences(0); +// const obj = wtf('hello {{start date|1993|02|24|08|30}} world').sentence(); // const date = obj.dates(0); // t.equal(date.year, 1993, 'got-year'); // t.equal(date.month, 2, 'got-month'); diff --git a/tests/html.test.js b/tests/html.test.js index 9eacf64b..415391d0 100644 --- a/tests/html.test.js +++ b/tests/html.test.js @@ -24,12 +24,12 @@ test('support bold and italics', (t) => { test('support sub and sup', (t) => { let doc = wtf(`hi world there`) t.equal(doc.text(), 'hi world there') - let tmpl = doc.templates(0) || {} + let tmpl = doc.template() || {} t.equal(tmpl.text, 'world', 'got sub template') doc = wtf(`hi world there`) t.equal(doc.text(), 'hi world there') - tmpl = doc.templates(0) || {} + tmpl = doc.template() || {} t.equal(tmpl.text, 'world', 'got sup template') t.end() }) diff --git a/tests/links.test.js b/tests/links.test.js index 9ca12503..bb23dcb6 100644 --- a/tests/links.test.js +++ b/tests/links.test.js @@ -43,25 +43,25 @@ after now test('anchor-links', (t) => { let str = `[[Doug Ford#Personal Life]]` - let link = wtf(str).links(0) + let link = wtf(str).link(0) t.equal(link.page(), 'Doug Ford', 'page1') t.equal(link.text(), undefined, 'text1') t.equal(link.anchor(), 'Personal Life', 'anchor1') str = `[[Toronto_Blue_Jays#Problems|Tranno J birds]]` const doc = wtf(str) - link = doc.links(0) + link = doc.link(0) t.equal(link.page(), 'Toronto_Blue_Jays', 'page2') t.equal(link.text(), 'Tranno J birds', 'text2') t.equal(link.anchor(), 'Problems', 'anchor2') // t.equal( - // doc.sentences(0).html(), + // doc.sentence().html(), // 'Tranno J birds', // 'html-anchor' // ) // t.equal( - // doc.sentences(0).markdown(), + // doc.sentence().markdown(), // '[Tranno J birds](./Toronto_Blue_Jays#Problems)', // 'markdown-anchor' // ) @@ -70,15 +70,15 @@ test('anchor-links', (t) => { }) test('title-case-links', (t) => { - t.equal(wtf('[[john]]').links(0).page(), 'john', 'page') - t.equal(wtf('[[john]]').links(0).text(), 'john', 'lowercase text') + t.equal(wtf('[[john]]').link(0).page(), 'john', 'page') + t.equal(wtf('[[john]]').link(0).text(), 'john', 'lowercase text') - t.equal(wtf('[[John smith]]').links(0).page(), 'John smith', 'already titlecased') - t.equal(wtf('[[John]]').links(0).text(), undefined, 'no text stored when already titlecase') + t.equal(wtf('[[John smith]]').link().page(), 'John smith', 'already titlecased') + t.equal(wtf('[[John]]').link().text(), undefined, 'no text stored when already titlecase') - t.equal(wtf('[[john|his son]]').links(0).text(), 'his son', 'lowercase given text') - t.equal(wtf('[[john|his son]]').links(0).page(), 'john', 'titlecase given page') - t.equal(wtf('[[John|his son]]').links(0).page(), 'John', 'already titlecased given page') + t.equal(wtf('[[john|his son]]').link().text(), 'his son', 'lowercase given text') + t.equal(wtf('[[john|his son]]').link().page(), 'john', 'titlecase given page') + t.equal(wtf('[[John|his son]]').link().page(), 'John', 'already titlecased given page') t.end() }) @@ -86,7 +86,7 @@ test('tricksy-links', (t) => { const doc = wtf(`[[US]]9999.2`) t.equal(doc.text(), 'US9999.2', 'link-nospace') // const doc = wtf('then [[John Entwistle|John [Entwistle]]] and I'); - // t.equal(doc.links(0).page, 'John Entwistle', 'page without bracket'); - // t.equal(doc.links(0).text, 'John [Entwistle]', 'text with bracket'); + // t.equal(doc.link().page, 'John Entwistle', 'page without bracket'); + // t.equal(doc.link().text, 'John [Entwistle]', 'text with bracket'); t.end() }) diff --git a/tests/lists.test.js b/tests/lists.test.js index 78e11c5f..3cf68bab 100644 --- a/tests/lists.test.js +++ b/tests/lists.test.js @@ -49,7 +49,7 @@ test('collapsible list', function (t) { | [[Switzerland]] }}` let doc = wtf(str) - let tmpl = doc.templates(0) || {} + let tmpl = doc.template() || {} t.equal(tmpl.title, 'European Free Trade Association members', 'got title 1') t.equal(tmpl.list.length, 4, 'got list') t.equal(tmpl.list[1], 'Liechtenstein', 'got list member') @@ -65,7 +65,7 @@ test('collapsible list', function (t) { |1=[[Dean Allison]] |2=[[Chris Charlton]] |3=[[David Christopherson]] |4=[[Wayne Marston]] |5=[[David Sweet]] }}` doc = wtf(str) - tmpl = doc.templates(0) || {} + tmpl = doc.template() || {} t.equal(tmpl.title, 'List of MPs', 'got title 2') t.equal(tmpl.list.length, 5, 'got list2') t.equal(tmpl.list[1], 'Chris Charlton', 'got list member2') @@ -80,7 +80,7 @@ test('collapsible list', function (t) { test('unbulleted list', function (t) { const str = `{{unbulleted list|first item|second item|third item|}}` const doc = wtf(str) - const tmpl = doc.templates(0) || {} + const tmpl = doc.template() || {} t.equal(tmpl.title, undefined, 'got title 3') t.equal(tmpl.list.length, 3, 'got list3') t.equal(tmpl.list[1], 'second item', 'got list member3') @@ -91,7 +91,7 @@ test('unbulleted list', function (t) { test('ordered list', function (t) { const str = `{{Ordered list|first item|second item|third item|}}` const doc = wtf(str) - const tmpl = doc.templates(0) || {} + const tmpl = doc.template() || {} t.equal(tmpl.title, undefined, 'got title 4') t.equal(tmpl.list.length, 3, 'got list4') t.equal(tmpl.list[1], 'second item', 'got list member4') diff --git a/tests/math.test.js b/tests/math.test.js index b00cebab..d4592b36 100644 --- a/tests/math.test.js +++ b/tests/math.test.js @@ -4,25 +4,25 @@ const wtf = require('./lib') test('math-simple', (t) => { let str = `hello {{math|big=1|1 + 2 {{=}} 3}} world` let doc = wtf(str) - let tmpl = doc.templates(0) || {} + let tmpl = doc.template() || {} t.equal(tmpl.formula, '1 + 2 = 3', 'tmpl formula') t.equal(doc.text(), 'hello\n\n1 + 2 = 3\n\nworld', 'text output') str = `y^3` doc = wtf(str) - tmpl = doc.templates(0) || {} + tmpl = doc.template() || {} t.equal(tmpl.formula, 'y^3', 'xml inline') t.equal(doc.text(), 'y^3', 'xml inline output') str = `sum_{i=0}^infty 2^{-i}` doc = wtf(str) - tmpl = doc.templates(0) || {} + tmpl = doc.template() || {} t.ok(tmpl.formula.length > 10, 'tmpl formula2') t.equal(doc.text(), '', 'no text output2') str = ` ext{geometric series:}quad sum_{i=0}^infty 2^{-i}=2 ` doc = wtf(str) - tmpl = doc.templates(0) || {} + tmpl = doc.template() || {} t.ok(tmpl.formula.length > 10, 'tmpl formula3') t.equal(doc.text(), '', 'no text output3') t.end() @@ -36,7 +36,7 @@ test('math-weirder', (t) => { end{cases} ` const doc = wtf(str) - const tmpl = doc.templates(0) || {} + const tmpl = doc.template() || {} t.ok(tmpl.formula.length > 10, 'tmpl formula') t.equal(doc.text(), '', 'no text output') t.end() diff --git a/tests/misc.test.js b/tests/misc.test.js index 8ea3d8f0..21fa599a 100644 --- a/tests/misc.test.js +++ b/tests/misc.test.js @@ -36,14 +36,14 @@ test('font-size', (t) => { test('external links', (t) => { let str = `The [http://w110.bcn.cat/portal/site/Eixample] is the quarter designed` let obj = wtf(str) - let link = obj.sentences(0).links(0) + let link = obj.sentence().link() t.equal(link.text(), '', 'link-text') t.equal(link.site(), 'http://w110.bcn.cat/portal/site/Eixample', 'link-site') t.equal(link.type(), 'external', 'link-type') str = `The [http://w110.bcn.cat/portal/site/Eixample Fun Times] is the quarter designed` obj = wtf(str) - link = obj.sentences(0).links(0) + link = obj.sentence().link() t.equal(link.text(), 'Fun Times', 'link-text') t.equal(link.site(), 'http://w110.bcn.cat/portal/site/Eixample', 'link-site') t.equal(link.type(), 'external', 'link-type') diff --git a/tests/more-templates.test.js b/tests/more-templates.test.js index 50e1c7b7..7afa2389 100644 --- a/tests/more-templates.test.js +++ b/tests/more-templates.test.js @@ -4,14 +4,14 @@ const wtf = require('./lib') test('imdb', (t) => { let str = `{{IMDb title | 0426883 | Alpha Dog }}` let doc = wtf(str) - let obj = doc.templates(0) + let obj = doc.template() t.equal(obj.template, 'imdb title', 'imdb') t.equal(obj.id, '0426883', 'id1') t.equal(obj.title, 'Alpha Dog', 'title') str = `{{IMDb title | id= 0426883 | title= Alpha Dog }}` doc = wtf(str) - obj = doc.templates(0) + obj = doc.template() t.equal(obj.id, '0426883', 'id1') t.equal(obj.title, 'Alpha Dog', 'title') t.end() @@ -20,7 +20,7 @@ test('imdb', (t) => { test('taxon', (t) => { const str = `{{Taxon info|Felis|parent}}` const doc = wtf(str) - const obj = doc.templates(0) + const obj = doc.template() t.equal(obj.taxon, 'Felis', 'taxon') t.end() }) @@ -28,7 +28,7 @@ test('taxon', (t) => { test('generic-list', (t) => { const str = `{{Portal bar|portal 1|portal 2}}` const doc = wtf(str) - const obj = doc.templates(0) + const obj = doc.template() t.equal(obj.template, 'portal bar', 'name') t.equal(obj.list[0], 'portal 1', 'list1') t.equal(obj.list[1], 'portal 2', 'list2') @@ -39,7 +39,7 @@ test('generic-list', (t) => { test('redirect-list', (t) => { const str = `{{Redirect|City of Toronto|the municipal government|Municipal government of Toronto|the historical part of the city prior to the 1998 amalgamation|Old Toronto}}` const doc = wtf(str) - const obj = doc.templates(0) + const obj = doc.template() t.equal(obj.template, 'redirect', 'name') t.equal(obj.redirect, 'City of Toronto', 'main') t.equal(obj.links[0].page, 'Municipal government of Toronto', 'list1') @@ -50,7 +50,7 @@ test('redirect-list', (t) => { test('templates-in-templates', (t) => { const str = `{{marriage|[[Mileva Marić]]
|1903|1919|end=div}}
{{nowrap|{{marriage|[[Elsa Löwenthal]]
|1919|1936|end=died}}{{cite book |editor-last=Heilbron |editor-first=John L. |title=The Oxford Companion to the History of Modern Science |url=https://books.google.com/books?id=abqjP-_KfzkC&pg=PA233 |date=2003 |publisher=Oxford University Press |isbn=978-0-19-974376-6 |page=233}}{{sfnp|Pais|1982|p=301}}}}` - const ref = wtf(str).citations(0).json() + const ref = wtf(str).citation().json() t.equal(ref.template, 'citation', 'cite-book') t.equal(ref.url, 'https://books.google.com/books?id=abqjP-_KfzkC&pg=PA233', 'url') t.equal(ref.isbn, '978-0-19-974376-6', 'isbn') @@ -74,7 +74,7 @@ test('support-nowrap-in-infobox', (t) => { | chiffre = {{nobr|912 millions}} }} ` - const infobox = wtf(str).infoboxes(0) + const infobox = wtf(str).infobox() const data = infobox.json() t.equal(data.name.text, 'Albert Einstein', 'got infobox datad') t.equal(data.spouse.text, 'Elsa Löwenthal (m. 1919-1936)', 'got tricky marriage value') @@ -86,7 +86,6 @@ test('inline-templates', (t) => { let str = `he married {{marriage|[[Elsa Löwenthal]]
|1919|1936|end=died}} in Peterburough` let doc = wtf(str) t.equal(doc.text(), 'he married Elsa Löwenthal (m. 1919-1936) in Peterburough', 'inline marriage text') - str = `he married {{marriage|Johnny-boy}} in Peterburough` doc = wtf(str) t.equal(doc.text(), 'he married Johnny-boy in Peterburough', 'marriage-text simple') @@ -97,15 +96,13 @@ test('three-layer-templates', (t) => { const str = `she married {{nowrap| {{nowrap| {{marriage|Johnny-boy}} }}}}` const doc = wtf(str) t.equal(doc.text(), 'she married Johnny-boy', '3-template inline') - t.equal(doc.templates(0).template, 'marriage', '3-template result') + t.equal(doc.template().template, 'marriage', '3-template result') t.end() }) test('austria-hungary', (t) => { const str = `{{short description|Constitutional monarchic union from 1867 to October 1918}} {{For|modern relations|Austria{{ndash}}Hungary relations}} {{Use dmy dates|date=December 2014}} {{Infobox former country | native_name ={{native name|de|Österreichisch-Ungarische Monarchie}}
{{native name|hu|Osztrák-Magyar Monarchia}} | conventional_long_name = Austria-Hungary{{nobold|[[#Structure and name|↓]]}} | common_name= Austria{{ndash}}Hungary | continent=Europe | region = Central Europe | era= [[New Imperialism]]/[[World War I]] | status= | status_text= | year_start =1867 | year_end =1918 | date_start = 1 March | date_end = 11 November | p1 = Austrian Empire | flag_p1 = Flag of the Habsburg Monarchy.svg | s1 = Republic of German-Austria | s2 = Hungarian Democratic Republic | s3 = First Czechoslovak Republic | s4 = West Ukrainian People's Republic | s5 = Second Polish Republic | s6 = Kingdom of Romania | s7 = Kingdom of Serbs, Croats and Slovenes | s8 = Kingdom of Italy | flag_s1 = Flag of Austria.svg | flag_s2 = Flag of Hungary (1918-1919; 3-2 aspect ratio).svg | flag_s3 = Flag of the Czech Republic.svg | flag_s4 = Flag of the Ukranian State.svg | flag_s5 = Flag of Poland.svg | flag_s6 = Flag of Romania.svg | flag_s7 = Flag of Yugoslavia (1918–1943).svg | flag_s8 = Flag of Italy (1861-1946) crowned.svg | image_flag = Flag of Austria-Hungary (1869-1918).svg | flag_type = Civil Ensign | flag = List of Austrian flags | image_coat = Imperial Coat of Arms of the Empire of Austria.svg | symbol_type = Coat of arms | image_map = Austro-Hungarian Monarchy (1914).svg | image_map_caption = Austria-Hungary on the eve of [[World War I]] | national_motto = {{lang|la|Indivisibiliter ac Inseparabiliter}}
{{small|"Indivisibly and Inseparably"}} | national_anthem = {{lang|de|Gott erhalte Gott beschütze}}
{{small|"God shall save, God shall protect"}} | official_languages = [[Austrian German|German]], [[Hungarian language|Hungarian]]Fisher, Gilman. [https://books.google.com/?id=TLkUAAAAYAAJ&pg=PA47 ''The Essentials of Geography for School Year 1888–1889'', p. 47]. New England Publishing Company (Boston), 1888. Retrieved 20 August 2014. | common_languages = [[Czech language|Czech]], [[Croatian language|Croatian]], [[Italian language|Italian]], [[Polish language|Polish]], [[Romani language|Romani]], [[Romanian language|Romanian]], [[Rusyn language|Rusyn]], [[Serbian language|Serbian]], [[Slovak language|Slovak]], [[Slovene language|Slovene]], [[Ukrainian language|Ukrainian]], and [[Yiddish language|Yiddish]]{{refn|From the ''Encyclopædia Britannica'' (1878), although note that ''this'' "Romani" refers to the language of those described by the ''EB'' as "Gypsies"; the ''EB''{{'}}s "Romani or Wallachian" refers to what is today known as Romanian; Rosyn and Ukrainian correspond to dialects of what the ''EB'' refers to as "[[Ruthenian language|Ruthenian]]"; and Yiddish was the common language of the [[Austrian Jews]], although [[Hebrew language|Hebrew]] was also known by many.}} | religion = 76.6% [[Catholic]] (incl. 64–66% [[Latin Church|Latin]] & 10–12% [[Eastern Catholic|Eastern]])
8.9% [[Protestantism|Protestant]] ([[Lutheranism|Lutheran]], [[Calvinism|Reformed]], [[Unitarianism|Unitarian]])
8.7% [[Eastern Orthodox Church|Orthodox]]
4.4% [[Jewish]]
1.3% [[Muslim]]
{{small|(1910 censusGeographischer Atlas zur Vaterlandskunde, 1911, Tabelle 3.)}} | capital = [[Vienna]] (main)
[[Budapest]] | demonym = Austro-Hungarian | government_type = [[Dual monarchy|Dual]] [[Parliamentary system|parliamentary]] [[constitutional monarchy]] [[personal union]], under a [[liberal autocracy]] in Austria, and parliamentarism in Hungary | title_leader = [[Emperor of Austria|Emperor]]-[[King of Hungary|King]] | leader1 = [[Franz Joseph I of Austria|Franz Joseph I]] | year_leader1 = 1867–1916 | leader2 = [[Charles I of Austria|Charles I & IV]] | year_leader2 = 1916–1918 | representative1 = [[Count Friedrich Ferdinand von Beust|Friedrich von Beust]] (first) | representative2 = [[Heinrich Lammasch]] (last) | year_representative1 = 1867 | year_representative2 = 1918 | title_representative = [[Minister-President of Austria|Minister-President
of Austria]] | deputy1 = [[Gyula Andrássy]] (first) | deputy2 = [[János Hadik]] (last) | year_deputy1 = 1867–1871 | year_deputy2 = 1918 | title_deputy = [[List of Prime Ministers of Hungary|Prime Minister
of Hungary]] | legislature = 2 national legislatures: | type_house1 = [[Imperial Council (Austria)|Imperial Council]] | house1 = [[Herrenhaus (Austria)|Herrenhaus]]
[[Abgeordnetenhaus (Austria)|Abgeordnetenhaus]] | type_house2 = [[Diet of Hungary]] | house2 = [[House of Magnates of Hungary|House of Magnates]]
[[House of Representatives of Hungary|House of Representatives]] | stat_area1 = 676,615 | stat_area2 = 681,727 | stat_pop1 = 52,800,000 | stat_year1 = 1914 | stat_year2 = 1918 | event_start =[[Austro-Hungarian Compromise of 1867|1867 Compromise]] | event_end =[[Aftermath of World War I#Austria-Hungary|Dissolution]] | event_post = Treaties of [[Treaty of Saint-Germain-en-Laye (1919)|Saint-Germain-en-Laye]] and [[Treaty of Trianon|Trianon]] | date_post = 10 September 1919 and 4 June 1920 | event1 = [[Czechoslovakia|Czechoslovak]] indep. | date_event1 = 28 October 1918 | event2 = [[State of Slovenes, Croats and Serbs|State of SCS]] indep. | date_event2 = 29 October 1918 | event3 = [[Banat, Bačka and Baranja|Vojvodina]] lost to [[Kingdom of Serbia|Serbia]] | date_event3 = 25 November 1918 | currency = {{plainlist| * [[Austro-Hungarian gulden|Gulden]] (to 1892) * [[Austro-Hungarian krone|Krone]] (1892–1918)}} | iso3166code = omit | today = {{Collapsible list |titlestyle=font-weight:normal; background:transparent; text-align:left;|title= |{{flag|Austria}}|{{flag|Bosnia and Herzegovina}}|{{flag|China}}see [[Concessions in Tianjin#Austro-Hungarian concession (1901–1917)]]|{{flag|Croatia}}|{{flag|Czech Republic}}|{{flag|Hungary}}|{{flag|Italy}}|{{flag|Montenegro}}|{{flag|Poland}}|{{flag|Romania}}|{{flag|Serbia}}|{{flag|Slovakia}}|{{flag|Slovenia}}|{{flag|Ukraine}}}} }} '''Austria-Hungary''', often referred to as the '''Austro-Hungarian Empire''' or the '''Dual Monarchy'''` - const doc = wtf(str) - t.equal( doc.text(), 'Austria-Hungary, often referred to as the Austro-Hungarian Empire or the Dual Monarchy', diff --git a/tests/page.test.js b/tests/page.test.js index 52852e48..f250ad38 100644 --- a/tests/page.test.js +++ b/tests/page.test.js @@ -3,20 +3,20 @@ const readFile = require('./lib/_cachedPage') test('royal_cinema page', (t) => { const doc = readFile('royal_cinema') - t.equal(doc.infoboxes(0).template(), 'venue', 'venue template') - t.equal(doc.sections(0).sentences().length, 10, 'sentence-length') + t.equal(doc.infobox().template(), 'venue', 'venue template') + t.equal(doc.section().sentences().length, 10, 'sentence-length') t.equal(doc.categories().length, 4, 'cat-length') - t.equal(doc.infoboxes(0).get('opened').text(), '1939', 'year-string') - // t.equal(doc.infoboxes(0).keyValue()['opened'], 1939, 'year-number'); + t.equal(doc.infobox().get('opened').text(), '1939', 'year-string') + // t.equal(doc..infobox().keyValue()['opened'], 1939, 'year-number'); t.end() }) test('toronto_star page', (t) => { const doc = readFile('toronto_star') - t.equal(doc.infoboxes(0).data.publisher.text(), 'John D. Cruickshank', 'publisher.text') - t.equal(doc.infoboxes(0).template(), 'newspaper', 'newspaper template') - const section = doc.sections('history') + t.equal(doc.infobox().data.publisher.text(), 'John D. Cruickshank', 'publisher.text') + t.equal(doc.infobox().template(), 'newspaper', 'newspaper template') + const section = doc.section('history') t.equal(section.sentences().length, 21, 'sentence-length') t.equal(doc.categories().length, 6, 'sentence-length') // t.equal(doc.text['Notable cartoonists'], undefined, t); @@ -27,23 +27,23 @@ test('toronto_star with list', (t) => { const doc = readFile('toronto_star') t.equal(doc.isRedirect(), false, 'not-redirect') t.equal(doc.isDisambig(), false, 'not-disambig') - t.equal(doc.infoboxes(0).data.publisher.text(), 'John D. Cruickshank', 'publisher.text') - t.equal(doc.infoboxes(0).template(), 'newspaper', 'newspaper template') - let section = doc.sections('history') + t.equal(doc.infobox().data.publisher.text(), 'John D. Cruickshank', 'publisher.text') + t.equal(doc.infobox().template(), 'newspaper', 'newspaper template') + let section = doc.section('history') t.equal(section.sentences().length, 21, 'history-length') t.equal(doc.categories().length, 6, 'cat-length') - section = doc.sections('Notable cartoonists') - t.equal(section.lists(0).json().length, 10, 'cartoonist-length') + section = doc.section('Notable cartoonists') + t.equal(section.list().json().length, 10, 'cartoonist-length') t.end() }) test('jodie_emery', (t) => { const doc = readFile('jodie_emery') t.equal(doc.isRedirect(), false, 'not-redirect') - t.equal(doc.infoboxes(0).data.nationality.text(), 'Canadian', 'nationality') - t.equal(doc.infoboxes(0).template(), 'person', 'person template') - t.equal(doc.sections(0).sentences.length >= 1, true, 'intro-length') - t.equal(doc.sections(1).sentences.length >= 1, true, 'career-length') + t.equal(doc.infobox().data.nationality.text(), 'Canadian', 'nationality') + t.equal(doc.infobox().template(), 'person', 'person template') + t.equal(doc.section().sentences.length >= 1, true, 'intro-length') + t.equal(doc.section(1).sentences.length >= 1, true, 'career-length') t.equal(doc.categories().length, 8, 'cat-length') t.equal(doc.images().length, 1, 'image-length') t.end() @@ -52,25 +52,25 @@ test('jodie_emery', (t) => { test('statoil', (t) => { const doc = readFile('statoil') t.equal(doc.isRedirect(), false, 'not-redirect') - t.equal(doc.infoboxes(0).data.namn.text(), 'Statoil ASA', 'name') - t.equal(doc.infoboxes(0).type(), 'verksemd', 'template') + t.equal(doc.infobox().data.namn.text(), 'Statoil ASA', 'name') + t.equal(doc.infobox().type(), 'verksemd', 'template') // (doc.text.Intro.length >= 1).should.be.true; t.equal(doc.categories().length, 4, 'cat-length') t.equal(doc.images().length, 1, 'img-length') - t.equal(doc.images(0).file(), 'Fil:Statoil-Estonia.jpg', 'file') - t.equal(doc.images(0).url(), 'https://wikipedia.org/wiki/Special:Redirect/file/Statoil-Estonia.jpg', t) + t.equal(doc.image().file(), 'Fil:Statoil-Estonia.jpg', 'file') + t.equal(doc.image().url(), 'https://wikipedia.org/wiki/Special:Redirect/file/Statoil-Estonia.jpg', t) t.end() }) test('raith rovers', (t) => { const doc = readFile('raith_rovers') t.equal(doc.isRedirect(), false, 'not-redirect') - t.equal(doc.infoboxes(0).data.clubname.text(), 'Raith Rovers', 'clubname') + t.equal(doc.infobox(0).data.clubname.text(), 'Raith Rovers', 'clubname') t.equal(doc.categories().length, 10, 'cat-length') t.equal(doc.images().length, 2, 'img-length') - t.equal(doc.images(1).file(), "File:Stark's Park - geograph.org.uk - 204446.jpg", 'img-file') + t.equal(doc.image(1).file(), "File:Stark's Park - geograph.org.uk - 204446.jpg", 'img-file') t.equal( - doc.images(1).url(), + doc.image(1).url(), `https://wikipedia.org/wiki/Special:Redirect/file/Stark's_Park_-_geograph.org.uk_-_204446.jpg`, 'image-url' ) @@ -82,12 +82,12 @@ test('mark behr', (t) => { t.equal(doc.isRedirect(), false, 'not-redirect') t.equal(doc.infoboxes().length, 1, 'got infobox') t.equal(doc.categories().length, 3, 'cat-length') - let s = doc.sections('publikasies') + let s = doc.section('publikasies') t.equal(s.tables().length, 1, 'got table') - t.equal(doc.tables(0).links().length, 0, 'table has no links') + t.equal(doc.table().links().length, 0, 'table has no links') t.equal(s.lists().length, 0, 'no list') - s = doc.sections('toekennings') + s = doc.section('toekennings') t.equal(s.lists().length, 1, 'got list') - t.equal(s.lists(0).lines().length, 4, 'got 4 items in list') + t.equal(s.list().lines().length, 4, 'got 4 items in list') t.end() }) diff --git a/tests/paragraphs.test.js b/tests/paragraphs.test.js index 437cf7f4..f53af494 100644 --- a/tests/paragraphs.test.js +++ b/tests/paragraphs.test.js @@ -15,7 +15,7 @@ Here is the third paragraph. Nobody knows if this will work.[http://commons t.equal(doc.sections().length, 2, 'sections') t.equal(doc.paragraphs().length, 3, 'paragraphs') t.equal(doc.references().length, 4, 'all references') - t.equal(doc.sections(0).references().length, 3, 'first references') + t.equal(doc.section().references().length, 3, 'first references') t.end() }) @@ -52,7 +52,7 @@ test('newlines in templates', (t) => { Paragraph two!` const doc = wtf(str) t.equal(doc.paragraphs().length, 2, 'paragraphs') - t.equal(doc.paragraphs(0).text(), 'hello world', 'first paragraph') + t.equal(doc.paragraph().text(), 'hello world', 'first paragraph') t.equal(doc.paragraphs(1).text(), 'Paragraph two!', '2nd paragraph') t.end() }) @@ -82,7 +82,7 @@ test('newlines in tables', (t) => { Second paragraph here.` const doc = wtf(str) t.equal(doc.paragraphs().length, 2, 'paragraphs') - t.equal(doc.paragraphs(0).text(), 'hello world. Up here.', 'first paragraph') + t.equal(doc.paragraph().text(), 'hello world. Up here.', 'first paragraph') t.equal(doc.paragraphs(1).text(), 'Second paragraph here.', '2nd paragraph') t.equal(doc.tables().length, 1, 'got broken table') t.end() diff --git a/tests/redirect.test.js b/tests/redirect.test.js index 8145d7a4..ae019407 100644 --- a/tests/redirect.test.js +++ b/tests/redirect.test.js @@ -17,8 +17,8 @@ test('redirect json', (t) => { test('is-redirect', (t) => { const doc = readFile('redirect') t.equal(doc.isRedirect(), true, 'is-redirect') - // t.equal(doc.links(0).page, 'Toronto', 'redirect-place'); - t.equal(doc.infoboxes(0), undefined, t) + // t.equal(doc.link().page, 'Toronto', 'redirect-place'); + t.equal(doc.infobox(), undefined, t) t.end() }) diff --git a/tests/reference.test.js b/tests/reference.test.js index 98b1f0c3..c7a23b7a 100644 --- a/tests/reference.test.js +++ b/tests/reference.test.js @@ -75,7 +75,7 @@ test('inline-test', (t) => { // const str = `"Through Magic Doorways".[http://www.imdb.com/name/nm3225194/ Allen Morris IMDb profile] `; // const arr = wtf(str).citations(); // t.equal(arr.length, 1, 'found-inline-citations'); -// t.equal(arr[0].links(0).site, 'http://www.imdb.com/name/nm3225194/', 'inline-url'); +// t.equal(arr[0].link().site, 'http://www.imdb.com/name/nm3225194/', 'inline-url'); // t.equal(arr[0].text(), 'Allen Morris IMDb profile', 'inline-text'); // t.end(); // }); @@ -92,6 +92,6 @@ test('inline-test', (t) => { // const str = `Siobhan Chapman, {{ISBN|0-19-518767-9}}, [https://books.google.com/books?id=Vfr Google Print, p. 166] She continued her education after.`; // const arr = wtf(str).citations(); // t.equal(arr.length, 1, 'found-one-citation'); -// t.equal(arr[0].links(0).site, 'https://books.google.com/books?id=Vfr', 'fould late link'); +// t.equal(arr[0].link().site, 'https://books.google.com/books?id=Vfr', 'fould late link'); // t.end(); // }); diff --git a/tests/sentences.test.js b/tests/sentences.test.js index b714e8b3..86441b28 100644 --- a/tests/sentences.test.js +++ b/tests/sentences.test.js @@ -29,7 +29,7 @@ test('tough sentence punctuation', function (t) { arr.forEach((str, i) => { const doc = wtf(str) t.equal( - doc.sentences(0).text(), + doc.sentence().text(), 'he is credited as Mr. Lawrence and sometimes Doug Lawrence.', 'tough-sentence #' + i ) diff --git a/tests/start-end.test.js b/tests/start-end.test.js index 1ec2b27c..777b480b 100644 --- a/tests/start-end.test.js +++ b/tests/start-end.test.js @@ -56,7 +56,7 @@ test('mlb-start-end-fancy', function (t) { const doc = wtf(str) t.equal(doc.text(), 'hello world', 'text') t.equal(doc.templates().length, 1, 'got-template') - let rows = doc.templates(0).data + let rows = doc.template().data t.equal(rows.length, 2, 'got-both rows') t.equal(rows[0].stadium, 'Fenway Park', 'got stadium') t.equal(rows[0].attendance, '39,059', 'got attendance') diff --git a/tests/stress.test.js b/tests/stress.test.js index 1d5eede0..138130f3 100644 --- a/tests/stress.test.js +++ b/tests/stress.test.js @@ -116,12 +116,12 @@ test('stress-test-en', (t) => { t.equal(doc.isDisambig(), false, ' - - not-disambiguation') t.ok(doc.categories().length > 0, ' - - cat-length') t.ok(doc.sections().length > 0, ' - - section-length') - const intro = doc.sections(0) + const intro = doc.section() t.ok(intro.title() === '', ' - - intro-title-empty') t.ok(intro.indentation() === 0, ' - - depth=0') t.ok(intro.sentences().length > 0, ' - - sentences-length') - t.ok(intro.sentences(0).text().length > 0, ' - - intro-text') - t.ok(intro.sentences(0).text().match(/[a-z]/), ' - - intro-has words') + t.ok(intro.sentence().text().length > 0, ' - - intro-text') + t.ok(intro.sentence().text().match(/[a-z]/), ' - - intro-has words') if (noCitation[title] === true) { t.equal(doc.citations().length, 0, title + ' has no citation') } else { diff --git a/tests/table.test.js b/tests/table.test.js index d3817d35..dbfdc62c 100644 --- a/tests/table.test.js +++ b/tests/table.test.js @@ -32,8 +32,8 @@ test('rnli stations', (t) => { const lifeboat = doc.sections(2) t.equal(lifeboat._depth, 1, 'lifeboat-depth') - t.equal(lifeboat.templates(0).list[0], 'Royal National Lifeboat Institution lifeboats', 'lifeboat-main') - t.equal(lifeboat.lists(0).json().length, 3, 'lifeboat-list') + t.equal(lifeboat.template().list[0], 'Royal National Lifeboat Institution lifeboats', 'lifeboat-main') + t.equal(lifeboat.list().json().length, 3, 'lifeboat-list') t.equal(lifeboat.sentences().length, 3, 'lifeboat-sentences') t.deepEqual(lifeboat.images(), [], 'lifeboat-no-images') t.deepEqual(lifeboat.tables(), [], 'lifeboat-no-tables') @@ -260,7 +260,7 @@ test('embedded-table-2', (t) => { Actual first sentence is here` const doc = wtf(str) t.equal(doc.tables().length, 2, 'found both tables') - const text = doc.sentences(0).text() + const text = doc.sentence().text() t.equal('Actual first sentence is here', text, 'got proper first sentence') t.end() }) diff --git a/tests/template.test.js b/tests/template.test.js index eebb0d3a..83bb4c4f 100644 --- a/tests/template.test.js +++ b/tests/template.test.js @@ -37,15 +37,15 @@ test('boloZenden infobox', function (t) { | manageryears1 = 2012–2013 |managerclubs1 = [[Chelsea F.C.|Chelsea]] (assistant manager) | manageryears2 = 2013– |managerclubs2 = [[Jong PSV]] (assistant manager) }}` - const o = wtf(boloZenden).infoboxes(0).data + const o = wtf(boloZenden).infobox().data t.equal(o.years1.text(), '1993–1998') t.equal(o.clubs1.text(), 'PSV') t.equal(o.youthyears1.text(), '1985–1987') t.equal(o.youthclubs1.text(), 'MVV') t.equal(o.nationalyears1.text(), '1997–2004') t.equal(o.nationalteam1.text(), 'Netherlands') - t.equal(o.nationalteam1.links(0).page(), 'Netherlands national football team') - t.equal(o.nationalteam1.links(0).text(), 'Netherlands') + t.equal(o.nationalteam1.link().page(), 'Netherlands national football team') + t.equal(o.nationalteam1.link().text(), 'Netherlands') t.equal(o.nationalcaps1.text(), '54') t.equal(o.nationalgoals1.text(), '7') t.end() @@ -70,11 +70,11 @@ test('hurricane infobox', function (t) { | Areas=[[Florida]] | Hurricane season=[[2002 Atlantic hurricane season]] }}` - const o = wtf(hurricane).infoboxes(0).data + const o = wtf(hurricane).infobox().data t.equal(o.name.text(), 'Tropical Storm Edouard') t.equal(o.dissipated.text(), 'September 6, 2002') t.equal(o['hurricane season'].text(), '2002 Atlantic hurricane season') - t.equal(o.areas.links(0).page(), 'Florida') + t.equal(o.areas.link().page(), 'Florida') t.end() }) @@ -97,7 +97,7 @@ test('parkplace disambig', function (t) { const o = wtf(park_place) t.equal(o.isDisambiguation(), true, 'is-disambiguation') t.equal(o.links().length, 4, 'links') - t.equal(o.links(0).page(), 'Park Place (TV series)', 'first-link') + t.equal(o.link().page(), 'Park Place (TV series)', 'first-link') t.end() }) @@ -155,7 +155,7 @@ const alabama = ` }} ` test('Alabama infobox', function (t) { - const infobox = wtf(alabama).infoboxes(0).data + const infobox = wtf(alabama).infobox().data t.equal(infobox.athletics.text(), 'NCAA Division I – SEC', 'athletics =' + infobox.athletics.text) t.equal(infobox.country.text(), 'U.S.', 'country =' + infobox.country.text) t.equal(infobox.president.text(), 'Stuart R. Bell', 'president =' + infobox.president.text) @@ -199,7 +199,7 @@ test('Radiohead infobox', function (t) { * [[Ed O'Brien]] * [[Philip Selway]] }} ` - const infobox = wtf(radiohead).infoboxes(0).data + const infobox = wtf(radiohead).infobox().data t.equal(infobox.current_members.text().match(/Greenwood/g).length, 2, 'current members') t.equal(infobox.genre.text(), 'Art rock\n\nalternative rock\n\nelectronica\n\nexperimental rock', 'genre') t.equal(infobox.associated_acts.text(), 'Atoms for Peace\n\n7 Worlds Collide', 'associated-acts') @@ -313,7 +313,7 @@ test('microsoft currency parsing', function (t) { | website = {{URL|https://microsoft.com}} }} ` - const infobox = wtf(microsoft).infoboxes(0).data + const infobox = wtf(microsoft).infobox().data t.equal(infobox.revenue.text(), 'US$89.95 billion', 'revenue =' + infobox.revenue.text) t.equal(infobox.operating_income.text(), 'US$22.27 billion', 'operating_income =' + infobox.operating_income.text) t.equal(infobox.net_income.text(), 'US$21.20 billion', 'net_income =' + infobox.net_income.text) @@ -337,7 +337,7 @@ test('climate template', function (t) { | −3.1 | 2.1 | 61 |float=right |source= Environment Canada }}` - const data = wtf(str).templates(0).data + const data = wtf(str).template().data t.equal(data.months[0].low, -6.7, 'jan low') t.equal(data.months[1].precip, 55, 'feb precip') t.end() diff --git a/tests/tracklist.test.js b/tests/tracklist.test.js index dbc76ac1..d4b7ed98 100644 --- a/tests/tracklist.test.js +++ b/tests/tracklist.test.js @@ -34,7 +34,7 @@ test('track-listing', (t) => { | length8 = 2:43 }}` const doc = wtf(str) - const track = doc.templates(0) + const track = doc.template() t.equal(track.headline, 'Side one', 'track-headline') t.equal(track.title4, 'Ob-La-Di, Ob-La-Da', 'title4') t.end() diff --git a/tests/unit.test.js b/tests/unit.test.js index 03441eeb..b90c7371 100644 --- a/tests/unit.test.js +++ b/tests/unit.test.js @@ -123,8 +123,8 @@ test('xml', (t) => { test('interwiki', (t) => { const str = 'hello [[wikinews:Radiohead]] world [[Category:Films]]' const obj = wtf(str) - t.equal(obj.sections(0).interwiki(0).page(), 'Radiohead', 'interwiki-link') - t.equal(obj.sections(0).interwiki(0).wiki(), 'wikinews', 'interwiki-link') + t.equal(obj.section().interwiki(0).page(), 'Radiohead', 'interwiki-link') + t.equal(obj.section().interwiki(0).wiki(), 'wikinews', 'interwiki-link') t.equal(obj.categories().length, 1, 'cat-length') t.equal(obj.categories(0), 'Films', 'cat-match') t.end() From 3557b3c6df0f00c389700030d6cb8fbd7bc949d6 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 14:43:45 -0500 Subject: [PATCH 034/117] more refactoring for plural/singular --- .eslintrc | 13 +-- plugins/category/tests/misc.fetch.js | 4 +- plugins/html/src/04-sentence.js | 4 +- plugins/image/tests/image.test.js | 2 +- plugins/latex/tests/latex.test.js | 2 +- plugins/markdown/src/04-sentence.js | 4 +- plugins/summary/src/index.js | 4 +- plugins/summary/src/sentence/index.js | 2 +- scratch.js | 36 ++++--- src/02-section/Section.js | 83 ++++------------ tests/Section.test.js | 136 +++++--------------------- tests/page.test.js | 2 +- tests/paragraphs.test.js | 16 +-- tests/table-span.test.js | 4 +- 14 files changed, 91 insertions(+), 221 deletions(-) diff --git a/.eslintrc b/.eslintrc index 09ad3001..feb7d012 100644 --- a/.eslintrc +++ b/.eslintrc @@ -58,18 +58,7 @@ "ignoreRegExpLiterals": true } ], - "require-jsdoc": [ - 0, - { - "require": { - "ArrowFunctionExpression": false, - "ClassDeclaration": true, - "FunctionDeclaration": true, - "FunctionExpression": true, - "MethodDefinition": true - } - } - ], + "require-jsdoc": 0, "jsdoc/require-param-description": 0, "jsdoc/require-property-description": 0 } diff --git a/plugins/category/tests/misc.fetch.js b/plugins/category/tests/misc.fetch.js index 56cbd4b8..afed98ce 100644 --- a/plugins/category/tests/misc.fetch.js +++ b/plugins/category/tests/misc.fetch.js @@ -1,5 +1,5 @@ -var test = require('tape') -var wtf = require('./_lib') +const test = require('tape') +const wtf = require('./_lib') // this seems too much network traffic to run each test test('parseCategory', function (t) { diff --git a/plugins/html/src/04-sentence.js b/plugins/html/src/04-sentence.js index 7be7a99a..d0c6195e 100644 --- a/plugins/html/src/04-sentence.js +++ b/plugins/html/src/04-sentence.js @@ -18,12 +18,12 @@ const doSentence = function (options) { } if (options.formatting === true) { //support bolds - this.bold().forEach((str) => { + this.bolds().forEach((str) => { let tag = '' + str + '' text = smartReplace(text, str, tag) }) //do italics - this.italic().forEach((str) => { + this.italics().forEach((str) => { let tag = '' + str + '' text = smartReplace(text, str, tag) }) diff --git a/plugins/image/tests/image.test.js b/plugins/image/tests/image.test.js index 3836b449..d450f9ec 100644 --- a/plugins/image/tests/image.test.js +++ b/plugins/image/tests/image.test.js @@ -7,7 +7,7 @@ test('image-methods', function (t) { wiki: `wiktionary` }) .then(function (doc) { - let img = doc.images(0) + let img = doc.image(0) img.exists().then((bool) => { t.equal(bool, true, 'img exists') diff --git a/plugins/latex/tests/latex.test.js b/plugins/latex/tests/latex.test.js index 013acc2f..3e9968f5 100644 --- a/plugins/latex/tests/latex.test.js +++ b/plugins/latex/tests/latex.test.js @@ -21,7 +21,7 @@ test('basic-latex', (t) => { t.equal(tidy(have), tidy(want), 'link-external') //Image simple - have = wtf(`My image [File:my_image.png]`).images(0).latex() + have = wtf(`My image [File:my_image.png]`).image(0).latex() want = '\\begin{figure}\n\\includegraphics[width=\\linewidth]{https://wikipedia.org/wiki/Special:Redirect/file/My_image.png?width=300}\n\\caption{my image}\n\\end{figure}' t.equal(tidy(have), tidy(want), 'image') diff --git a/plugins/markdown/src/04-sentence.js b/plugins/markdown/src/04-sentence.js index bc3f8b82..7d1ded91 100644 --- a/plugins/markdown/src/04-sentence.js +++ b/plugins/markdown/src/04-sentence.js @@ -19,11 +19,11 @@ const toMarkdown = function (options) { } //turn bolds into **bold** if (options.formatting === true) { - this.bold().forEach((b) => { + this.bolds().forEach((b) => { md = smartReplace(md, b, '**' + b + '**') }) //support *italics* - this.italic().forEach((i) => { + this.italics().forEach((i) => { md = smartReplace(md, i, '*' + i + '*') }) } diff --git a/plugins/summary/src/index.js b/plugins/summary/src/index.js index 875b2a77..a793d56a 100644 --- a/plugins/summary/src/index.js +++ b/plugins/summary/src/index.js @@ -48,8 +48,8 @@ const plugin = function (models) { models.Doc.prototype.article = function () { let txt = '' // prefer the 2nd sentence - if (this.sentences(1)) { - txt = this.sentences(1).text() + if (this.sentence(1)) { + txt = this.sentence(1).text() } else { txt = this.sentence(0).text() } diff --git a/plugins/summary/src/sentence/index.js b/plugins/summary/src/sentence/index.js index 36d8ecad..b46d8782 100644 --- a/plugins/summary/src/sentence/index.js +++ b/plugins/summary/src/sentence/index.js @@ -16,7 +16,7 @@ const post = function (s) { // let count = 0 const doSentence = function (doc, options) { - let sentence = doc.sentences(0) + let sentence = doc.sentence(0) if (!sentence) { return '' } diff --git a/scratch.js b/scratch.js index c4c3260a..70a1931e 100644 --- a/scratch.js +++ b/scratch.js @@ -1,5 +1,5 @@ const wtf = require('./src/index') -wtf.extend(require('./plugins/api/src')) +wtf.extend(require('./plugins/html/src')) // const getAll = async function (tmpl) { // let pages = await wtf.getTemplatePages(tmpl) @@ -11,18 +11,32 @@ wtf.extend(require('./plugins/api/src')) // }) let str = ` -'''Ibn al-Haytham''' ([[Latinization of names|latinized]] '''Alhazen'''also ''Alhacen'', ''Avennathan'', ''Avenetan'' (etc.); the identity of "Alhazen" with Ibn al-Haytham al-Basri "was identified towards the end of the 19th century". ({{harvnb|Vernet|1996|p=788}}) full name ''{{transl|ar|ALA|Abū ʿAlī al-Ḥasan ibn al-Ḥasan ibn al-Haytham}}'' {{lang|ar|أبو علي، الحسن بن الحسن بن الهيثم}}; {{c.|lk=no|965|1040}}) was a [[Mathematics in medieval Islam|mathematician]], [[Astronomy in the medieval Islamic world|astronomer]], and [[Physics in the medieval Islamic world|physicist]] of the [[Islamic Golden Age]].For the description of his main fields, see e.g. {{harvnb|Vernet|1996|p=788}} ("He is one of the principal Arab mathematicians and, without any doubt, the best physicist.") {{Harvnb|Sabra|2008}}, {{Harvnb|Kalin|Ayduz|Dagli|2009|p=}} ("Ibn al-Ḥaytam was an eminent eleventh-century Arab optician, geometer, arithmetician, algebraist, astronomer, and engineer."), {{Harvnb|Dallal|1999|p=}} ("Ibn al-Haytham (d. 1039), known in the West as Alhazan, was a leading Arab mathematician, astronomer, and physicist. His optical compendium, Kitab al-Manazir, is the greatest medieval work on optics.") He made significant contributions to the principles of [[optics]] and [[visual perception]] in particular, his most influential work being his ''[[Book of Optics|Kitāb al-Manāẓir]]'' (كتاب المناظر, "Book of Optics"), written during 1011–1021, survived in the Latin edition.{{Harvnb|Selin|2008|p=}}: "The three most recognizable Islamic contributors to meteorology were: the Alexandrian mathematician/ astronomer Ibn al-Haytham (Alhazen 965-1039), the Arab-speaking Persian physician Ibn Sina (Avicenna 980-1037), and the Spanish Moorish physician/jurist Ibn Rushd (Averroes; 1126-1198)." He has been dubbed the "father of modern optics" by the [[UNESCO]]. {{Cite journal|last=|first=|date=1976|title=Impact of Science on Society|url=https://books.google.co.uk/books?id=4YE3AAAAMAAJ&q=%22Father+of+Modern+Optics%22&dq=%22Father+of+Modern+Optics%22&hl=en&sa=X&ei=RuhgVJCUIcHksATBo4CoDA|journal=UNESCO|volume= 26-27|pages=page-140|via=}}. -{{Cite web|url=http://www.light2015.org/Home/ScienceStories/1000-Years-of-Arabic-Optics.html|title=International Year of Light - Ibn Al-Haytham and the Legacy of Arabic Optics|website=www.light2015.org|language=en|access-date=2017-10-09}}. -{{Cite web|url=http://en.unesco.org/news/international-year-light-ibn-al-haytham-pioneer-modern-optics-celebrated-unesco|title=International Year of Light: Ibn al Haytham, pioneer of modern optics celebrated at UNESCO|website=UNESCO|language=en|access-date=2017-10-09}}. Specifically, he was the first to explain that vision occurs when light bounces on an object and then is directed to one's eyes. {{cite book|ref=harv|last=Adamson|first=Peter|title=Philosophy in the Islamic World: A History of Philosophy Without Any Gaps|url=https://books.google.com/books?id=KEpRDAAAQBAJ|date=7 July 2016|publisher=Oxford University Press|isbn=978-0-19-957749-1|p=77}} He was also an early proponent of the concept that a hypothesis must be proved by experiments based on confirmable procedures or mathematical evidence, as such anticipating the [[scientific method]].{{Harvnb|Ackerman|1991}}.[[Nomanul Haq|Haq, Syed]] (2009). "Science in Islam". Oxford Dictionary of the Middle Ages. {{ISSN|1703-7603}}. Retrieved 2014-10-22.[[G. J. Toomer]]. [https://www.jstor.org/stable/228328?pg=464 Review on JSTOR, Toomer's 1964 review of Matthias Schramm (1963) ''Ibn Al-Haythams Weg Zur Physik''] Toomer p.464: "Schramm sums up [Ibn Al-Haytham's] achievement in the development of scientific method." -{{cite web|url=http://www.light2015.org/Home/ScienceStories/1000-Years-of-Arabic-Optics.html|title=International Year of Light - Ibn Al-Haytham and the Legacy of Arabic Optics|publisher=}} -{{Cite news|url=http://news.bbc.co.uk/2/hi/science/nature/7810846.stm|work=BBC News|title=The 'first true scientist'|author=Al-Khalili, Jim|date=4 January 2009|accessdate=24 September 2013}} -{{Cite journal|last=Gorini|first=Rosanna|title=Al-Haytham the man of experience. First steps in the science of vision|url=http://www.ishim.net/ishimj/4/10.pdf|journal=Journal of the International Society for the History of Islamic Medicine|volume=2|issue=4|pages=53–55|date=October 2003|format=PDF|accessdate=2008-09-25|ref=harv}} - -Born in [[Basra]], he spent most of his productive period in the [[Fatimid Caliphate|Fatimid]] capital of [[Cairo]] and earned his living authoring various treatises and tutoring members of the nobilities.According to [[Al-Qifti]]. {{Harvnb|O'Connor|Robertson|1999}}. +The '''United Kingdom of Great Britain and Northern Ireland''', commonly known as the '''United Kingdom''' ('''UK''') and colloquially '''Great Britain''' ('''GB''') or simply '''Britain''', is a [[sovereign state|sovereign country]] in western Europe. Lying off the north-western coast of the [[Continental Europe|European mainland]], the United Kingdom includes the island of Great Britain, the north-eastern part of the island of Ireland and many smaller islands.{{cite web |title=Definition of Great Britain in English |url=http://www.oxforddictionaries.com/definition/english/Great-Britain?q=Great+Britain |publisher=Oxford University Press |accessdate=29 October 2014 |quote=Great Britain is the name for the island that comprises England, Scotland and Wales, although the term is also used loosely to refer to the United Kingdom.}} [[Northern Ireland]] is the only part of the United Kingdom that shares [[Republic of Ireland–United Kingdom border|a land border]] with another sovereign state{{mdashb}}the [[Republic of Ireland]].Although Northern Ireland is the only part of the UK that shares a land border with another sovereign state, two of [[British Overseas Territories|its Overseas Territories]] also share land borders with other sovereign countries. [[Gibraltar]] shares [[Gibraltar-Spain border|a border]] with Spain, while the [[Sovereign Base Areas of Akrotiri and Dhekelia]] share borders with the [[Republic of Cyprus]], the [[Turkish Republic of Northern Cyprus]] and the UN [[buffer zone]] separating the two Cypriot polities. Apart from this land border, the United Kingdom is surrounded by the Atlantic Ocean, with the [[North Sea]] to its east, the [[English Channel]] to its south and the [[Celtic Sea]] to its south-south-west, giving it the [[List of countries by length of coastline|12th-longest coastline in the world]]. The [[Irish Sea]] lies between Great Britain and Ireland. With an area of {{convert|242500|km2|sqmi}}, the United Kingdom is the [[List of countries by area|78th-largest sovereign state in the world]] and the [[List of European countries by area|11th-largest in Europe]]. It is also the [[List of countries and dependencies by population|21st-most populous country]], with an estimated 65.5 million inhabitants. Together, this makes it the [[List of sovereign states and dependent territories by population density|fourth-most densely populated country]] in the [[European Union]] (EU).{{refn|group=note|In the [[United Kingdom European Union membership referendum, 2016|referendum of 23 June 2016]], a majority voted for the United Kingdom to withdraw from the European Union, but the process and date for [[Brexit]] have yet to be determined.}}{{cite web |url=http://visual.ons.gov.uk/uk-perspectives-2016-the-uk-in-an-european-context/ |title=UK Perspectives 2016: The UK in a European context |publisher=[[Office for National Statistics]] |date=26 May 2016 |accessdate=16 June 2016}} + +The United Kingdom is a [[constitutional monarchy]] with a [[parliamentary system|parliamentary democracy]].[http://www.royal.gov.uk/MonarchUK/HowtheMonarchyworks/Whatisconstitutionalmonarchy.aspx The British Monarchy, ''What is constitutional monarchy?'']. Retrieved 17 July 2013[https://www.cia.gov/library/publications/the-world-factbook/geos/uk.html CIA, ''The World Factbook'']. Retrieved 17 July 2013 The [[Monarchy of the United Kingdom|monarch]] is [[Queen Elizabeth II]], who has [[reign]]ed since 6 February 1952. The capital of the United Kingdom and its largest city is [[London]], a [[global city]] and [[financial centre]] with an urban area population of 10.3 million, the fourth-largest in Europe and [[Largest urban areas of the European Union|second-largest in the European Union]].The 30 Largest Urban Agglomerations Ranked by Population Size at Each Point in Time, 1950-2030, [http://esa.un.org/unpd/wup/CD-ROM/ World Urbanization Prospects, the 2014 revision], Population Division of the [[United Nations Department of Economic and Social Affairs]]. Retrieved 22 February 2015. Other major [[List of urban areas in the United Kingdom|urban areas in the United Kingdom]] include the [[conurbation]]s centred on [[West Midlands conurbation|Birmingham]], [[West Yorkshire Urban Area|Leeds]], [[Greater Glasgow|Glasgow]], [[Liverpool Urban Area|Liverpool]] and [[Greater Manchester Built-up Area|Manchester]]. The United Kingdom consists of [[countries of the United Kingdom|four countries]]—[[England]], [[Scotland]], [[Wales]] and [[Northern Ireland]].{{cite web |url=http://www.number10.gov.uk/Page823 |archive-url=http://webarchive.nationalarchives.gov.uk/20080909013512/http://www.number10.gov.uk/Page823 |archive-date=9 September 2008 |title=Countries within a country |publisher=Prime Minister's Office |date=10 January 2003 |accessdate=8 March 2015 |deadurl=yes}} The last three have [[devolution in the United Kingdom|devolved]] administrations,{{cite web |url=https://www.gov.uk/devolution-of-powers-to-scotland-wales-and-northern-ireland#devolved-administrations |title=Devolution of powers to Scotland, Wales and Northern Ireland |publisher=United Kingdom Government |accessdate=17 April 2013 |quote=In a similar way to how the government is formed from members from the two Houses of Parliament, members of the devolved legislatures nominate ministers from among themselves to comprise executives, known as the devolved administrations...}} each with varying powers,{{cite news |url=http://news.bbc.co.uk/1/hi/education/7859034.stm |title=Fall in UK university students |publisher=BBC News |date=29 January 2009}}{{cite web |url=http://www.transport-research.info/web/countryprofiles/uk.cfm |title=Country Overviews: United Kingdom |publisher=Transport Research Knowledge Centre |accessdate=28 March 2010 |deadurl=yes |archiveurl=https://web.archive.org/web/20100404062853/http://www.transport-research.info/web/countryprofiles/uk.cfm |archivedate=4 April 2010 |df=}} based in their capitals, [[Edinburgh]], [[Cardiff]] and [[Belfast]], respectively. The nearby [[Isle of Man]], [[Bailiwick of Guernsey]] and [[Bailiwick of Jersey]] are not part of the United Kingdom, being [[Crown dependencies]] with the [[Government of the United Kingdom|British Government]] responsible for defence and international representation.{{cite web |url=http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |archivedate=15 October 2012 |title=Key facts about the United Kingdom |archiveurl=http://webarchive.nationalarchives.gov.uk/20121015000000/http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |accessdate=6 March 2015 |publisher=[[Directgov]] |quote=
The full title of this country is 'the United Kingdom of Great Britain and Northern Ireland'. Great Britain is made up of England, Scotland and Wales. The United Kingdom (UK) is made up of England, Scotland, Wales and Northern Ireland. 'Britain' is used informally, usually meaning the United Kingdom.
The Channel Islands and the Isle of Man are not part of the UK.
|deadurl=yes |df=}}
+ +Prior to the [[History of the formation of the United Kingdom|creation of the United Kingdom]], Wales had already been conquered and annexed by the [[Kingdom of England]]. This meant that the [[United Kingdom of Great Britain|united kingdom]] created in 1707 by the [[Treaty of Union]] between England and [[Kingdom of Scotland|Scotland]] encompassed all of [[Great Britain]]. The [[Kingdom of Ireland]] then merged with this state in 1801 to form the [[United Kingdom of Great Britain and Ireland]]. Five-sixths of Ireland seceded from the UK in 1922, leaving the present formulation of the United Kingdom of Great Britain and Northern Ireland.The [[Anglo-Irish Treaty]] was signed on 6 December 1921 to resolve the [[Irish War of Independence]]. When it took effect one year later, it established the [[Irish Free State]] as a separate [[dominion]] within the [[Commonwealth of Nations|Commonwealth]]. The UK's current name was adopted to reflect the change. There are [[British Overseas Territories|fourteen British Overseas Territories]].{{cite web |url=https://www.gov.uk/government/policies/protecting-and-developing-the-overseas-territories |title=Supporting the Overseas Territories |publisher=[[Foreign and Commonwealth Office]] |accessdate=9 March 2015}} These are the remnants of the [[British Empire]] which, at its height in the 1920s, encompassed almost a quarter of the world's land mass and was the [[List_of_largest_empires#Empires_at_their_greatest_extent|largest empire in history]]. British influence can be observed in the language, culture and legal systems of many of [[List of countries that have gained independence from the United Kingdom|its former colonies]]. + +The United Kingdom is a [[developed country]] and has the world's [[List of countries by GDP (nominal)|sixth-largest economy]] by nominal GDP {{cite web|title=Britain crashes out of world's top 5 economies|url=http://money.cnn.com/2017/11/22/news/economy/uk-france-biggest-economies-in-the-world|publisher=[[CNN]]}}. and [[List of countries by GDP (PPP)|ninth-largest economy]] by [[purchasing power parity]]. The UK is considered to have a [[World Bank high-income economy|high-income economy]] and is categorised as very high in the [[Human Development Index]], ranking [[List of countries by Human Development Index|16th in the world]]. It was the world's first industrialised country and the world's foremost [[Power (international relations)|power]] during the 19th and early 20th centuries.{{cite book |title=The First Industrial Nation: the Economic History of Britain, 1700–1914 |publisher=Routledge |location=London |author=Mathias, P. |year=2001 |isbn=0-415-26672-6}}{{cite book |last=Ferguson |first=Niall |year=2004 |title=Empire: The rise and demise of the British world order and the lessons for global power |publisher=Basic Books |location=New York |isbn=0-465-02328-2}} The UK remains a [[great power]] with considerable economic, cultural, military, scientific and political [[Sphere of influence|influence]] internationally.{{cite book |author1=T. V. Paul |author2=James J. Wirtz |author3=Michel Fortmann |title=Balance of Power |publisher=State University of New York Press, 2005 |year=2005 |pages=59, 282 |isbn=0791464016 |url=https://www.google.com/books?id=9jy28vBqscQC&pg=PA59&dq="Great+power"}} ''Accordingly, the great powers after the Cold War are Britain, China, France, Germany, Japan, Russia and the United States'' p.59{{cite book |last=McCourt |first=David |title=Britain and World Power Since 1945: Constructing a Nation's Role in International Politics |publisher=University of Michigan Press |date=28 May 2014 |location=United States of America |pages= |isbn=0472072218 |url=https://books.google.com/?id=lwpOnwEACAAJ&dq=Britain+and+World+Power+Since+1945:+Constructing+a+Nation%27s+Role+in+International+Politics}} It is a recognised [[List of states with nuclear weapons|nuclear weapons state]] and is [[List of countries by military expenditures|seventh in military expenditure]] in the world.{{cite web |url=https://www.sipri.org/sites/default/files/Trends-world-military-expenditure-2016.pdf |title=Trends in World Military Expenditure, 2016 |publisher=[[Stockholm International Peace Research Institute]] |format=PDF |accessdate=26 April 2017}} The UK has been a [[permanent members of the United Nations Security Council|permanent member]] of the [[United Nations Security Council]] since its first session in 1946. It has been a [[Big Four (Western Europe)|leading member state]] of the EU and its predecessor, the [[European Economic Community]] (EEC), since 1973. However, on 23 June 2016, [[United Kingdom European Union membership referendum, 2016|a national referendum on the UK's membership of the EU]] resulted in a decision to leave, and [[Brexit negotiations|its exit from the EU is currently being negotiated]]. The UK is also a member of the [[Commonwealth of Nations]], the [[Council of Europe]], the [[G7 finance ministers]], the [[G7 forum]], the [[G-20 major economies|G20]], [[NATO]], the [[Organisation for Economic Co-operation and Development]] (OECD), and the [[World Trade Organization]] (WTO). + +==Etymology and terminology== +{{anchor|Etymology}} +{{See also|Britain (place name)|Terminology of the British Isles}} +The [[Acts of Union 1707|1707 Acts of Union]] declared that the kingdoms of [[Kingdom of England|England]] and [[Kingdom of Scotland|Scotland]] were "United into One Kingdom by the Name of [[Kingdom of Great Britain|Great Britain]]", though the new state is also referred to in the Acts as the "Kingdom of Great Britain", "United Kingdom of Great Britain" and "United Kingdom".{{cite web |url=http://www.scotshistoryonline.co.uk/union.html |title=Treaty of Union, 1706 |publisher=Scots History Online |accessdate=23 August 2011}}{{cite book |url=https://books.google.com/?id=LYc1tSYonrQC&pg=PA165 |title=Constitutional & Administrative Law |page=165 |author=Barnett, Hilaire |author2=Jago, Robert |edition=8th |year=2011 |isbn=978-0-415-56301-7 |publisher=Routledge |location=Abingdon}}Compare to section 1 of both of the 1800 [[Acts of Union (1800)|Acts of Union]] which reads: the ''Kingdoms of Great Britain and Ireland shall...be united into one Kingdom, by the Name of "The United Kingdom of Great Britain and Ireland"'' The term "United Kingdom" is found in informal use during the 18th century and the country was also occasionally referred to as the "United Kingdom of Great Britain" though its full official name, from 1707 to 1800, was merely "Great Britain", without a "long form".See [[s:Act of Union 1707#Article 1 (name of the new kingdom)|Article One]] of the Act of Union 1707."After the political union of England and Scotland in 1707, the nation's official name became 'Great Britain'", ''The American Pageant, Volume 1'', Cengage Learning (2012)"From 1707 until 1801 ''Great Britain'' was the official designation of the kingdoms of England and Scotland". ''The Standard Reference Work: For the Home, School and Library, Volume 3'', Harold Melvin Stanford (1921)"In 1707, on the union with Scotland, 'Great Britain' became the official name of the British Kingdom, and so continued until the union with Ireland in 1801". ''United States Congressional serial set, Issue 10; Issue 3265'' (1895){{cite web |url=http://www.historyworld.net/wrldhis/PlainTextHistories.asp?historyid=ab07 |title=History of Great Britain (from 1707) |authorlink=Bamber Gascoigne |author=Gascoigne, Bamber |publisher=History World |accessdate=18 July 2011}} The [[Acts of Union 1800]] united the Kingdom of Great Britain and the [[Kingdom of Ireland]] in 1801, forming the [[United Kingdom of Great Britain and Ireland]]. Following the [[partition of Ireland]] and the independence of the [[Irish Free State]] in 1922, which left [[Northern Ireland]] as the only part of the island of Ireland within the United Kingdom, the name "United Kingdom of Great Britain and Northern Ireland" was adopted.{{cite book |title=The Irish Civil War 1922–23 |author=Cottrell, P. |year=2008 |page=85 |isbn=1-84603-270-9}} + +Although the United Kingdom, as a sovereign state, is a country, England, Scotland, [[Wales]] and, to a lesser degree, Northern Ireland, are also regarded as countries, though they are not sovereign states.{{citation |author1=S. Dunn |author2=H. Dawson |year=2000 |title=An Alphabetical Listing of Word, Name and Place in Northern Ireland and the Living Language of Conflict |publisher=Edwin Mellen Press |location=Lampeter |quote=One specific problem—in both general and particular senses—is to know what to call Northern Ireland itself: in the general sense, it is not a country, or a province, or a state—although some refer to it contemptuously as a statelet: the least controversial word appears to be jurisdiction, but this might change.}}{{cite web |url=http://www.iso.org/iso/iso_3166-2_newsletter_ii-3_2011-12-13.pdf |title=Changes in the list of subdivision names and code elements |work=ISO 3166-2 |publisher=International Organization for Standardization |date=15 December 2011 |accessdate=28 May 2012}} Scotland, Wales and Northern Ireland have devolved self-government.[https://books.google.com/?id=gPkDAQAAIAAJ Population Trends, Issues 75–82, p.38], 1994, UK Office of Population Censuses and Surveys[https://books.google.com/?id=2u8rD6F-yg0C&pg=PA7 Life in the United Kingdom: a journey to citizenship, p. 7], United Kingdom Home Office, 2007, {{ISBN|978-0-11-341313-3}}. The British Prime Minister's website has used the phrase "countries within a country" to describe the United Kingdom. Some statistical summaries, such as those for the twelve [[NUTS of the United Kingdom|NUTS 1 regions of the United Kingdom]], also refer to Scotland, Wales and Northern Ireland as "regions".{{cite web |url=http://www.ons.gov.uk/ons/dcp171778_346117.xml |title=Statistical bulletin: Regional Labour Market Statistics |accessdate=5 March 2014 |deadurl=yes |archiveurl=https://web.archive.org/web/20141224045523/http://www.ons.gov.uk/ons/dcp171778_346117.xml |archivedate=24 December 2014 |df=dmy-all }}{{cite web |url=http://www.gmb.org.uk/newsroom/fall-in-earnings-value-during-recession |title=13.4% Fall In Earnings Value During Recession |accessdate=5 March 2014}} Northern Ireland is also referred to as a "province".{{cite book |author1=Dunn, Seamus |author2=Dawson, Helen. |title=An Alphabetical Listing of Word, Name and Place in Northern Ireland and the Living Language of Conflict |year=2000 |publisher=Edwin Mellen Press |place=Lampeter |isbn=978-0-7734-7711-7}}{{cite book |author=Murphy, Dervla |title=A Place Apart |year=1979 |publisher=Penguin |place=London |isbn=978-0-14-005030-1}} With regard to Northern Ireland, the descriptive name used "can be controversial, with the choice often revealing one's political preferences".{{Cite book |last1=Whyte |first1=John |authorlink1=John Henry Whyte |last2=FitzGerald |first2=Garret |authorlink2=Garret FitzGerald |year=1991 |title=Interpreting Northern Ireland |location=Oxford |publisher=Clarendon Press |isbn=978-0-19-827380-6}} + +The term "Britain" is often used as synonym for the United Kingdom. The term "Great Britain", by contrast, refers conventionally to the island of Great Britain, or politically to England, Scotland and Wales in combination.{{cite news |url=https://www.theguardian.com/styleguide/page/0,,184840,00.html |title=Guardian Unlimited Style Guide |publisher=Guardian News and Media Limited |accessdate=23 August 2011 |location=London |date=19 December 2008}}{{cite news |url=http://news.bbc.co.uk/1/hi/programmes/radio_newsroom/1099593.stm#g |title=BBC style guide (Great Britain) |accessdate=23 August 2011 |publisher=BBC News |date=19 August 2002}}{{cite web |url=http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |title=Key facts about the United Kingdom |archiveurl=http://webarchive.nationalarchives.gov.uk/20121015000000/http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |archivedate=15 October 2012 |accessdate=8 March 2015 |work=Government, citizens and rights |publisher=HM Government}} However, it is sometimes used as a loose synonym for the United Kingdom as a whole.{{cite web |url=http://www.merriam-webster.com/dictionary/great%20britain |title=Merriam-Webster Dictionary Online Definition of ''Great Britain'' |publisher=[[Merriam Webster]] |accessdate=5 November 2017}}{{Failed verification|date=November 2017}}[[New Oxford American Dictionary]]: "Great Britain: England, Wales, and Scotland considered as a unit. The name is also often used loosely to refer to the United Kingdom." GB and GBR are the [[International Organization for Standardization|standard]] country codes for the United Kingdom (see [[ISO 3166-2:GB|ISO 3166-2]] and [[ISO 3166-1 alpha-3]]) and are consequently used by international organisations to refer to the United Kingdom. Additionally, [[Great Britain at the Olympics|the United Kingdom's Olympic team]] competes under the name "Great Britain" or "Team GB".{{cite web |title=Great Britain |url=http://www.olympic.org/great-britain |publisher=International Olympic Committee |accessdate=10 May 2011}}{{cite news |last1=Mulgrew |first1=John |title=Team GB Olympic name row still simmering in Northern Ireland |url=http://www.belfasttelegraph.co.uk/news/northern-ireland/team-gb-olympic-name-row-still-simmering-in-northern-ireland-28776939.html |accessdate=9 March 2015 |work=Belfast Telegraph |date=2 August 2012}} + +The adjective "British" is commonly used to refer to matters relating to the United Kingdom. The term has no definite legal connotation, but is used in law to refer to United Kingdom citizenship and [[British nationality law|matters to do with nationality]].{{cite book |url=https://books.google.com/?id=HT_GS2zgN5QC&pg=PA36 |title=Constitutional and administrative law |volume=1 |page=36 |author=Bradley, Anthony Wilfred |author2=Ewing, Keith D. |edition=14th |publisher=Pearson Longman |location=Harlow |year=2007 |isbn=978-1-4058-1207-8}} People of the United Kingdom use a number of different terms to describe their national identity and may identify themselves as being British; or as being English, [[Scottish people|Scottish]], [[Welsh people|Welsh]], [[People of Northern Ireland|Northern Irish]], or Irish;{{cite web |url=http://www.ark.ac.uk/nilt/2010/Community_Relations/NINATID.html |title=Which of these best describes the way you think of yourself? |year=2010 |work=Northern Ireland Life and Times Survey 2010 |publisher=ARK – Access Research Knowledge |accessdate=1 July 2010}} or as being both.{{cite book |url=https://books.google.com/?id=u8gZklxHTMUC&pg=PA275 |title=Regionalism after regionalisation: Spain, France and the United Kingdom |pages=275–277 |author=Schrijver, Frans |publisher=Amsterdam University Press |year=2006 |isbn=978-90-5629-428-1}} + +In 2006, a new design of [[British passport]] was introduced. Its first page shows the long form name of the state in English, [[Welsh language|Welsh]] and [[Scottish Gaelic]].{{cite news |url=https://www.theguardian.com/commentisfree/2010/dec/11/ian-jack-saddened-by-scotland-going-gaelic |location=London |work=The Guardian |first=Ian |last=Jack |title=Why I'm saddened by Scotland going Gaelic |date=11 December 2010}} In Welsh, the long form name of the state is "Teyrnas Unedig Prydain Fawr a Gogledd Iwerddon", with "Teyrnas Unedig" being used as a short form name on government websites.{{cite web |url=http://www.direct.gov.uk/cy/Governmentcitizensandrights/LivingintheUK/DG_10012517CY |title=Ffeithiau allweddol am y Deyrnas Unedig |publisher=Directgov – Llywodraeth, dinasyddion a hawliau |archiveurl=https://web.archive.org/web/20120924102112/http://www.direct.gov.uk/cy/Governmentcitizensandrights/LivingintheUK/DG_10012517CY |archivedate=24 September 2012 |accessdate=8 March 2015}} However, it is usually abbreviated to "DU" for the mutated form "Y Deyrnas Unedig". In Scottish Gaelic, the long form is "Rìoghachd Aonaichte Bhreatainn is Èireann a Tuath" and the short form "Rìoghachd Aonaichte". + +==History== +{{See also|History of the British Isles}} ` // let doc = wtf(str) // console.log(doc.infobox(0)) let doc = wtf(str) -// console.log(doc.sentence().bolds()) -console.log(doc.title()) +console.log(doc.section().citation()) diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 239761e1..27599752 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -26,21 +26,24 @@ class Section { * @param {Document} doc the document that this section belongs to */ constructor(data, doc) { - /** - * - * @private - * @type {Document} - */ - this._doc = doc - - this._title = data.title || '' - this._depth = data.depth - this._wiki = data.wiki || '' - this._templates = [] - this._tables = [] - this._infoboxes = [] - this._references = [] - this._paragraphs = [] + let props = { + doc: doc, + title: data.title || '', + depth: data.depth, + wiki: data.wiki || '', + templates: [], + tables: [], + infoboxes: [], + references: [], + paragraphs: [], + } + Object.keys(props).forEach((k) => { + Object.defineProperty(this, '_' + k, { + enumerable: false, + writable: true, + value: props[k], + }) + }) //parse-out ' and {{start}}...{{end}} templates const startEndTemplates = parse.startEndTemplates(this, doc) @@ -115,9 +118,6 @@ class Section { let arr = this.paragraphs().reduce((list, p) => { return list.concat(p.sentences()) }, []) - if (typeof clue === 'number') { - return arr[clue] - } return arr || [] } @@ -130,9 +130,6 @@ class Section { */ paragraphs(clue) { let arr = this._paragraphs || [] - if (typeof clue === 'number') { - return arr[clue] - } return arr || [] } @@ -167,10 +164,6 @@ class Section { .reduce((acc, val) => acc.concat(val), []) //flatten the array .filter((val) => val !== undefined) //filter out all the undefined from the flattened empty arrays - if (typeof clue === 'number') { - return arr[clue] - } - if (typeof clue === 'string') { let link = arr.find((o) => o.page().toLowerCase() === clue.toLowerCase()) return link === undefined ? [] : [link] @@ -188,9 +181,6 @@ class Section { */ tables(clue) { let arr = this._tables || [] - if (typeof clue === 'number') { - return arr[clue] - } return arr } @@ -205,11 +195,6 @@ class Section { templates(clue) { let arr = this._templates || [] arr = arr.map((t) => t.json()) - - if (typeof clue === 'number') { - return arr[clue] - } - if (typeof clue === 'string') { clue = clue.toLowerCase() return arr.filter((o) => o.template === clue || o.name === clue) @@ -227,9 +212,7 @@ class Section { */ infoboxes(clue) { let arr = this._infoboxes || [] - if (typeof clue === 'number') { - return arr[clue] - } else if (typeof clue === 'string') { + if (typeof clue === 'string') { clue = clue.replace(/^infobox /i, '') clue = clue.trim().toLowerCase() return arr.filter((info) => info._type === clue) @@ -246,12 +229,6 @@ class Section { */ coordinates(clue) { let arr = [...this.templates('coord'), ...this.templates('coor')] - if (typeof clue === 'number') { - if (!arr[clue]) { - return [] - } - return arr[clue] - } return arr } @@ -267,9 +244,6 @@ class Section { this.paragraphs().forEach((p) => { arr = arr.concat(p.lists()) }) - if (typeof clue === 'number') { - return arr[clue] - } return arr } @@ -285,9 +259,6 @@ class Section { this.paragraphs().forEach((p) => { arr = arr.concat(p.interwiki()) }) - if (typeof clue === 'number') { - return arr[clue] - } return arr || [] } @@ -303,9 +274,6 @@ class Section { this.paragraphs().forEach((p) => { arr = arr.concat(p.images()) }) - if (typeof clue === 'number') { - return arr[clue] - } return arr || [] } @@ -318,9 +286,6 @@ class Section { */ references(clue) { let arr = this._references || [] - if (typeof clue === 'number') { - return arr[clue] - } return arr } @@ -463,15 +428,9 @@ class Section { } } } - if (typeof clue === 'string') { return children.find((s) => s.title().toLowerCase() === clue.toLowerCase()) } - - if (typeof clue === 'number') { - return children[clue] - } - return children } @@ -550,7 +509,7 @@ const singular = { lists: 'list', images: 'image', references: 'reference', - citations: 'reference', + citations: 'citation', } Object.keys(singular).forEach((k) => { let sing = singular[k] @@ -559,7 +518,7 @@ Object.keys(singular).forEach((k) => { if (typeof clue === 'number') { return arr[clue] } - return arr[0] + return arr[0] || null } }) module.exports = Section diff --git a/tests/Section.test.js b/tests/Section.test.js index 51ebed32..28bcf649 100644 --- a/tests/Section.test.js +++ b/tests/Section.test.js @@ -30,7 +30,6 @@ test('index - get', (t) => { test('indentation - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(1) - t.equal(sec.indentation(), 0, 'the index should equal "0"') t.end() }) @@ -59,8 +58,7 @@ test('sentences - get', (t) => { test('sentences - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(3) - - t.equal(sec.sentences(1).text().length, 229, 'the index should equal the expected') + t.equal(sec.sentence(1).text().length, 229, 'the index should equal the expected') t.end() }) @@ -68,7 +66,6 @@ test('sentences - get - number', (t) => { test('paragraphs - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(3) - const expected = [675, 1141, 299] t.deepEqual( sec.paragraphs().map((s) => s.text().length), @@ -81,8 +78,7 @@ test('paragraphs - get', (t) => { test('paragraphs - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(3) - - t.equal(sec.paragraphs(1).text().length, 1141, 'the paragraphs should equal the expected') + t.equal(sec.paragraph(1).text().length, 1141, 'the paragraphs should equal the expected') t.end() }) @@ -90,7 +86,6 @@ test('paragraphs - get - number', (t) => { test('paragraphs - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(3) - t.equal(sec.paragraph().text().length, 675, 'the paragraphs should equal the expected') t.end() }) @@ -98,15 +93,14 @@ test('paragraphs - get', (t) => { test('paragraphs - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(3) - t.equal(sec.paragraph(1).text().length, 1141, 'the paragraphs should equal the expected') t.end() }) + //links test('links - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(3) - const expected = [12, 10, 19, 34, 30, 25, 19, 25, 7, 21] t.deepEqual( sec.links().map((l) => l.href().length), @@ -119,15 +113,13 @@ test('links - get', (t) => { test('links - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(3) - - t.equal(sec.links(1).href().length, 10, 'the links should equal the expected') + t.equal(sec.link(1).href().length, 10, 'the links should equal the expected') t.end() }) test('links - get - string', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Chemical-biology.txt'), 'utf-8') let sec = wtf(str).section(3) - t.equal(sec.links('protein sequences')[0].href().length, 19, 'the links should equal the expected') t.end() }) @@ -136,7 +128,6 @@ test('links - get - string', (t) => { test('tables - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', '2008-British-motorcycle-Grand-Prix.txt'), 'utf-8') let sec = wtf(str).section(1) - const expected = [18] t.deepEqual( sec.tables().map((s) => s.keyValue().length), @@ -149,8 +140,7 @@ test('tables - get', (t) => { test('tables - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', '2008-British-motorcycle-Grand-Prix.txt'), 'utf-8') let sec = wtf(str).section(1) - - t.equal(sec.tables(0).keyValue().length, 18, 'the tables should equal the expected') + t.equal(sec.table(0).keyValue().length, 18, 'the tables should equal the expected') t.end() }) @@ -158,7 +148,6 @@ test('tables - get - number', (t) => { test('templates - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - const expected = [148, 195, 54, 49, 727, 176, 182, 399, 70, 23, 18, 18, 21] t.deepEqual( sec.templates().map((s) => JSON.stringify(s).length), @@ -171,15 +160,13 @@ test('templates - get', (t) => { test('templates - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - - t.equal(JSON.stringify(sec.templates(1)).length, 195, 'the templates should equal the expected') + t.equal(JSON.stringify(sec.template(1)).length, 195, 'the templates should equal the expected') t.end() }) test('templates - get - string', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - t.equal(JSON.stringify(sec.templates('coord')).length, 72, 'the templates should equal the expected') t.end() }) @@ -188,7 +175,6 @@ test('templates - get - string', (t) => { test('infoboxes - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - const expected = [33] t.deepEqual( sec.infoboxes().map((s) => JSON.stringify(s).length), @@ -201,8 +187,7 @@ test('infoboxes - get', (t) => { test('infoboxes - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - - t.equal(JSON.stringify(sec..infobox()).length, 33, 'the infoboxes should equal the expected') + t.equal(JSON.stringify(sec.infobox()).length, 33, 'the infoboxes should equal the expected') t.end() }) @@ -210,7 +195,6 @@ test('infoboxes - get - number', (t) => { test('coordinates - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - const expected = [70] t.deepEqual( sec.coordinates().map((s) => JSON.stringify(s).length), @@ -223,7 +207,6 @@ test('coordinates - get', (t) => { test('coordinates - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - t.equal(JSON.stringify(sec.coordinates(0)).length, 70, 'the coordinates should equal the expected') t.end() }) @@ -231,15 +214,14 @@ test('coordinates - get - number', (t) => { test('coordinates - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - t.equal(JSON.stringify(sec.coordinates(54)).length, 2, 'the coordinates should equal the expected') t.end() }) + //lists test('lists - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section('See also') - const expected = [22] t.deepEqual( sec.lists().map((s) => JSON.stringify(s.lines()).length), @@ -252,7 +234,6 @@ test('lists - get', (t) => { test('lists - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section('See also') - t.equal(JSON.stringify(sec.list().lines()).length, 22, 'the lists should equal the expected') t.end() }) @@ -263,7 +244,6 @@ test('lists - get - number', (t) => { test('images - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section('Background') - const expected = [124, 79, 89] t.deepEqual( sec.images().map((s) => s.url().length), @@ -276,15 +256,13 @@ test('images - get', (t) => { test('images - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section('Background') - - t.equal(sec.images(0).url().length, 124, 'the images should equal the expected') + t.equal(sec.image().url().length, 124, 'the images should equal the expected') t.end() }) test('images - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - const expected = [] t.deepEqual( sec.images().map((s) => s.url().length), @@ -298,46 +276,10 @@ test('images - get', (t) => { test('references - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - - const expected = [ - 15, - 104, - 58, - 38, - 50, - 0, - 0, - 0, - 30, - 33, - 34, - 0, - 71, - 0, - 56, - 85, - 16, - 59, - 64, - 29, - 0, - 0, - 0, - 0, - 0, - 26, - 60, - 0, - 35, - 87, - 90, - 42, - 0, - 0, - ] - t.deepEqual( + const expected = '15,104,58,38,50,0,0,0,30,33,34,0,71,0,56,85,16,59,64,29,0,0,0,0,0,26,60,0,35,87,90,42,0,0' + t.equal( sec.references().map((s) => s.title().length), - expected, + expected.split(','), 'the references should equal the expected' ) t.end() @@ -346,53 +288,20 @@ test('references - get', (t) => { test('references - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - - t.equal(sec.references(0).title().length, 15, 'the references should equal the expected') + t.equal(sec.reference().title().length, 15, 'the references should equal the expected') t.end() }) + //citations -- alias of references test('references - get', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') let sec = wtf(str).section(0) - - const expected = [ - 15, - 104, - 58, - 38, - 50, - 0, - 0, - 0, - 30, - 33, - 34, - 0, - 71, - 0, - 56, - 85, - 16, - 59, - 64, - 29, - 0, - 0, - 0, - 0, - 0, - 26, - 60, - 0, - 35, - 87, - 90, - 42, - 0, - 0, - ] - t.deepEqual( - sec.citations().map((s) => s.title().length), + const expected = '15,104,58,38,50,0,0,0,30,33,34,0,71,0,56,85,16,59,64,29,0,0,0,0,0,26,60,0,35,87,90,42,0,0' + t.equal( + sec + .citations() + .map((s) => s.title().length) + .join(','), expected, 'the citations should equal the expected' ) @@ -401,9 +310,8 @@ test('references - get', (t) => { test('citations - get - number', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'United-Kingdom.txt'), 'utf-8') - let sec = wtf(str).section(0) - - t.equal(sec.citations(0).title().length, 15, 'the citations should equal the expected') + let sec = wtf(str).section() + t.equal(sec.citation().title().length, 15, 'the citations should equal the expected') t.end() }) //remove diff --git a/tests/page.test.js b/tests/page.test.js index f250ad38..7b8ba312 100644 --- a/tests/page.test.js +++ b/tests/page.test.js @@ -8,7 +8,7 @@ test('royal_cinema page', (t) => { t.equal(doc.categories().length, 4, 'cat-length') t.equal(doc.infobox().get('opened').text(), '1939', 'year-string') - // t.equal(doc..infobox().keyValue()['opened'], 1939, 'year-number'); + // t.equal(doc.infobox().keyValue()['opened'], 1939, 'year-number'); t.end() }) diff --git a/tests/paragraphs.test.js b/tests/paragraphs.test.js index f53af494..5e910cba 100644 --- a/tests/paragraphs.test.js +++ b/tests/paragraphs.test.js @@ -53,7 +53,7 @@ Paragraph two!` const doc = wtf(str) t.equal(doc.paragraphs().length, 2, 'paragraphs') t.equal(doc.paragraph().text(), 'hello world', 'first paragraph') - t.equal(doc.paragraphs(1).text(), 'Paragraph two!', '2nd paragraph') + t.equal(doc.paragraph(1).text(), 'Paragraph two!', '2nd paragraph') t.end() }) @@ -83,7 +83,7 @@ Second paragraph here.` const doc = wtf(str) t.equal(doc.paragraphs().length, 2, 'paragraphs') t.equal(doc.paragraph().text(), 'hello world. Up here.', 'first paragraph') - t.equal(doc.paragraphs(1).text(), 'Second paragraph here.', '2nd paragraph') + t.equal(doc.paragraph(1).text(), 'Second paragraph here.', '2nd paragraph') t.equal(doc.tables().length, 1, 'got broken table') t.end() }) @@ -103,11 +103,11 @@ test('cyrillic symbols', (t) => { В напряжённом` const doc = wtf(str) t.equal(doc.paragraphs().length, 6, 'paragraphs') - t.equal(doc.paragraphs(0).text(), 'Соединённые', '1 paragraph') - t.equal(doc.paragraphs(1).text(), 'По «окончании»', '2 paragraph') - t.equal(doc.paragraphs(2).text(), 'После — четырёх', '3 paragraph') - t.equal(doc.paragraphs(3).text(), 'Лишённые', '4 paragraph') - t.equal(doc.paragraphs(4).text(), 'Спустя', '5 paragraph') - t.equal(doc.paragraphs(5).text(), 'В напряжённом', '6 paragraph') + t.equal(doc.paragraph(0).text(), 'Соединённые', '1 paragraph') + t.equal(doc.paragraph(1).text(), 'По «окончании»', '2 paragraph') + t.equal(doc.paragraph(2).text(), 'После — четырёх', '3 paragraph') + t.equal(doc.paragraph(3).text(), 'Лишённые', '4 paragraph') + t.equal(doc.paragraph(4).text(), 'Спустя', '5 paragraph') + t.equal(doc.paragraph(5).text(), 'В напряжённом', '6 paragraph') t.end() }) diff --git a/tests/table-span.test.js b/tests/table-span.test.js index 42b20952..f8c23d88 100644 --- a/tests/table-span.test.js +++ b/tests/table-span.test.js @@ -29,7 +29,7 @@ test('arenas table', (t) => { |- |}` let doc = wtf(str) - let rows = doc.tables(0).keyValue() + let rows = doc.table(0).keyValue() rows = rows.filter((r) => r.Arena) t.equal(rows.length, 2, 'two rows') t.equal(rows[0].Team, 'Boston Bruins', 'got team') @@ -62,7 +62,7 @@ test('double-header baseball game', (t) => { |147||September 14||@ [[2018 Philadelphia Phillies season|Phillies]] || 2–14 || [[Zach Eflin|Eflin]] (10–7) || '''[[Wei-Yin Chen|Chen]]''' (6–11) || — || 21,671 || 57–90 || L4 |}` let doc = wtf(str) - let rows = doc.tables(0).keyValue() + let rows = doc.table(0).keyValue() t.equal(rows.length, 4, 'all rows') t.equal(rows[0].Attendance, '20,423', '1') t.equal(rows[1].Attendance, '22,640', '2') From 918a62e1edfdfb7ba618361857eb287f21057e7e Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 14:54:48 -0500 Subject: [PATCH 035/117] continued test refactoring --- scratch.js | 27 +--------- src/01-document/Document.js | 2 +- tests/Document.test.js | 105 +++++++++++++++--------------------- tests/table.test.js | 48 ++++++++--------- tests/template.test.js | 2 +- 5 files changed, 72 insertions(+), 112 deletions(-) diff --git a/scratch.js b/scratch.js index 70a1931e..0253d2cd 100644 --- a/scratch.js +++ b/scratch.js @@ -11,32 +11,9 @@ wtf.extend(require('./plugins/html/src')) // }) let str = ` -The '''United Kingdom of Great Britain and Northern Ireland''', commonly known as the '''United Kingdom''' ('''UK''') and colloquially '''Great Britain''' ('''GB''') or simply '''Britain''', is a [[sovereign state|sovereign country]] in western Europe. Lying off the north-western coast of the [[Continental Europe|European mainland]], the United Kingdom includes the island of Great Britain, the north-eastern part of the island of Ireland and many smaller islands.{{cite web |title=Definition of Great Britain in English |url=http://www.oxforddictionaries.com/definition/english/Great-Britain?q=Great+Britain |publisher=Oxford University Press |accessdate=29 October 2014 |quote=Great Britain is the name for the island that comprises England, Scotland and Wales, although the term is also used loosely to refer to the United Kingdom.}} [[Northern Ireland]] is the only part of the United Kingdom that shares [[Republic of Ireland–United Kingdom border|a land border]] with another sovereign state{{mdashb}}the [[Republic of Ireland]].Although Northern Ireland is the only part of the UK that shares a land border with another sovereign state, two of [[British Overseas Territories|its Overseas Territories]] also share land borders with other sovereign countries. [[Gibraltar]] shares [[Gibraltar-Spain border|a border]] with Spain, while the [[Sovereign Base Areas of Akrotiri and Dhekelia]] share borders with the [[Republic of Cyprus]], the [[Turkish Republic of Northern Cyprus]] and the UN [[buffer zone]] separating the two Cypriot polities. Apart from this land border, the United Kingdom is surrounded by the Atlantic Ocean, with the [[North Sea]] to its east, the [[English Channel]] to its south and the [[Celtic Sea]] to its south-south-west, giving it the [[List of countries by length of coastline|12th-longest coastline in the world]]. The [[Irish Sea]] lies between Great Britain and Ireland. With an area of {{convert|242500|km2|sqmi}}, the United Kingdom is the [[List of countries by area|78th-largest sovereign state in the world]] and the [[List of European countries by area|11th-largest in Europe]]. It is also the [[List of countries and dependencies by population|21st-most populous country]], with an estimated 65.5 million inhabitants. Together, this makes it the [[List of sovereign states and dependent territories by population density|fourth-most densely populated country]] in the [[European Union]] (EU).{{refn|group=note|In the [[United Kingdom European Union membership referendum, 2016|referendum of 23 June 2016]], a majority voted for the United Kingdom to withdraw from the European Union, but the process and date for [[Brexit]] have yet to be determined.}}{{cite web |url=http://visual.ons.gov.uk/uk-perspectives-2016-the-uk-in-an-european-context/ |title=UK Perspectives 2016: The UK in a European context |publisher=[[Office for National Statistics]] |date=26 May 2016 |accessdate=16 June 2016}} - -The United Kingdom is a [[constitutional monarchy]] with a [[parliamentary system|parliamentary democracy]].[http://www.royal.gov.uk/MonarchUK/HowtheMonarchyworks/Whatisconstitutionalmonarchy.aspx The British Monarchy, ''What is constitutional monarchy?'']. Retrieved 17 July 2013[https://www.cia.gov/library/publications/the-world-factbook/geos/uk.html CIA, ''The World Factbook'']. Retrieved 17 July 2013 The [[Monarchy of the United Kingdom|monarch]] is [[Queen Elizabeth II]], who has [[reign]]ed since 6 February 1952. The capital of the United Kingdom and its largest city is [[London]], a [[global city]] and [[financial centre]] with an urban area population of 10.3 million, the fourth-largest in Europe and [[Largest urban areas of the European Union|second-largest in the European Union]].The 30 Largest Urban Agglomerations Ranked by Population Size at Each Point in Time, 1950-2030, [http://esa.un.org/unpd/wup/CD-ROM/ World Urbanization Prospects, the 2014 revision], Population Division of the [[United Nations Department of Economic and Social Affairs]]. Retrieved 22 February 2015. Other major [[List of urban areas in the United Kingdom|urban areas in the United Kingdom]] include the [[conurbation]]s centred on [[West Midlands conurbation|Birmingham]], [[West Yorkshire Urban Area|Leeds]], [[Greater Glasgow|Glasgow]], [[Liverpool Urban Area|Liverpool]] and [[Greater Manchester Built-up Area|Manchester]]. The United Kingdom consists of [[countries of the United Kingdom|four countries]]—[[England]], [[Scotland]], [[Wales]] and [[Northern Ireland]].{{cite web |url=http://www.number10.gov.uk/Page823 |archive-url=http://webarchive.nationalarchives.gov.uk/20080909013512/http://www.number10.gov.uk/Page823 |archive-date=9 September 2008 |title=Countries within a country |publisher=Prime Minister's Office |date=10 January 2003 |accessdate=8 March 2015 |deadurl=yes}} The last three have [[devolution in the United Kingdom|devolved]] administrations,{{cite web |url=https://www.gov.uk/devolution-of-powers-to-scotland-wales-and-northern-ireland#devolved-administrations |title=Devolution of powers to Scotland, Wales and Northern Ireland |publisher=United Kingdom Government |accessdate=17 April 2013 |quote=In a similar way to how the government is formed from members from the two Houses of Parliament, members of the devolved legislatures nominate ministers from among themselves to comprise executives, known as the devolved administrations...}} each with varying powers,{{cite news |url=http://news.bbc.co.uk/1/hi/education/7859034.stm |title=Fall in UK university students |publisher=BBC News |date=29 January 2009}}{{cite web |url=http://www.transport-research.info/web/countryprofiles/uk.cfm |title=Country Overviews: United Kingdom |publisher=Transport Research Knowledge Centre |accessdate=28 March 2010 |deadurl=yes |archiveurl=https://web.archive.org/web/20100404062853/http://www.transport-research.info/web/countryprofiles/uk.cfm |archivedate=4 April 2010 |df=}} based in their capitals, [[Edinburgh]], [[Cardiff]] and [[Belfast]], respectively. The nearby [[Isle of Man]], [[Bailiwick of Guernsey]] and [[Bailiwick of Jersey]] are not part of the United Kingdom, being [[Crown dependencies]] with the [[Government of the United Kingdom|British Government]] responsible for defence and international representation.{{cite web |url=http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |archivedate=15 October 2012 |title=Key facts about the United Kingdom |archiveurl=http://webarchive.nationalarchives.gov.uk/20121015000000/http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |accessdate=6 March 2015 |publisher=[[Directgov]] |quote=
The full title of this country is 'the United Kingdom of Great Britain and Northern Ireland'. Great Britain is made up of England, Scotland and Wales. The United Kingdom (UK) is made up of England, Scotland, Wales and Northern Ireland. 'Britain' is used informally, usually meaning the United Kingdom.
The Channel Islands and the Isle of Man are not part of the UK.
|deadurl=yes |df=}}
- -Prior to the [[History of the formation of the United Kingdom|creation of the United Kingdom]], Wales had already been conquered and annexed by the [[Kingdom of England]]. This meant that the [[United Kingdom of Great Britain|united kingdom]] created in 1707 by the [[Treaty of Union]] between England and [[Kingdom of Scotland|Scotland]] encompassed all of [[Great Britain]]. The [[Kingdom of Ireland]] then merged with this state in 1801 to form the [[United Kingdom of Great Britain and Ireland]]. Five-sixths of Ireland seceded from the UK in 1922, leaving the present formulation of the United Kingdom of Great Britain and Northern Ireland.The [[Anglo-Irish Treaty]] was signed on 6 December 1921 to resolve the [[Irish War of Independence]]. When it took effect one year later, it established the [[Irish Free State]] as a separate [[dominion]] within the [[Commonwealth of Nations|Commonwealth]]. The UK's current name was adopted to reflect the change. There are [[British Overseas Territories|fourteen British Overseas Territories]].{{cite web |url=https://www.gov.uk/government/policies/protecting-and-developing-the-overseas-territories |title=Supporting the Overseas Territories |publisher=[[Foreign and Commonwealth Office]] |accessdate=9 March 2015}} These are the remnants of the [[British Empire]] which, at its height in the 1920s, encompassed almost a quarter of the world's land mass and was the [[List_of_largest_empires#Empires_at_their_greatest_extent|largest empire in history]]. British influence can be observed in the language, culture and legal systems of many of [[List of countries that have gained independence from the United Kingdom|its former colonies]]. - -The United Kingdom is a [[developed country]] and has the world's [[List of countries by GDP (nominal)|sixth-largest economy]] by nominal GDP {{cite web|title=Britain crashes out of world's top 5 economies|url=http://money.cnn.com/2017/11/22/news/economy/uk-france-biggest-economies-in-the-world|publisher=[[CNN]]}}. and [[List of countries by GDP (PPP)|ninth-largest economy]] by [[purchasing power parity]]. The UK is considered to have a [[World Bank high-income economy|high-income economy]] and is categorised as very high in the [[Human Development Index]], ranking [[List of countries by Human Development Index|16th in the world]]. It was the world's first industrialised country and the world's foremost [[Power (international relations)|power]] during the 19th and early 20th centuries.{{cite book |title=The First Industrial Nation: the Economic History of Britain, 1700–1914 |publisher=Routledge |location=London |author=Mathias, P. |year=2001 |isbn=0-415-26672-6}}{{cite book |last=Ferguson |first=Niall |year=2004 |title=Empire: The rise and demise of the British world order and the lessons for global power |publisher=Basic Books |location=New York |isbn=0-465-02328-2}} The UK remains a [[great power]] with considerable economic, cultural, military, scientific and political [[Sphere of influence|influence]] internationally.{{cite book |author1=T. V. Paul |author2=James J. Wirtz |author3=Michel Fortmann |title=Balance of Power |publisher=State University of New York Press, 2005 |year=2005 |pages=59, 282 |isbn=0791464016 |url=https://www.google.com/books?id=9jy28vBqscQC&pg=PA59&dq="Great+power"}} ''Accordingly, the great powers after the Cold War are Britain, China, France, Germany, Japan, Russia and the United States'' p.59{{cite book |last=McCourt |first=David |title=Britain and World Power Since 1945: Constructing a Nation's Role in International Politics |publisher=University of Michigan Press |date=28 May 2014 |location=United States of America |pages= |isbn=0472072218 |url=https://books.google.com/?id=lwpOnwEACAAJ&dq=Britain+and+World+Power+Since+1945:+Constructing+a+Nation%27s+Role+in+International+Politics}} It is a recognised [[List of states with nuclear weapons|nuclear weapons state]] and is [[List of countries by military expenditures|seventh in military expenditure]] in the world.{{cite web |url=https://www.sipri.org/sites/default/files/Trends-world-military-expenditure-2016.pdf |title=Trends in World Military Expenditure, 2016 |publisher=[[Stockholm International Peace Research Institute]] |format=PDF |accessdate=26 April 2017}} The UK has been a [[permanent members of the United Nations Security Council|permanent member]] of the [[United Nations Security Council]] since its first session in 1946. It has been a [[Big Four (Western Europe)|leading member state]] of the EU and its predecessor, the [[European Economic Community]] (EEC), since 1973. However, on 23 June 2016, [[United Kingdom European Union membership referendum, 2016|a national referendum on the UK's membership of the EU]] resulted in a decision to leave, and [[Brexit negotiations|its exit from the EU is currently being negotiated]]. The UK is also a member of the [[Commonwealth of Nations]], the [[Council of Europe]], the [[G7 finance ministers]], the [[G7 forum]], the [[G-20 major economies|G20]], [[NATO]], the [[Organisation for Economic Co-operation and Development]] (OECD), and the [[World Trade Organization]] (WTO). - -==Etymology and terminology== -{{anchor|Etymology}} -{{See also|Britain (place name)|Terminology of the British Isles}} -The [[Acts of Union 1707|1707 Acts of Union]] declared that the kingdoms of [[Kingdom of England|England]] and [[Kingdom of Scotland|Scotland]] were "United into One Kingdom by the Name of [[Kingdom of Great Britain|Great Britain]]", though the new state is also referred to in the Acts as the "Kingdom of Great Britain", "United Kingdom of Great Britain" and "United Kingdom".{{cite web |url=http://www.scotshistoryonline.co.uk/union.html |title=Treaty of Union, 1706 |publisher=Scots History Online |accessdate=23 August 2011}}{{cite book |url=https://books.google.com/?id=LYc1tSYonrQC&pg=PA165 |title=Constitutional & Administrative Law |page=165 |author=Barnett, Hilaire |author2=Jago, Robert |edition=8th |year=2011 |isbn=978-0-415-56301-7 |publisher=Routledge |location=Abingdon}}Compare to section 1 of both of the 1800 [[Acts of Union (1800)|Acts of Union]] which reads: the ''Kingdoms of Great Britain and Ireland shall...be united into one Kingdom, by the Name of "The United Kingdom of Great Britain and Ireland"'' The term "United Kingdom" is found in informal use during the 18th century and the country was also occasionally referred to as the "United Kingdom of Great Britain" though its full official name, from 1707 to 1800, was merely "Great Britain", without a "long form".See [[s:Act of Union 1707#Article 1 (name of the new kingdom)|Article One]] of the Act of Union 1707."After the political union of England and Scotland in 1707, the nation's official name became 'Great Britain'", ''The American Pageant, Volume 1'', Cengage Learning (2012)"From 1707 until 1801 ''Great Britain'' was the official designation of the kingdoms of England and Scotland". ''The Standard Reference Work: For the Home, School and Library, Volume 3'', Harold Melvin Stanford (1921)"In 1707, on the union with Scotland, 'Great Britain' became the official name of the British Kingdom, and so continued until the union with Ireland in 1801". ''United States Congressional serial set, Issue 10; Issue 3265'' (1895){{cite web |url=http://www.historyworld.net/wrldhis/PlainTextHistories.asp?historyid=ab07 |title=History of Great Britain (from 1707) |authorlink=Bamber Gascoigne |author=Gascoigne, Bamber |publisher=History World |accessdate=18 July 2011}} The [[Acts of Union 1800]] united the Kingdom of Great Britain and the [[Kingdom of Ireland]] in 1801, forming the [[United Kingdom of Great Britain and Ireland]]. Following the [[partition of Ireland]] and the independence of the [[Irish Free State]] in 1922, which left [[Northern Ireland]] as the only part of the island of Ireland within the United Kingdom, the name "United Kingdom of Great Britain and Northern Ireland" was adopted.{{cite book |title=The Irish Civil War 1922–23 |author=Cottrell, P. |year=2008 |page=85 |isbn=1-84603-270-9}} - -Although the United Kingdom, as a sovereign state, is a country, England, Scotland, [[Wales]] and, to a lesser degree, Northern Ireland, are also regarded as countries, though they are not sovereign states.{{citation |author1=S. Dunn |author2=H. Dawson |year=2000 |title=An Alphabetical Listing of Word, Name and Place in Northern Ireland and the Living Language of Conflict |publisher=Edwin Mellen Press |location=Lampeter |quote=One specific problem—in both general and particular senses—is to know what to call Northern Ireland itself: in the general sense, it is not a country, or a province, or a state—although some refer to it contemptuously as a statelet: the least controversial word appears to be jurisdiction, but this might change.}}{{cite web |url=http://www.iso.org/iso/iso_3166-2_newsletter_ii-3_2011-12-13.pdf |title=Changes in the list of subdivision names and code elements |work=ISO 3166-2 |publisher=International Organization for Standardization |date=15 December 2011 |accessdate=28 May 2012}} Scotland, Wales and Northern Ireland have devolved self-government.[https://books.google.com/?id=gPkDAQAAIAAJ Population Trends, Issues 75–82, p.38], 1994, UK Office of Population Censuses and Surveys[https://books.google.com/?id=2u8rD6F-yg0C&pg=PA7 Life in the United Kingdom: a journey to citizenship, p. 7], United Kingdom Home Office, 2007, {{ISBN|978-0-11-341313-3}}. The British Prime Minister's website has used the phrase "countries within a country" to describe the United Kingdom. Some statistical summaries, such as those for the twelve [[NUTS of the United Kingdom|NUTS 1 regions of the United Kingdom]], also refer to Scotland, Wales and Northern Ireland as "regions".{{cite web |url=http://www.ons.gov.uk/ons/dcp171778_346117.xml |title=Statistical bulletin: Regional Labour Market Statistics |accessdate=5 March 2014 |deadurl=yes |archiveurl=https://web.archive.org/web/20141224045523/http://www.ons.gov.uk/ons/dcp171778_346117.xml |archivedate=24 December 2014 |df=dmy-all }}{{cite web |url=http://www.gmb.org.uk/newsroom/fall-in-earnings-value-during-recession |title=13.4% Fall In Earnings Value During Recession |accessdate=5 March 2014}} Northern Ireland is also referred to as a "province".{{cite book |author1=Dunn, Seamus |author2=Dawson, Helen. |title=An Alphabetical Listing of Word, Name and Place in Northern Ireland and the Living Language of Conflict |year=2000 |publisher=Edwin Mellen Press |place=Lampeter |isbn=978-0-7734-7711-7}}{{cite book |author=Murphy, Dervla |title=A Place Apart |year=1979 |publisher=Penguin |place=London |isbn=978-0-14-005030-1}} With regard to Northern Ireland, the descriptive name used "can be controversial, with the choice often revealing one's political preferences".{{Cite book |last1=Whyte |first1=John |authorlink1=John Henry Whyte |last2=FitzGerald |first2=Garret |authorlink2=Garret FitzGerald |year=1991 |title=Interpreting Northern Ireland |location=Oxford |publisher=Clarendon Press |isbn=978-0-19-827380-6}} - -The term "Britain" is often used as synonym for the United Kingdom. The term "Great Britain", by contrast, refers conventionally to the island of Great Britain, or politically to England, Scotland and Wales in combination.{{cite news |url=https://www.theguardian.com/styleguide/page/0,,184840,00.html |title=Guardian Unlimited Style Guide |publisher=Guardian News and Media Limited |accessdate=23 August 2011 |location=London |date=19 December 2008}}{{cite news |url=http://news.bbc.co.uk/1/hi/programmes/radio_newsroom/1099593.stm#g |title=BBC style guide (Great Britain) |accessdate=23 August 2011 |publisher=BBC News |date=19 August 2002}}{{cite web |url=http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |title=Key facts about the United Kingdom |archiveurl=http://webarchive.nationalarchives.gov.uk/20121015000000/http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |archivedate=15 October 2012 |accessdate=8 March 2015 |work=Government, citizens and rights |publisher=HM Government}} However, it is sometimes used as a loose synonym for the United Kingdom as a whole.{{cite web |url=http://www.merriam-webster.com/dictionary/great%20britain |title=Merriam-Webster Dictionary Online Definition of ''Great Britain'' |publisher=[[Merriam Webster]] |accessdate=5 November 2017}}{{Failed verification|date=November 2017}}[[New Oxford American Dictionary]]: "Great Britain: England, Wales, and Scotland considered as a unit. The name is also often used loosely to refer to the United Kingdom." GB and GBR are the [[International Organization for Standardization|standard]] country codes for the United Kingdom (see [[ISO 3166-2:GB|ISO 3166-2]] and [[ISO 3166-1 alpha-3]]) and are consequently used by international organisations to refer to the United Kingdom. Additionally, [[Great Britain at the Olympics|the United Kingdom's Olympic team]] competes under the name "Great Britain" or "Team GB".{{cite web |title=Great Britain |url=http://www.olympic.org/great-britain |publisher=International Olympic Committee |accessdate=10 May 2011}}{{cite news |last1=Mulgrew |first1=John |title=Team GB Olympic name row still simmering in Northern Ireland |url=http://www.belfasttelegraph.co.uk/news/northern-ireland/team-gb-olympic-name-row-still-simmering-in-northern-ireland-28776939.html |accessdate=9 March 2015 |work=Belfast Telegraph |date=2 August 2012}} - -The adjective "British" is commonly used to refer to matters relating to the United Kingdom. The term has no definite legal connotation, but is used in law to refer to United Kingdom citizenship and [[British nationality law|matters to do with nationality]].{{cite book |url=https://books.google.com/?id=HT_GS2zgN5QC&pg=PA36 |title=Constitutional and administrative law |volume=1 |page=36 |author=Bradley, Anthony Wilfred |author2=Ewing, Keith D. |edition=14th |publisher=Pearson Longman |location=Harlow |year=2007 |isbn=978-1-4058-1207-8}} People of the United Kingdom use a number of different terms to describe their national identity and may identify themselves as being British; or as being English, [[Scottish people|Scottish]], [[Welsh people|Welsh]], [[People of Northern Ireland|Northern Irish]], or Irish;{{cite web |url=http://www.ark.ac.uk/nilt/2010/Community_Relations/NINATID.html |title=Which of these best describes the way you think of yourself? |year=2010 |work=Northern Ireland Life and Times Survey 2010 |publisher=ARK – Access Research Knowledge |accessdate=1 July 2010}} or as being both.{{cite book |url=https://books.google.com/?id=u8gZklxHTMUC&pg=PA275 |title=Regionalism after regionalisation: Spain, France and the United Kingdom |pages=275–277 |author=Schrijver, Frans |publisher=Amsterdam University Press |year=2006 |isbn=978-90-5629-428-1}} - -In 2006, a new design of [[British passport]] was introduced. Its first page shows the long form name of the state in English, [[Welsh language|Welsh]] and [[Scottish Gaelic]].{{cite news |url=https://www.theguardian.com/commentisfree/2010/dec/11/ian-jack-saddened-by-scotland-going-gaelic |location=London |work=The Guardian |first=Ian |last=Jack |title=Why I'm saddened by Scotland going Gaelic |date=11 December 2010}} In Welsh, the long form name of the state is "Teyrnas Unedig Prydain Fawr a Gogledd Iwerddon", with "Teyrnas Unedig" being used as a short form name on government websites.{{cite web |url=http://www.direct.gov.uk/cy/Governmentcitizensandrights/LivingintheUK/DG_10012517CY |title=Ffeithiau allweddol am y Deyrnas Unedig |publisher=Directgov – Llywodraeth, dinasyddion a hawliau |archiveurl=https://web.archive.org/web/20120924102112/http://www.direct.gov.uk/cy/Governmentcitizensandrights/LivingintheUK/DG_10012517CY |archivedate=24 September 2012 |accessdate=8 March 2015}} However, it is usually abbreviated to "DU" for the mutated form "Y Deyrnas Unedig". In Scottish Gaelic, the long form is "Rìoghachd Aonaichte Bhreatainn is Èireann a Tuath" and the short form "Rìoghachd Aonaichte". - -==History== -{{See also|History of the British Isles}} ` // let doc = wtf(str) // console.log(doc.infobox(0)) -let doc = wtf(str) -console.log(doc.section().citation()) +let doc = wtf('', { title: 'Barack Obama' }) +console.log(doc.url()) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index a0ee71f3..5e24f784 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -27,12 +27,12 @@ class Document { */ constructor(wiki, options) { options = options || {} - let props = { pageID: options.pageID || options.id || null, namespace: options.namespace || options.ns || null, lang: options.lang || options.language || null, domain: options.domain || null, + title: options.title || null, type: 'page', redirectTo: null, wikidata: options.wikidata || null, diff --git a/tests/Document.test.js b/tests/Document.test.js index 1316350b..77220b05 100644 --- a/tests/Document.test.js +++ b/tests/Document.test.js @@ -344,7 +344,7 @@ test('categories - get - if the clue is a number return the category in that ind [[Category:American people of German descent]] [[Category:American people of Scottish descent]] `) - t.equal(doc.categories(1), 'Writers from New York City', 'the categories at index 1') + t.equal(doc.category(1), 'Writers from New York City', 'the categories at index 1') t.end() }) @@ -494,45 +494,13 @@ test('sentences - get - if the sentences is in the option. ignore it', (t) => { test('sentences - get - if the clue is a undefined / unset return the list of sentences', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'statoil.txt'), 'utf-8') let doc = wtf(str) - const expected = [ - 90, - 77, - 104, - 55, - 62, - 58, - 94, - 45, - 91, - 75, - 43, - 66, - 126, - 128, - 100, - 210, - 83, - 187, - 43, - 56, - 101, - 65, - 103, - 90, - 68, - 136, - 91, - 75, - 122, - 14, - 116, - 48, - 98, - 186, - 17, - ] - t.deepEqual( - doc.sentences().map((p) => p.text().length), + const expected = + '90,77,104,55,62,58,94,45,91,75,43,66,126,128,100,210,83,187,43,56,101,65,103,90,68,136,91,75,122,14,116,48,98,186,17' + t.equal( + doc + .sentences() + .map((p) => p.text().length) + .join(','), expected, 'the sentences in the wiki text' ) @@ -551,9 +519,12 @@ test('sentences - get - if the clue is a string (not number) return all the sent let doc = wtf(str) const expected = '90,77,104,55,62,58,94,45,91,75,43,66,126,128,100,210,83,187,43,56,101,65,103,90,68,136,91,75,122,14,116,48,98,186,17' - t.deepEqual( - doc.sentences('string').map((p) => p.text().length), - expected.split(','), + t.equal( + doc + .sentences('string') + .map((p) => p.text().length) + .join(','), + expected, 'the sentences in the wiki text' ) t.end() @@ -806,9 +777,12 @@ test('references - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) const expected = '19,3,33,32,44,0,0,0,0,0,0,0,31,0,0,0,0,31,71,0,0,0,0,0,0,0,13,13,0,0,10,0,0,0' - t.deepEqual( - doc.references().map((r) => r.title().length), - expected.split(','), + t.equal( + doc + .references() + .map((r) => r.title().length) + .join(','), + expected, 'returns all references' ) t.end() @@ -826,8 +800,11 @@ test('references - get - if the clue is any other type then return all reference let doc = wtf(str) const expected = '19,3,33,32,44,0,0,0,0,0,0,0,31,0,0,0,0,31,71,0,0,0,0,0,0,0,13,13,0,0,10,0,0,0' t.deepEqual( - doc.references('string').map((re) => re.title().length), - expected.split(','), + doc + .references('string') + .map((re) => re.title().length) + .join(','), + expected, 'returns all references' ) t.end() @@ -838,9 +815,12 @@ test('citations - get - return all templates', (t) => { let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) const expected = '19,3,33,32,44,0,0,0,0,0,0,0,31,0,0,0,0,31,71,0,0,0,0,0,0,0,13,13,0,0,10,0,0,0' - t.deepEqual( - doc.citations().map((c) => c.title().length), - expected.split(','), + t.equal( + doc + .citations() + .map((c) => c.title().length) + .join(','), + expected, 'returns all citations' ) t.end() @@ -857,9 +837,12 @@ test('citations - get - if the clue is any other type then return all references let str = fs.readFileSync(path.join(__dirname, 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) const expected = '19,3,33,32,44,0,0,0,0,0,0,0,31,0,0,0,0,31,71,0,0,0,0,0,0,0,13,13,0,0,10,0,0,0' - t.deepEqual( - doc.citations('string').map((ci) => ci.title().length), - expected.split(','), + t.equal( + doc + .citations('string') + .map((ci) => ci.title().length) + .join(','), + expected, 'returns all citations' ) t.end() @@ -897,7 +880,7 @@ test('coordinates - get - if the clue is a number return the coordinates at that lat: 39.18861, lon: -120.10889, } - t.deepEqual(doc.coordinates(1), expected, 'the coordinates at index 1') + t.deepEqual(doc.coordinate(1), expected, 'the coordinates at index 1') t.end() }) @@ -954,7 +937,7 @@ const infoboxPage = ` }} ` -test('references - get - return all templates', (t) => { +test('infoboxes - get - return all templates', (t) => { let doc = wtf(infoboxPage) const expected = [201, 201, 89] t.deepEqual( @@ -965,19 +948,19 @@ test('references - get - return all templates', (t) => { t.end() }) -test('references - get - if the clue is a number return the references at that index', (t) => { +test('infoboxes - get - if the clue is a number return the infoboxes at that index', (t) => { let doc = wtf(infoboxPage) - t.deepEqual(JSON.stringify(doc.infobox(1).json()).length, 201, 'the references at index 1') + t.deepEqual(JSON.stringify(doc.infobox(1).json()).length, 201, 'the infoboxes at index 1') t.end() }) -test('references - get - if the clue is any other type then return all references', (t) => { +test('infoboxes - get - if the clue is any other type then return all references', (t) => { let doc = wtf(infoboxPage) - const expected = [201, 201, 89] + const expected = [] t.deepEqual( doc.infoboxes('string').map((info) => JSON.stringify(info.json()).length), expected, - 'returns all references' + 'returns all infoboxes' ) t.end() }) diff --git a/tests/table.test.js b/tests/table.test.js index dbfdc62c..05e11b21 100644 --- a/tests/table.test.js +++ b/tests/table.test.js @@ -3,7 +3,7 @@ const wtf = require('./lib') const readFile = require('./lib/_cachedPage') test('bluejays table', (t) => { - const arr = readFile('bluejays').tables(0).data + const arr = readFile('bluejays').table(0).data t.equal(arr.length, 8, 'table-length-bluejays') t.equal(arr[0]['Level'].text(), 'AAA', 'level-col') t.equal(arr[0]['Team'].text(), 'Buffalo Bisons', 'team-col') @@ -16,12 +16,12 @@ test('rnli stations', (t) => { const doc = readFile('rnli_stations') t.equal(doc.categories().length, 5, 'cat-length') - const intro = doc.sections(0) + const intro = doc.section(0) t.equal(intro.title(), '', 'intro-title') t.equal(intro.images().length > 0, true, 'intro-image-length') t.equal(intro.sentences().length > 0, true, 'intro-sentence-length') - const key = doc.sections(1) + const key = doc.section(1) t.equal(key._depth, 0, 'key-depth') t.equal(key.title(), 'Key', 'key-title') t.equal(key.sentences().length, 0, 'key-no-sentences') @@ -30,7 +30,7 @@ test('rnli stations', (t) => { t.deepEqual(key.lists(), [], 'key-no-lists') t.deepEqual(key.tables(), [], 'key-no-tables') - const lifeboat = doc.sections(2) + const lifeboat = doc.section(2) t.equal(lifeboat._depth, 1, 'lifeboat-depth') t.equal(lifeboat.template().list[0], 'Royal National Lifeboat Institution lifeboats', 'lifeboat-main') t.equal(lifeboat.list().json().length, 3, 'lifeboat-list') @@ -38,19 +38,19 @@ test('rnli stations', (t) => { t.deepEqual(lifeboat.images(), [], 'lifeboat-no-images') t.deepEqual(lifeboat.tables(), [], 'lifeboat-no-tables') - const east = doc.sections(6) + const east = doc.section(6) t.equal(east.title(), 'East Division', 'East Division') t.deepEqual(east.images(), [], 'East-no-images') t.deepEqual(east.lists(), [], 'East-no-lists') t.equal(east.sentences().length, 0, 'east-sentences') - const table = east.tables(0).data + const table = east.table(0).data t.equal(table.length, 42, 'east table-rows') t.equal(table[0].Location.text(), 'Hunstanton, Norfolk', 'east-table-data') t.equal(table[41]['Launch method'].text(), 'Carriage', 'east-table-data-end') - const south = doc.sections(7) - const sTable = south.tables(0).data + const south = doc.section(7) + const sTable = south.table(0).data t.equal(sTable.length, 35, 'south-table-rows') t.equal(sTable[0].Location.text(), 'Mudeford, Dorset', 'south-table-data') t.end() @@ -73,7 +73,7 @@ test('simple table', (t) => { | row 2, cell 3 |}` const obj = wtf(simple) - const table = obj.tables(0).data + const table = obj.table(0).data t.equal(table.length, 2, '2 rows') t.equal(table[0]['Header 1'].text(), 'row 1, cell 1', '1,1') t.equal(table[0]['Header 2'].text(), 'row 1, cell 2', '1,2') @@ -109,7 +109,7 @@ test('multiplication table', (t) => { | 5 || 10 || 15 |}` const obj = wtf(mult) - const table = obj.tables(0).data + const table = obj.table(0).data t.equal(table[0]['1'].text(), '1', '1x1') t.equal(table[1]['1'].text(), '2', '1x2') t.equal(table[1]['2'].text(), '4', '2x2') @@ -129,7 +129,7 @@ test('inline-table-test', (t) => { | 2,725 || ''9,200'' || 8,850 || 4,775 |}` const obj = wtf(inline) - const table = obj.tables(0).data + const table = obj.table(0).data t.equal(table[0].Year.text(), '2014', 'first year') t.equal(table[0].Africa.text(), '2,300', 'africa first-row') t.equal(table[0].Americas.text(), '8,950', 'america first-row') @@ -157,7 +157,7 @@ test('floating-tables-test', (t) => { |}` const obj = wtf(floating) t.equal(obj.tables().length, 2, 'two tables') - const table = obj.tables(0).data + const table = obj.table(0).data t.equal(table[0]['col1'].text(), 'Col 1, row 1', '1,1') t.end() }) @@ -184,7 +184,7 @@ test('wikisortable-tables-test', (t) => { |}` const obj = wtf(sortable) t.equal(obj.tables().length, 1, 'one table') - const table = obj.tables(0).data + const table = obj.table(0).data t.equal(table[0]['Alphabetic'].text(), 'd', '1,1') t.equal(table[0]['Numeric'].text(), '20', '1,2') t.equal(table[0]['Date'].text(), '2008-11-24', '1,3') @@ -211,7 +211,7 @@ test('messy-table-test', (t) => { |New York City |}` const obj = wtf(messy) - const table = obj.tables(0).json() + const table = obj.table(0).json() t.equal(table[1]['col1'].text, 'Nibelungen Bridge to Worms', 'col1 text') //const keyVal=obj.tables(0).keyValue() //t.equal() @@ -278,7 +278,7 @@ test('sortable table', (t) => { !Average:||1.82 |}` const doc = wtf(str) - const row = doc.tables(0).data[0] + const row = doc.table(0).data[0] t.equal(row.Height.text(), '1.85', 'got height') t.equal(row['Name and Surname'].text(), 'John Smith', 'got name') t.end() @@ -307,7 +307,7 @@ test('missing-row test', (t) => { |-align="center" bgcolor="bbffbb" |} Actual first sentence is here` - const row = wtf(str).tables(0).data[0] + const row = wtf(str).table(0).data[0] t.equal(row.Save.text(), '', 'got empty property') t.equal(row.Record.text(), '2–0', 'got last property') t.end() @@ -341,7 +341,7 @@ test('table rowspan', (t) => { | three B |}` const doc = wtf(str) - const table = doc.tables(0).keyValue() + const table = doc.table(0).keyValue() t.equal(table[0].col1, 'one', 'has init') t.equal(table[1].col1, 'one', 'has copy') t.equal(table[0].col2, 'two', 'has later') @@ -361,7 +361,7 @@ test('table colspan', (t) => { | three B |}` const doc = wtf(str) - const table = doc.tables(0).keyValue() + const table = doc.table(0).keyValue() t.equal(table[0].col1, 'one/two', 'has init') t.equal(table[0].col2, '', 'has empty span') t.equal(table[0].col3, 'three', 'has after span') @@ -389,7 +389,7 @@ test('first-row as header', (t) => { | may || sweden || caption |}` const obj = wtf(simple) - const table = obj.tables(0).json() + const table = obj.table(0).json() t.equal(table.length, 4, '4 rows') t.equal(table[0]['name'].text, 'spencer', 'got name 1') t.equal(table[0]['country'].text, 'canada', 'got country 1') @@ -415,7 +415,7 @@ test('two-rows as header', (t) => { |- | a || b || c || d || e |}` - const table = wtf(str).tables(0).keyValue() + const table = wtf(str).table(0).keyValue() t.equal(table.length, 1, '1 row') t.equal(table[0].A, 'a', 'got col 1') t.equal(table[0].D2, 'd', 'got col d2') @@ -439,7 +439,7 @@ test('two-header-rows-with-spans', (t) => { |- | a || b || c || d || e |}` - const table = wtf(str).tables(0).keyValue() + const table = wtf(str).table(0).keyValue() t.equal(table.length, 1, '1 row') t.equal(table[0].A, 'a', 'got col 1') t.equal(table[0].C, 'c', 'got col c') @@ -467,7 +467,7 @@ test('junky-table', (t) => { |[[Hard Rock Stadium]] |- |}` - const table = wtf(str).tables(0).keyValue() + const table = wtf(str).table(0).keyValue() t.equal(table.length, 2, '2 row2') t.equal(table[0].A, 'East', 'got col a1') t.equal(table[0].C, 'Orchard Park, New York', 'got col c1') @@ -494,7 +494,7 @@ test('table double bar', (t) => { || ccc |}` const doc = wtf(str) - const data = doc.tables(0).keyValue() + const data = doc.table(0).keyValue() t.equal(data[0].h1, 'a', 'h1') t.equal(data[0].h2, 'aa', 'h2') t.equal(data[0].h3, 'aaa', 'h3') @@ -525,7 +525,7 @@ b2 | c |}` const doc = wtf(str) - const data = doc.tables(0).keyValue() + const data = doc.table(0).keyValue() t.equal(data[0].h1, 'a', 'h1') t.equal(data[0].h2, 'b1 b2', 'h2') t.equal(data[0].h3, 'c', 'h3') diff --git a/tests/template.test.js b/tests/template.test.js index 83bb4c4f..19fa06f6 100644 --- a/tests/template.test.js +++ b/tests/template.test.js @@ -114,7 +114,7 @@ test('bluejays table', function (t) { | 2 || April 7 || @ [[Minnesota Twins|Twins]] || 9 - 3 || '''[[David Wells|Wells]]''' (1-0) || [[Mike Lincoln|Lincoln]] (0-1) || '''[[Roy Halladay|Halladay]]''' (1) || 9,220 || 1-1 |} ` - const arr = wtf(bluejays).tables(0).data + const arr = wtf(bluejays).table(0).data t.equal(arr.length, 2) t.equal(arr[0]['Number'].text(), '1', 'number') t.equal(arr[0]['Date'].text(), 'April 6', 'date') From 707418a53fd1301fb0e30f639d4809244fb3c6d1 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 15:05:41 -0500 Subject: [PATCH 036/117] all tests passing again. --- changelog.md | 7 ++++++- tests/Section.test.js | 16 ++++++---------- tests/fmt.test.js | 10 +++++----- tests/templates-inline.test.js | 6 +++--- tests/traverse.test.js | 6 +++--- tests/unit.test.js | 6 +++--- 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/changelog.md b/changelog.md index cfa75209..9a71e505 100644 --- a/changelog.md +++ b/changelog.md @@ -1,7 +1,12 @@ -
- -
```js const wtf = require('wtf_wikipedia') wtf.fetch('Toronto Raptors').then((doc) => { - doc.sentences()[0].text() - //'The Toronto Raptors are a Canadian professional basketball team ...' - let coach = doc.infobox().get('coach') coach.text() //'Nick Nurse' + + doc.sentences()[0].text() + //'The Toronto Raptors are a Canadian professional basketball team ...' }) ``` +
+ +
-## .text +## .text() get clean plaintext: @@ -92,7 +92,7 @@ doc.text() -## .json +## .json() get all the data from a page: @@ -103,7 +103,7 @@ doc.json() // { categories: ['Oral communication', 'Vocal skills'], sections: [{ title: 'Techniques' }], ...} ``` -the default json output is [really verbose](https://observablehq.com/@spencermountain/wtf-wikipedia-json), but you can cherry-pick things like this: +the default .json() output is *[really verbose](https://observablehq.com/@spencermountain/wtf-wikipedia-json)*, but you can cherry-pick data by poking-around like this: ```js // get just the links: @@ -134,8 +134,7 @@ run it on the client-side: ```html ``` -or from Deno/typescript/webpack: +or in Deno/typescript/webpack: ```js import spacetime from 'https://unpkg.com/spacetime/builds/spacetime.mjs' @@ -197,22 +196,20 @@ these add all sorts of new functionality: ```js wtf.extend(require('wtf-plugin-classify')) -wtf.fetch('Toronto Raptors').then((doc) => doc.classify()) +await wtf.fetch('Toronto Raptors').classify() // 'Organization/SportsTeam' wtf.extend(require('wtf-plugin-summary')) -wtf.fetch('Pulp Fiction').then((doc) => doc.summary()) +await wtf.fetch('Pulp Fiction').summary() // 'a 1994 American crime film' wtf.extend(require('wtf-plugin-person')) -wtf.fetch('David Bowie').then((doc) => doc.birthDate()) +await wtf.fetch('David Bowie').birthDate() // {year:1947, date:8, month:1} wtf.extend(require('wtf-plugin-i18n')) -wtf.fetch('Ziggy Stardust', 'fr').then((doc) => { - doc.infobox().json() - //{ nom:{text:"Ziggy Stardust"}, oeuvre:{text:"The Rise and Fall of Ziggy Stardust"} } -}) +await wtf.fetch('Ziggy Stardust', 'fr').infobox().json() +// {nom:{text:"Ziggy Stardust"}, oeuvre:{text:"The Rise and Fall of Ziggy Stardust"}} ``` | **Plugin** | | @@ -323,7 +320,7 @@ import wtf from 'wtf_wikipedia' let txt = ` ==Wood in Popular Culture== * harry potter's wand -* the simpsons fence +* the simpson's fence ` wtf(txt) // Document {text(), json(), lists()...} @@ -332,9 +329,8 @@ wtf(txt) #### **doc.links()** ```javascript -let str = `Whistling is featured in a number of television shows, such as [[Lassie (1954 TV series)|''Lassie'']], and the title theme for ''[[The X-Files]]''.` -let doc = wtf(str) -doc.links().map((l) => l.page()) +let txt = `Whistling is featured in a number of television shows, such as [[Lassie (1954 TV series)|''Lassie'']], and the title theme for ''[[The X-Files]]''.` +wtf(txt).links().map((l) => l.page()) // [ 'Lassie (1954 TV series)', 'The X-Files' ] ``` @@ -343,9 +339,9 @@ doc.links().map((l) => l.page()) returns nice plain-text of the article ```js -var wiki = +var txt = "[[Greater_Boston|Boston]]'s [[Fenway_Park|baseball field]] has a {{convert|37|ft}} wall.{{cite web|blah}}" -var text = wtf(wiki).text() +wtf(txt).text() //"Boston's baseball field has a 37ft wall." ``` @@ -354,14 +350,14 @@ var text = wtf(wiki).text() a section is a heading _'==Like This=='_ ```js -wtf(page).section(1).children() //traverse nested sections +wtf(page).sections()[1].children() //traverse nested sections wtf(page).section('see also').remove() //delete one ``` #### **doc.sentences()** ```js -s = wtf(page).sentence(4) +let s = wtf(page).sentences()[4] s.links() s.bolds() s.italics() @@ -370,15 +366,14 @@ s.italics() #### **doc.categories()** ```js -let doc = await wtf.fetch('Whistling') -doc.categories() +await wtf.fetch('Whistling').categories() //['Oral communication', 'Vocal music', 'Vocal skills'] ``` #### **doc.images()** ```js -img = wtf(page).images()[0] +let img = wtf(page).images()[0] img.url() // the full-size wikimedia-hosted url img.thumbnail() // 300px, by default img.format() // jpg, png, .. @@ -389,7 +384,7 @@ img.format() // jpg, png, .. ## Fetch -This library can grab, and automatically-parse articles from [any wikimedia api](https://www.mediawiki.org/wiki/API:Main_page). +You can grab and parse articles from *[any wiki api](https://www.mediawiki.org/wiki/API:Main_page)*. This includes any language, any wiki-project, and most **3rd-party wikis**. ```js @@ -425,10 +420,12 @@ retrieves all pages and sub-categories belonging to a given category: ```js let result = await wtf.category('Category:Politicians_from_Paris') -//{ -// pages: [{title: 'Paul Bacon', pageid: 1266127 }, ...], -// categories: [ {title: 'Category:Mayors of Paris' } ] -//} +/* +{ + pages: [{title: 'Paul Bacon', pageid: 1266127 }, ...], + categories: [ {title: 'Category:Mayors of Paris' } ] +} +*/ ``` to fetch and parse all pages in a category, in an optimized way, see [wtf-plugin-api](./plugins/api) From 720a0e1fe40da8338a8bbf2b7bc382ab2ead8f6c Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 16:00:21 -0500 Subject: [PATCH 040/117] move random and category fetching to api plugin --- README.md | 5 +- .../api/tests}/category.test.js | 10 +- .../api/tests}/random.test.js | 10 +- plugins/category/README.md | 47 +-- src/_fetch/category.js | 88 ------ src/_fetch/random.js | 45 --- src/index.js | 8 - tests/fetch/image.test.js | 4 +- tests/fetch/innerWiki.test.js | 285 +++++++++--------- tests/fetch/inputs.test.js | 8 +- tests/fetch/metadata.test.js | 6 +- 11 files changed, 161 insertions(+), 355 deletions(-) rename {tests/fetch => plugins/api/tests}/category.test.js (60%) rename {tests/fetch => plugins/api/tests}/random.test.js (60%) delete mode 100644 src/_fetch/category.js delete mode 100644 src/_fetch/random.js diff --git a/README.md b/README.md index 34aac469..b37ff242 100644 --- a/README.md +++ b/README.md @@ -419,6 +419,7 @@ the fetch method follows redirects. retrieves all pages and sub-categories belonging to a given category: ```js +wtf.extend(require('wtf-plugin-api')) let result = await wtf.category('Category:Politicians_from_Paris') /* { @@ -428,7 +429,7 @@ let result = await wtf.category('Category:Politicians_from_Paris') */ ``` -to fetch and parse all pages in a category, in an optimized way, see [wtf-plugin-api](./plugins/api) +see [wtf-plugin-api](./plugins/api) ### fetch random article: @@ -437,11 +438,13 @@ to fetch and parse all pages in a category, in an optimized way, see [wtf-plugin fetches a random wikipedia article, from a given language or domain ```js +wtf.extend(require('wtf-plugin-api')) wtf.random().then((doc) => { console.log(doc.title(), doc.categories()) //'Whistling' ['Oral communication', 'Vocal skills'] }) ``` +see [wtf-plugin-api](./plugins/api) ### Good practice: diff --git a/tests/fetch/category.test.js b/plugins/api/tests/category.test.js similarity index 60% rename from tests/fetch/category.test.js rename to plugins/api/tests/category.test.js index 85b92f22..f239daad 100644 --- a/tests/fetch/category.test.js +++ b/plugins/api/tests/category.test.js @@ -1,16 +1,16 @@ const test = require('tape') -const wtf = require('../lib') +const wtf = require('./_lib') -test('category', t => { +test('category', (t) => { t.plan(2) - var p = wtf.category('Category:Basketball teams in Toronto', { + const p = wtf.category('Category:Basketball teams in Toronto', { 'Api-User-Agent': 'wtf_wikipedia test script - ' }) - p.then(function(res) { + p.then(function (res) { t.ok(res.pages.length > 2, 'got some pages') t.ok(res.categories.length > 1, 'got a subcategory') }) - p.catch(function(e) { + p.catch(function (e) { t.throw(e) }) }) diff --git a/tests/fetch/random.test.js b/plugins/api/tests/random.test.js similarity index 60% rename from tests/fetch/random.test.js rename to plugins/api/tests/random.test.js index 0d20a2e2..6ceeca5d 100644 --- a/tests/fetch/random.test.js +++ b/plugins/api/tests/random.test.js @@ -1,16 +1,16 @@ const test = require('tape') -const wtf = require('../lib') +const wtf = require('./_lib') -test('random', t => { +test('random', (t) => { t.plan(1) - var p = wtf.random('simple', 'simple', { + let p = wtf.random('simple', 'simple', { follow_redirects: false, 'Api-User-Agent': 'wtf_wikipedia test script - ' }) - p.then(function(doc) { + p.then(function (doc) { t.ok(doc.title(), 'got redirect') }) - p.catch(function(e) { + p.catch(function (e) { t.throw(e) }) }) diff --git a/plugins/category/README.md b/plugins/category/README.md index 80290f53..e4446258 100644 --- a/plugins/category/README.md +++ b/plugins/category/README.md @@ -1,46 +1,3 @@ -
- +instead of using this plugin, please use [wtf-plugin-api](https://github.com/spencermountain/wtf_wikipedia/tree/master/plugins/api) -
a plugin for wtf_wikipedia
- - - - - - - - - - -
-
- -
- npm install wtf-plugin-category -
- -This plugin allows fetching and parsing all articles in a Wikipedia Category. - -```js -const wtf = require('wtf_wikipedia') -wtf.extend(require('wtf-plugin-category')) - -// get the first sentence of all MLB stadiums: -wtf.parseCategory('Major League Baseball venues').then(docs => { - let arr = docs.map(doc => { - return doc.sentence().text() - }) - // [ - // 'Fenway park is a sports complex and major league baseball stadium...', - // 'Rogers Center is a entertainment venue ...' - //] -}) - -// get the name of a random category -let cat = await wtf.randomCategory('fr') -// 'Catégorie:Édifice religieux à Paris' -``` - -work-in-progress - -MIT +this plugin is now deprecated \ No newline at end of file diff --git a/src/_fetch/category.js b/src/_fetch/category.js deleted file mode 100644 index d24a8130..00000000 --- a/src/_fetch/category.js +++ /dev/null @@ -1,88 +0,0 @@ -const http = require('./http/server') -const makeHeaders = require('./_headers') -const { isObject } = require('../_lib/helpers') - -const defaults = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php', //some 3rd party sites use a weird path -} - -const normalizeCategory = function (cat = '') { - if (/^Category/i.test(cat) === false) { - cat = 'Category:' + cat - } - cat = cat.replace(/ /g, '_') - return cat -} - -const getResult = function (body) { - let list = body.query.categorymembers || [] - let res = { - pages: [], - categories: [], - } - list.forEach((p) => { - if (p.ns === 14) { - delete p.ns - res.categories.push(p) - } else { - delete p.ns - res.pages.push(p) - } - }) - return res -} - -const makeUrl = function (category, options, cm) { - category = normalizeCategory(category) - category = encodeURIComponent(category) - let url = `https://${options.lang}.wikipedia.org/${options.path}?` - if (options.domain) { - url = `https://${options.domain}/${options.path}?` - } - url += `action=query&list=categorymembers&cmtitle=${category}&cmlimit=500&format=json&origin=*&redirects=true&cmtype=page|subcat` - if (cm) { - url += '&cmcontinue=' + cm - } - return url -} - -const fetchCategory = function (category, lang, options) { - options = options || {} - options = Object.assign({}, defaults, options) - //support lang 2nd param - if (typeof lang === 'string') { - options.lang = lang - } else if (isObject(lang)) { - options = Object.assign(options, lang) - } - let res = { - pages: [], - categories: [], - } - //wrap a promise around potentially-many requests - return new Promise((resolve, reject) => { - const doit = function (cm) { - let url = makeUrl(category, options, cm) - const headers = makeHeaders(options) - return http(url, headers) - .then((body) => { - res = getResult(body, res) - if (body.continue && body.continue.cmcontinue) { - doit(body.continue.cmcontinue) - } else { - resolve(res) - } - }) - .catch((e) => { - console.error(e) - reject(e) - }) - } - doit(null) - }) -} - -module.exports = fetchCategory diff --git a/src/_fetch/random.js b/src/_fetch/random.js deleted file mode 100644 index f6ace03f..00000000 --- a/src/_fetch/random.js +++ /dev/null @@ -1,45 +0,0 @@ -const http = require('./http/server') -const makeHeaders = require('./_headers') -const getResult = require('./02-getResult') -const parseDoc = require('./03-parseDoc') -const { isObject } = require('../_lib/helpers') - -const defaults = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php', //some 3rd party sites use a weird path -} - -const fetchRandom = function (lang, options) { - options = options || {} - options = Object.assign({}, defaults, options) - //support lang 2nd param - if (typeof lang === 'string') { - options.lang = lang - } else if (isObject(lang)) { - options = Object.assign(options, lang) - } - - let url = `https://${options.lang}.wikipedia.org/${options.path}?` - if (options.domain) { - url = `https://${options.domain}/${options.path}?` - } - url += `format=json&action=query&generator=random&grnnamespace=0&prop=revisions|pageprops&rvprop=content&grnlimit=1&rvslots=main&origin=*` - - const headers = makeHeaders(options) - return http(url, headers) - .then((res) => { - try { - let data = getResult(res) - return parseDoc(data) - } catch (e) { - throw e - } - }) - .catch((e) => { - console.error(e) - return null - }) -} -module.exports = fetchRandom diff --git a/src/index.js b/src/index.js index 43d5a956..2bd3c995 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,4 @@ const fetch = require('./_fetch') -const random = require('./_fetch/random') -const category = require('./_fetch/category') const version = require('./_version') const Document = require('./01-document/Document') @@ -30,12 +28,6 @@ let templates = require('./template/templates') wtf.fetch = function (title, lang, options, cb) { return fetch(title, lang, options, cb) } -wtf.random = function (lang, options, cb) { - return random(lang, options, cb) -} -wtf.category = function (cat, lang, options, cb) { - return category(cat, lang, options, cb) -} wtf.extend = function (fn) { fn(models, templates, this) return this diff --git a/tests/fetch/image.test.js b/tests/fetch/image.test.js index 618cf92b..0ae4c3cf 100644 --- a/tests/fetch/image.test.js +++ b/tests/fetch/image.test.js @@ -3,7 +3,7 @@ const wtf = require('../lib') test('3rd-party image bulbapedia', function (t) { t.plan(3) - var p = wtf.fetch('https://bulbapedia.bulbagarden.net/wiki/Aegislash_(Pok%C3%A9mon)', { path: 'w/api.php' }) + const p = wtf.fetch('https://bulbapedia.bulbagarden.net/wiki/Aegislash_(Pok%C3%A9mon)', { path: 'w/api.php' }) p.then((doc) => { t.equal(doc.domain(), 'bulbapedia.bulbagarden.net', 'got domain from url input') @@ -19,7 +19,7 @@ test('3rd-party image bulbapedia', function (t) { test('3rd-party image mozilla', function (t) { t.plan(3) - var p = wtf.fetch('WeeklyUpdates/020-06-29', { domain: 'wiki.mozilla.org' }) + const p = wtf.fetch('WeeklyUpdates/020-06-29', { domain: 'wiki.mozilla.org' }) p.then((doc) => { t.equal(doc.domain(), 'wiki.mozilla.org', 'got domain from obj input') diff --git a/tests/fetch/innerWiki.test.js b/tests/fetch/innerWiki.test.js index 6ddbcfd5..fe9a7325 100644 --- a/tests/fetch/innerWiki.test.js +++ b/tests/fetch/innerWiki.test.js @@ -1,165 +1,153 @@ -var test = require('tape') -var wtf = require('../lib') - - -test('fetch-innerWiki-wikibooks', t => { - t.plan(1) - var p = wtf.fetch('https://en.wikibooks.org/wiki/JavaScript', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +const test = require('tape') +const wtf = require('../lib') + +test('fetch-innerWiki-wikibooks', (t) => { + t.plan(1) + const p = wtf.fetch('https://en.wikibooks.org/wiki/JavaScript', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikidata', t => { - t.plan(1) - var p = wtf.fetch('https://www.wikidata.org/wiki/Wikidata:Main_Page', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikidata', (t) => { + t.plan(1) + const p = wtf.fetch('https://www.wikidata.org/wiki/Wikidata:Main_Page', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikimedia', t => { - t.plan(1) - var p = wtf.fetch('https://meta.wikimedia.org/wiki/Parser_testing', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikimedia', (t) => { + t.plan(1) + const p = wtf.fetch('https://meta.wikimedia.org/wiki/Parser_testing', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikinews', t => { - t.plan(1) - var p = wtf.fetch('https://en.wikinews.org/wiki/Donald_Trump_elected_US_president', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikinews', (t) => { + t.plan(1) + const p = wtf.fetch('https://en.wikinews.org/wiki/Donald_Trump_elected_US_president', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikipedia', t => { - t.plan(1) - var p = wtf.fetch('https://en.wikipedia.org/wiki/Ethereum', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikipedia', (t) => { + t.plan(1) + const p = wtf.fetch('https://en.wikipedia.org/wiki/Ethereum', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikiquote', t => { - t.plan(1) - var p = wtf.fetch('https://en.wikiquote.org/wiki/Chadwick_Boseman', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikiquote', (t) => { + t.plan(1) + const p = wtf.fetch('https://en.wikiquote.org/wiki/Chadwick_Boseman', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikisource', t => { - t.plan(1) - var p = wtf.fetch('https://en.wikisource.org/wiki/Proclamation_of_the_Irish_Republic', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikisource', (t) => { + t.plan(1) + const p = wtf.fetch('https://en.wikisource.org/wiki/Proclamation_of_the_Irish_Republic', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikispecies', t => { - t.plan(1) - var p = wtf.fetch('https://species.wikimedia.org/wiki/Michotamia_aurata', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikispecies', (t) => { + t.plan(1) + const p = wtf.fetch('https://species.wikimedia.org/wiki/Michotamia_aurata', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikiversity', t => { - t.plan(1) - var p = wtf.fetch('https://en.wikiversity.org/wiki/Introduction_to_Swedish', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikiversity', (t) => { + t.plan(1) + const p = wtf.fetch('https://en.wikiversity.org/wiki/Introduction_to_Swedish', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wikivoyage', t => { - t.plan(1) - var p = wtf.fetch('https://en.wikivoyage.org/wiki/Marvel_Cinematic_Universe_tourism', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wikivoyage', (t) => { + t.plan(1) + const p = wtf.fetch('https://en.wikivoyage.org/wiki/Marvel_Cinematic_Universe_tourism', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - -test('fetch-innerWiki-wiktionary', t => { - t.plan(1) - var p = wtf.fetch('https://en.wiktionary.org/wiki/masterly', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-wiktionary', (t) => { + t.plan(1) + const p = wtf.fetch('https://en.wiktionary.org/wiki/masterly', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) - // I dont know where there is a wiki for the foundation site // test('fetch-innerWiki-foundation', t => { // t.plan(1) -// var p = wtf.fetch('', { +// const p = wtf.fetch('', { // 'Api-User-Agent': 'wtf_wikipedia test script - ', // }) // p.then(function (doc) { @@ -170,16 +158,15 @@ test('fetch-innerWiki-wiktionary', t => { // }) // }) - -test('fetch-innerWiki-meta', t => { - t.plan(1) - var p = wtf.fetch('https://meta.wikimedia.org/wiki/Steward_requests/Bot_status', { - 'Api-User-Agent': 'wtf_wikipedia test script - ', - }) - p.then(function (doc) { - t.ok(doc.sections().length > 0, 'alternate wiki returned document') - }) - p.catch(function (e) { - t.throw(e) - }) +test('fetch-innerWiki-meta', (t) => { + t.plan(1) + const p = wtf.fetch('https://meta.wikimedia.org/wiki/Steward_requests/Bot_status', { + 'Api-User-Agent': 'wtf_wikipedia test script - ', + }) + p.then(function (doc) { + t.ok(doc.sections().length > 0, 'alternate wiki returned document') + }) + p.catch(function (e) { + t.throw(e) + }) }) diff --git a/tests/fetch/inputs.test.js b/tests/fetch/inputs.test.js index 170cc5c5..cbd8f8ab 100644 --- a/tests/fetch/inputs.test.js +++ b/tests/fetch/inputs.test.js @@ -2,14 +2,14 @@ const test = require('tape') const wtf = require('../lib') function delay(time) { - return new Promise(function(resolve, reject) { - setTimeout(function() { + return new Promise(function (resolve) { + setTimeout(function () { resolve() }, time) }) } -test('test-formats', async function(t) { +test('test-formats', async function (t) { let arr = [ 'Billy_Steele', `? (Enuff Z'nuff album)`, @@ -17,7 +17,7 @@ test('test-formats', async function(t) { ['Billy Steele'], `https://en.m.wikipedia.org/wiki/Freebase`, `https://dota2.gamepedia.com/Abaddon`, - `https://muppet.fandom.com/wiki/Debra_Spinney` + `https://muppet.fandom.com/wiki/Debra_Spinney`, ] for (const a of arr) { let doc = await wtf.fetch(a) diff --git a/tests/fetch/metadata.test.js b/tests/fetch/metadata.test.js index a1869879..2c42ec04 100644 --- a/tests/fetch/metadata.test.js +++ b/tests/fetch/metadata.test.js @@ -1,9 +1,9 @@ -var test = require('tape') -var wtf = require('../lib') +const test = require('tape') +const wtf = require('../lib') test('get metadata', (t) => { t.plan(2) - var p = wtf.fetch('Toronto Raptors', 'en', { + const p = wtf.fetch('Toronto Raptors', 'en', { 'Api-User-Agent': 'wtf_wikipedia test script - ', }) p.then(function (doc) { From bfec63322263330a38bd62bf14d882b48563f2ba Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 16:40:36 -0500 Subject: [PATCH 041/117] update deps and linting --- changelog.md | 9 +- package-lock.json | 70 +- package.json | 8 +- plugins/api/package-lock.json | 65 +- plugins/api/package.json | 4 +- plugins/category/package-lock.json | 2298 ++++++++++++------- plugins/category/package.json | 14 +- plugins/category/src/index.js | 5 +- plugins/classify/package-lock.json | 2394 ++++++++++++++------ plugins/classify/package.json | 12 +- plugins/classify/src/byInfobox/mapping.js | 2 - plugins/classify/tests/i18n.test.js | 6 +- plugins/classify/tests/misc.test.js | 2 +- plugins/html/package-lock.json | 2232 +++++++++++++------ plugins/html/package.json | 12 +- plugins/i18n/package-lock.json | 2394 ++++++++++++++------ plugins/i18n/package.json | 12 +- plugins/image/package-lock.json | 2232 +++++++++++++------ plugins/image/package.json | 12 +- plugins/latex/package-lock.json | 2394 ++++++++++++++------ plugins/latex/package.json | 12 +- plugins/latex/src/02-section.js | 43 +- plugins/markdown/package-lock.json | 2398 ++++++++++++++------ plugins/markdown/package.json | 12 +- plugins/person/package-lock.json | 2477 ++++++++++++++------- plugins/person/package.json | 18 +- plugins/summary/package-lock.json | 2311 ++++++++++++------- plugins/summary/package.json | 16 +- plugins/summary/scratch.js | 2 +- plugins/wikitext/package-lock.json | 2232 +++++++++++++------ plugins/wikitext/package.json | 12 +- scratch.js | 7 +- src/01-document/Document.js | 12 +- src/01-document/toJson.js | 10 +- src/02-section/Section.js | 40 +- src/02-section/index.js | 2 - src/02-section/start-to-end/gallery.js | 4 +- src/02-section/start-to-end/index.js | 13 +- src/02-section/start-to-end/math.js | 2 +- src/02-section/start-to-end/mlb.js | 2 +- src/02-section/start-to-end/mma.js | 2 +- src/02-section/start-to-end/nba.js | 2 +- src/02-section/toJson.js | 18 +- src/04-sentence/Sentence.js | 24 +- src/_fetch/01-makeUrl.js | 4 +- src/_fetch/02-getResult.js | 6 +- src/_fetch/_headers.js | 14 +- src/template/_parsers/parse.js | 4 +- tests/fetch/fetch.test.js | 35 +- tests/lib/_cachedPage.js | 10 +- 50 files changed, 16226 insertions(+), 7695 deletions(-) diff --git a/changelog.md b/changelog.md index 9a71e505..2e044f84 100644 --- a/changelog.md +++ b/changelog.md @@ -2,13 +2,14 @@ #### [unreleased 9.0.0] - **[breaking]** - move .random() and .category() to plugin-api - **[breaking]** - cleanup plural/singular method responses - - plural methods like .sentences() always return arrays, even with a 'clue' param. - - singular now methods return 0th or null, by default + - plural methods like .sentences() always return arrays, even with a 'clue' param. + - singular now methods return 0th or null, by default - bold() -> bolds() - italic() -> italics() - - interwiki() -> interwikiLinks() + - interwiki() -> interwikis() - **[breaking]** - cleanup null|undefined responses from methods -- deprecate plugin-category (moved to plugin-api) +- **[breaking]** - remove .dates() method (prev deprecated) +- deprecate wtf-plugin-category (moved to wtf-plugin-api) --> #### 8.5.1 diff --git a/package-lock.json b/package-lock.json index f8641c2a..cb815e7e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1881,15 +1881,15 @@ "dev": true }, "codecov": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.0.tgz", - "integrity": "sha512-7E/S7hmq2CJvCMBMu+aRACO9jxQX1HJug/M3ub8+t84R+5Ai2T5sFMxS3W8P41m2A63+VSAAL4U0aBlqZXkJPw==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.1.tgz", + "integrity": "sha512-Qm7ltx1pzLPsliZY81jyaQ80dcNR4/JpcX0IHCIWrHBXgseySqbdbYfkdiXd7o/xmzQpGRVCKGYeTrHUpn6Dcw==", "dev": true, "requires": { "argv": "0.0.2", "ignore-walk": "3.0.3", "js-yaml": "3.14.0", - "teeny-request": "7.0.1", + "teeny-request": "6.0.1", "urlgrey": "0.4.4" }, "dependencies": { @@ -2210,9 +2210,9 @@ "dev": true }, "eslint": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.12.1.tgz", - "integrity": "sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.13.0.tgz", + "integrity": "sha512-uCORMuOO8tUzJmsdRtrvcGq5qposf7Rw0LwkTJkoDbOycVQtQjmnhZSuLQnozLE4TmAzlMVV45eCHmQ1OpDKUQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -2351,9 +2351,9 @@ } }, "eslint-plugin-jsdoc": { - "version": "30.7.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.6.tgz", - "integrity": "sha512-w18IOiS/9ahKgRfQOuHbce+EQYx3fwIkZhUZDEK+augNlhJkzgTSZkrBkzaflSbFNZ9/Tk4xzUABEaTbsBSzew==", + "version": "30.7.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.7.tgz", + "integrity": "sha512-DmVMJC2AbpYX7X1KhnVT1a9ex1AUvG+q9G8i6hzjp3cpjW8vmKQTUmZnRS0//W+7HvMqeb+eXPANdCOzGVVZBQ==", "dev": true, "requires": { "comment-parser": "^0.7.6", @@ -2753,13 +2753,21 @@ } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", "dev": true, "requires": { - "agent-base": "6", + "agent-base": "5", "debug": "4" + }, + "dependencies": { + "agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true + } } }, "ignore": { @@ -2778,9 +2786,9 @@ } }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -4171,9 +4179,9 @@ } }, "rollup": { - "version": "2.33.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.0.tgz", - "integrity": "sha512-7jFrmKgQj1GOWlC8rExHaPcv2SQnWMv1BFUyH/xWS5w80h6132wBUWp/qTvQkAbnlqGvi13T6iP2kHo9Sb2HxA==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -4418,7 +4426,7 @@ }, "split": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/split/-/split-1.0.0.tgz", "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", "dev": true, "requires": { @@ -4707,24 +4715,16 @@ } }, "teeny-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz", - "integrity": "sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.1.tgz", + "integrity": "sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g==", "dev": true, "requires": { "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", + "https-proxy-agent": "^4.0.0", + "node-fetch": "^2.2.0", "stream-events": "^1.0.5", - "uuid": "^8.0.0" - }, - "dependencies": { - "uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", - "dev": true - } + "uuid": "^3.3.2" } }, "terser": { diff --git a/package.json b/package.json index 5a2f3272..1c20c3ce 100644 --- a/package.json +++ b/package.json @@ -74,15 +74,15 @@ "@babel/preset-env": "7.12.1", "@rollup/plugin-alias": "3.1.1", "amble": "1.1.0", - "codecov": "3.8.0", + "codecov": "3.8.1", "cross-env": "7.0.2", - "eslint": "7.12.1", + "eslint": "7.13.0", "eslint-plugin-compat": "^3.8.0", - "eslint-plugin-jsdoc": "30.7.6", + "eslint-plugin-jsdoc": "30.7.7", "jsdoc": "^3.6.6", "nyc": "^15.1.0", "recursive-install": "1.4.0", - "rollup": "2.33.0", + "rollup": "2.33.1", "rollup-plugin-babel": "4.4.0", "rollup-plugin-commonjs": "10.1.0", "rollup-plugin-filesize-check": "0.0.1", diff --git a/plugins/api/package-lock.json b/plugins/api/package-lock.json index ada8b584..ff4a87b3 100644 --- a/plugins/api/package-lock.json +++ b/plugins/api/package-lock.json @@ -1908,9 +1908,9 @@ } }, "rollup": { - "version": "2.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz", - "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -2112,13 +2112,64 @@ } }, "tap-dancer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.0.tgz", - "integrity": "sha512-ivZ+x++JKBbMQP5Jp7xfT21HsGJ+AeNMV4grlREyowcgDilFiY7b+nmDwffA+iagItqth3W+9UW4DBHsak3P8Q==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { diff --git a/plugins/api/package.json b/plugins/api/package.json index ffe4b486..aad4e987 100644 --- a/plugins/api/package.json +++ b/plugins/api/package.json @@ -36,14 +36,14 @@ "devDependencies": { "@babel/core": "7.12.3", "@babel/preset-env": "7.12.1", - "rollup": "2.32.1", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "4.0.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.0", + "tap-dancer": "0.3.1", "tape": "5.0.1" }, "license": "MIT" diff --git a/plugins/category/package-lock.json b/plugins/category/package-lock.json index c7849ec2..2c9e43ba 100644 --- a/plugins/category/package-lock.json +++ b/plugins/category/package-lock.json @@ -5,161 +5,416 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -172,86 +427,286 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { @@ -260,136 +715,241 @@ "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", - "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.9.5" + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -401,6 +961,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -410,6 +979,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -419,6 +997,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -429,12 +1016,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -465,441 +1052,482 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", - "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", - "globals": "^11.1.0" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" }, "dependencies": { - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" + "@babel/types": "^7.12.5" } }, "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", - "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", - "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.5.tgz", - "integrity": "sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.5", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.9.5", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.9.5", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.5", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -910,40 +1538,90 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/types": { @@ -958,27 +1636,49 @@ } }, "@rollup/plugin-node-resolve": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", - "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", + "integrity": "sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.14.2" + "resolve": "^1.17.0" + }, + "dependencies": { + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "@rollup/pluginutils": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.9.tgz", - "integrity": "sha512-TLZavlfPAZYI7v33wQh4mTP6zojne14yok3DNSLcjoG/Hirxfkonn6icP5rrNWRn8nZsirJBFFpijVOJzkUHDg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", - "micromatch": "^4.0.2" + "picomatch": "^2.2.2" }, "dependencies": { "estree-walker": { @@ -1059,25 +1759,17 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -1098,10 +1790,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001047", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001047.tgz", - "integrity": "sha512-eaZFO+zPTGCCi5EBK0Ri8f2qXJ1lLH0Ic/UM2wrfc0bQkSiwGEk75tZEu2Gns7uvTMKcADLh0+QdTjzcRt3owA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1130,6 +1832,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1152,12 +1860,12 @@ } }, "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.5", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1176,31 +1884,31 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.3.tgz", - "integrity": "sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { - "es-abstract": "^1.17.5", + "es-abstract": "^1.18.0-next.1", "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", "is-date-object": "^1.0.2", - "is-regex": "^1.0.5", + "is-regex": "^1.1.1", "isarray": "^2.0.5", - "object-is": "^1.1.2", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", + "object.assign": "^4.1.1", "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2", + "side-channel": "^1.0.3", "which-boxed-primitive": "^1.0.1", "which-collection": "^1.0.1", "which-typed-array": "^1.1.2" @@ -1214,6 +1922,12 @@ } } }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1239,37 +1953,39 @@ } }, "electron-to-chromium": { - "version": "1.3.418", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.418.tgz", - "integrity": "sha512-i2QrQtHes5fK/F9QGG5XacM5WKEuR322fxTYF9e8O9Gu0mc0WmjjwGpV8c7Htso6Zf2Di18lc3SIPxmMeRFBug==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", "dev": true, "requires": { - "es-abstract": "^1.17.4", + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", "has-symbols": "^1.0.1", "is-arguments": "^1.0.4", "is-map": "^2.0.1", @@ -1297,6 +2013,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1315,24 +2037,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1368,11 +2072,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1430,15 +2145,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", @@ -1458,11 +2164,20 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -1481,10 +2196,10 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", "dev": true }, "is-number-object": { @@ -1503,12 +2218,12 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "is-set": { @@ -1542,6 +2257,27 @@ "es-abstract": "^1.17.4", "foreach": "^2.0.5", "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "is-weakmap": { @@ -1563,22 +2299,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1596,54 +2339,20 @@ "dev": true }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1659,16 +2368,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1691,25 +2390,25 @@ "dev": true }, "node-releases": { - "version": "1.1.53", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", - "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "object-keys": { @@ -1719,15 +2418,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1739,36 +2438,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1787,27 +2456,21 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1830,9 +2493,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1845,19 +2508,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1868,12 +2530,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1885,9 +2568,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1926,9 +2609,9 @@ } }, "rollup": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.7.2.tgz", - "integrity": "sha512-SdtTZVMMVSPe7SNv4exUyPXARe5v/p3TeeG3LRA5WabLPJt4Usi3wVrvVlyAUTG40JJmqS6zbIHt2vWTss2prw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1986,16 +2669,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -2020,19 +2702,22 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "side-channel": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", - "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", "dev": true, "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" } }, "slow": { @@ -2047,9 +2732,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -2080,56 +2765,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" + "es-abstract": "^1.18.0-next.1" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -2151,13 +2813,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -2173,9 +2886,9 @@ } }, "tape": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.0.tgz", - "integrity": "sha512-+fi4WiHuvxpKL6GpcvnG5PXfzopgw9h1JM9CJdpEPAbyU3r3VjRgt059fD6Up2/u6BQXmmxKmUMm6mXQP+HS3w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", "dev": true, "requires": { "deep-equal": "^2.0.3", @@ -2198,31 +2911,32 @@ }, "dependencies": { "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, "requires": { + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" } } } }, "terser": { - "version": "4.6.11", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", - "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2239,15 +2953,6 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -2325,6 +3030,27 @@ "function-bind": "^1.1.1", "has-symbols": "^1.0.1", "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "wrappy": { diff --git a/plugins/category/package.json b/plugins/category/package.json index c8bf5884..9856c101 100644 --- a/plugins/category/package.json +++ b/plugins/category/package.json @@ -34,18 +34,18 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.5", - "@rollup/plugin-node-resolve": "^7.1.3", - "rollup": "2.7.2", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "@rollup/plugin-node-resolve": "10.0.0", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "4.0.0", "rollup-plugin-node-resolve": "5.2.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "^0.2.0", - "tape": "5.0.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/category/src/index.js b/plugins/category/src/index.js index f23cb71f..6df926ed 100644 --- a/plugins/category/src/index.js +++ b/plugins/category/src/index.js @@ -2,9 +2,8 @@ const slow = require('slow') const random = require('./random') const chunkBy = function (arr, chunkSize = 5) { - var groups = [], - i - for (i = 0; i < arr.length; i += chunkSize) { + let groups = [] + for (let i = 0; i < arr.length; i += chunkSize) { groups.push(arr.slice(i, i + chunkSize)) } return groups diff --git a/plugins/classify/package-lock.json b/plugins/classify/package-lock.json index fedd76bf..0f7536e1 100644 --- a/plugins/classify/package-lock.json +++ b/plugins/classify/package-lock.json @@ -5,161 +5,416 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -172,86 +427,286 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { @@ -260,135 +715,241 @@ "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -400,6 +961,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -409,6 +979,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -418,6 +997,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -428,12 +1016,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -464,392 +1052,482 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -860,40 +1538,90 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/types": { @@ -934,13 +1662,28 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^1.9.0" + } + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -963,15 +1706,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -992,10 +1736,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001037", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001037.tgz", - "integrity": "sha512-qQP40FzWQ1i9RTjxppOUnpM8OwTBFL5DQbjoR9Az32EtM7YUZOw9orFO6rj1C+xWAGzz+X3bUe09Jf5Ep+zpuA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1024,6 +1778,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1046,12 +1806,12 @@ } }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1070,26 +1830,42 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "define-properties": { @@ -1117,28 +1893,53 @@ } }, "electron-to-chromium": { - "version": "1.3.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz", - "integrity": "sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1152,6 +1953,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1170,15 +1977,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1188,6 +1986,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1195,9 +1999,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1208,11 +2012,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1270,39 +2085,69 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-reference": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", @@ -1313,14 +2158,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1330,6 +2187,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1337,22 +2239,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1370,54 +2279,20 @@ "dev": true }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1455,36 +2330,25 @@ "dev": true }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "object-keys": { @@ -1494,15 +2358,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1514,36 +2378,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1556,27 +2390,21 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1599,9 +2427,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1614,19 +2442,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1637,12 +2464,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1654,9 +2502,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1695,9 +2543,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1755,16 +2603,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1789,10 +2636,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1834,56 +2694,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" + "es-abstract": "^1.18.0-next.1" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -1905,13 +2742,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -1927,43 +2815,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", - "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2020,6 +2922,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/classify/package.json b/plugins/classify/package.json index de56bbe0..04223ce0 100644 --- a/plugins/classify/package.json +++ b/plugins/classify/package.json @@ -32,17 +32,17 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "4.0.0", "rollup-plugin-node-resolve": "5.2.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "^0.2.0", - "tape": "^4.11.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/classify/src/byInfobox/mapping.js b/plugins/classify/src/byInfobox/mapping.js index 40e0aff3..1d493e1b 100644 --- a/plugins/classify/src/byInfobox/mapping.js +++ b/plugins/classify/src/byInfobox/mapping.js @@ -420,7 +420,6 @@ module.exports = { 'mma event': 'Event/SportsEvent', 'snooker player': 'Person', 'airliner accident': 'Event/Disaster', - 'football tournament': 'Event/SportsEvent', 'individual darts tournament': 'Event', 'nfl season': 'Event/SportsEvent', 'beauty pageant': 'Event', @@ -481,7 +480,6 @@ module.exports = { 'athletic conference': 'Organization', 'football club infobox': 'Organization/SportsTeam', 'film festival': 'Organization', - 'medical condition (new)': 'Organization', brand: 'Organization/MusicalGroup', 'cricket team': 'Organization/SportsTeam', 'dot-com company': 'Organization', diff --git a/plugins/classify/tests/i18n.test.js b/plugins/classify/tests/i18n.test.js index c83f64af..a212d13e 100644 --- a/plugins/classify/tests/i18n.test.js +++ b/plugins/classify/tests/i18n.test.js @@ -5,13 +5,13 @@ const path = require('path') const i18n = require('../../i18n') wtf.extend(i18n) -test('i18n-classify-test', async function(t) { +test('i18n-classify-test', async function (t) { let arr = [ ['Sara-C.-Bisel', 'Person'], - ['Wendy-Mogel', 'Person'] + ['Wendy-Mogel', 'Person'], ] - arr.forEach(a => { + arr.forEach((a) => { let abs = path.join(__dirname, `../../../tests/cache/${a[0]}.txt`) let txt = fs.readFileSync(abs).toString() let doc = wtf(txt) diff --git a/plugins/classify/tests/misc.test.js b/plugins/classify/tests/misc.test.js index c39fafe3..423c12a9 100644 --- a/plugins/classify/tests/misc.test.js +++ b/plugins/classify/tests/misc.test.js @@ -27,7 +27,7 @@ test('classify-test', async function (t) { ['al_Haytham', 'Person/Academic'], ['The-Field-of-Waterloo', 'CreativeWork'], ['bluejays', null], //partial page - ['Liste-der-argentinischen-Botschafter-in-Chile', null] + ['Liste-der-argentinischen-Botschafter-in-Chile', null], ] arr.forEach((a) => { let abs = path.join(__dirname, `../../../tests/cache/${a[0]}.txt`) diff --git a/plugins/html/package-lock.json b/plugins/html/package-lock.json index e722f5c2..bb004a8b 100644 --- a/plugins/html/package-lock.json +++ b/plugins/html/package-lock.json @@ -5,187 +5,356 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -198,249 +367,467 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +839,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -461,6 +857,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -470,6 +875,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -480,12 +894,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -516,405 +930,462 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -925,52 +1396,77 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, @@ -1009,10 +1505,25 @@ "color-convert": "^1.9.0" } }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -1035,15 +1546,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -1064,10 +1576,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001037", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001037.tgz", - "integrity": "sha512-qQP40FzWQ1i9RTjxppOUnpM8OwTBFL5DQbjoR9Az32EtM7YUZOw9orFO6rj1C+xWAGzz+X3bUe09Jf5Ep+zpuA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1096,6 +1618,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1118,12 +1646,12 @@ } }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1142,26 +1670,42 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "define-properties": { @@ -1189,28 +1733,53 @@ } }, "electron-to-chromium": { - "version": "1.3.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz", - "integrity": "sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1224,6 +1793,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1242,15 +1817,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1260,6 +1826,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1267,9 +1839,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1280,11 +1852,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1342,39 +1925,69 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-reference": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", @@ -1393,14 +2006,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1410,6 +2035,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1417,22 +2087,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1450,45 +2127,12 @@ "dev": true }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" } }, "lodash": { @@ -1497,15 +2141,6 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1531,9 +2166,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { @@ -1543,33 +2178,26 @@ "dev": true }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } }, "object-keys": { "version": "1.1.1", @@ -1578,15 +2206,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1598,36 +2226,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1640,27 +2238,21 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1683,9 +2275,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1698,19 +2290,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1721,12 +2312,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1738,9 +2350,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1779,9 +2391,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1839,16 +2451,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1873,10 +2484,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1885,9 +2509,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -1918,34 +2542,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -1967,13 +2590,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -1989,43 +2663,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz", - "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2082,6 +2770,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/html/package.json b/plugins/html/package.json index e27d98a6..897c7010 100644 --- a/plugins/html/package.json +++ b/plugins/html/package.json @@ -32,17 +32,17 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "^4.0.0", "rollup-plugin-node-resolve": "^5.1.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "^0.2.0", - "tape": "^4.11.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/i18n/package-lock.json b/plugins/i18n/package-lock.json index c253ac45..0cf5bfef 100644 --- a/plugins/i18n/package-lock.json +++ b/plugins/i18n/package-lock.json @@ -5,161 +5,416 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -172,86 +427,286 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { @@ -260,135 +715,241 @@ "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -400,6 +961,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -409,6 +979,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -418,6 +997,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -428,12 +1016,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -464,392 +1052,482 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -860,40 +1538,90 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/types": { @@ -934,13 +1662,28 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^1.9.0" + } + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -963,15 +1706,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -992,10 +1736,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001037", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001037.tgz", - "integrity": "sha512-qQP40FzWQ1i9RTjxppOUnpM8OwTBFL5DQbjoR9Az32EtM7YUZOw9orFO6rj1C+xWAGzz+X3bUe09Jf5Ep+zpuA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1024,6 +1778,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1046,12 +1806,12 @@ } }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1070,26 +1830,42 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "define-properties": { @@ -1117,28 +1893,53 @@ } }, "electron-to-chromium": { - "version": "1.3.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz", - "integrity": "sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1152,6 +1953,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1170,15 +1977,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1188,6 +1986,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1195,9 +1999,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1208,11 +2012,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1270,39 +2085,69 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-reference": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", @@ -1313,14 +2158,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1330,6 +2187,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1337,22 +2239,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1370,54 +2279,20 @@ "dev": true }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1455,36 +2330,25 @@ "dev": true }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "object-keys": { @@ -1494,15 +2358,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1514,36 +2378,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1556,27 +2390,21 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1599,9 +2427,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1614,19 +2442,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1637,12 +2464,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1654,9 +2502,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1695,9 +2543,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1755,16 +2603,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1789,10 +2636,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1834,56 +2694,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" + "es-abstract": "^1.18.0-next.1" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -1905,13 +2742,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -1927,43 +2815,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", - "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2020,6 +2922,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/i18n/package.json b/plugins/i18n/package.json index f233b257..51016ead 100644 --- a/plugins/i18n/package.json +++ b/plugins/i18n/package.json @@ -32,17 +32,17 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "4.0.0", "rollup-plugin-node-resolve": "5.2.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "^0.2.0", - "tape": "^4.11.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/image/package-lock.json b/plugins/image/package-lock.json index c3193d28..30367121 100644 --- a/plugins/image/package-lock.json +++ b/plugins/image/package-lock.json @@ -5,187 +5,356 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -198,249 +367,467 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +839,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -461,6 +857,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -470,6 +875,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -480,12 +894,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -516,405 +930,462 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -925,52 +1396,77 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, @@ -1015,10 +1511,25 @@ "color-convert": "^1.9.0" } }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -1041,15 +1552,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -1070,10 +1582,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001037", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001037.tgz", - "integrity": "sha512-qQP40FzWQ1i9RTjxppOUnpM8OwTBFL5DQbjoR9Az32EtM7YUZOw9orFO6rj1C+xWAGzz+X3bUe09Jf5Ep+zpuA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1102,6 +1624,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1124,12 +1652,12 @@ } }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1148,26 +1676,42 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "define-properties": { @@ -1195,28 +1739,53 @@ } }, "electron-to-chromium": { - "version": "1.3.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz", - "integrity": "sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1230,6 +1799,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1248,15 +1823,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1266,6 +1832,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1273,9 +1845,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1286,11 +1858,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1348,39 +1931,69 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-reference": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", @@ -1391,14 +2004,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1408,6 +2033,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1415,22 +2085,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1453,45 +2130,12 @@ "integrity": "sha512-btmQZ/w1rj8Lb6nEwvhjM7nBYoj54yaEFo2PWh3RkxZ8qNwuvOxvQYN/JxVuwoMmdIluL+XwYVJ+pEEZoSYybQ==" }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" } }, "lodash": { @@ -1500,15 +2144,6 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1534,9 +2169,9 @@ } }, "minimist": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.4.tgz", - "integrity": "sha512-wTiNDqe4D2rbTJGZk1qcdZgFtY0/r+iuE6GDT7V0/+Gu5MLpIDm4+CssDECR79OJs/OxLPXMzdxy153b5Qy3hg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { @@ -1546,33 +2181,26 @@ "dev": true }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } }, "object-keys": { "version": "1.1.1", @@ -1581,15 +2209,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1601,36 +2229,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1643,27 +2241,21 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1686,9 +2278,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1701,19 +2293,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1724,12 +2315,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1741,9 +2353,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1782,9 +2394,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1842,16 +2454,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1876,10 +2487,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1888,9 +2512,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -1921,34 +2545,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -1970,13 +2593,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -1992,43 +2666,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz", - "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2085,6 +2773,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/image/package.json b/plugins/image/package.json index fec4bd2b..4e622409 100644 --- a/plugins/image/package.json +++ b/plugins/image/package.json @@ -34,17 +34,17 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "4.0.0", "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "0.2.0", - "tape": "4.13.2" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/latex/package-lock.json b/plugins/latex/package-lock.json index 9b0d7f0b..a22f0ede 100644 --- a/plugins/latex/package-lock.json +++ b/plugins/latex/package-lock.json @@ -5,161 +5,416 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -172,86 +427,286 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { @@ -260,135 +715,241 @@ "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -400,6 +961,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -409,6 +979,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -418,6 +997,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -428,12 +1016,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -464,392 +1052,482 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -860,40 +1538,90 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/types": { @@ -934,13 +1662,28 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^1.9.0" + } + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -963,15 +1706,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -992,10 +1736,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001037", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001037.tgz", - "integrity": "sha512-qQP40FzWQ1i9RTjxppOUnpM8OwTBFL5DQbjoR9Az32EtM7YUZOw9orFO6rj1C+xWAGzz+X3bUe09Jf5Ep+zpuA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1024,6 +1778,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1046,12 +1806,12 @@ } }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1070,26 +1830,42 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "define-properties": { @@ -1117,28 +1893,53 @@ } }, "electron-to-chromium": { - "version": "1.3.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz", - "integrity": "sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1152,6 +1953,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1170,15 +1977,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1188,6 +1986,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1195,9 +1999,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1208,11 +2012,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1270,39 +2085,69 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-reference": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", @@ -1313,14 +2158,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1330,6 +2187,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1337,22 +2239,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1370,54 +2279,20 @@ "dev": true }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1455,36 +2330,25 @@ "dev": true }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "object-keys": { @@ -1494,15 +2358,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1514,36 +2378,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1556,27 +2390,21 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1599,9 +2427,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1614,19 +2442,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1637,12 +2464,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1654,9 +2502,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1695,9 +2543,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1755,16 +2603,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1789,10 +2636,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1834,56 +2694,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" + "es-abstract": "^1.18.0-next.1" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -1905,13 +2742,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -1927,43 +2815,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", - "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2020,6 +2922,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/latex/package.json b/plugins/latex/package.json index 9c4b821c..53db3d7a 100644 --- a/plugins/latex/package.json +++ b/plugins/latex/package.json @@ -32,17 +32,17 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "4.0.0", "rollup-plugin-node-resolve": "5.2.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "^0.2.0", - "tape": "^4.11.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/latex/src/02-section.js b/plugins/latex/src/02-section.js index b7e2d08c..9ce1591b 100644 --- a/plugins/latex/src/02-section.js +++ b/plugins/latex/src/02-section.js @@ -16,31 +16,24 @@ const doSection = function (options) { num = 1 + this.depth() let vOpen = '\n' let vClose = '}' - switch (num) { - case 1: - vOpen += '\\chapter{' - break - case 2: - vOpen += '\\section{' - break - case 3: - vOpen += '\\subsection{' - break - case 4: - vOpen += '\\subsubsection{' - break - case 5: - vOpen += '\\paragraph{' - vClose = '} \\\\ \n' - break - case 6: - vOpen += '\\subparagraph{' - vClose = '} \\\\ \n' - break - default: - vOpen += - '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{' - vClose = '} \\\\ \n' + if (num === 1) { + vOpen += '\\chapter{' + } else if (num === 2) { + vOpen += '\\section{' + } else if (num === 3) { + vOpen += '\\subsection{' + } else if (num === 4) { + vOpen += '\\subsubsection{' + } else if (num === 5) { + vOpen += '\\paragraph{' + vClose = '} \\\\ \n' + } else if (num === 6) { + vOpen += '\\subparagraph{' + vClose = '} \\\\ \n' + } else { + vOpen += + '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{' + vClose = '} \\\\ \n' } out += vOpen + this.title() + vClose out += '\n' diff --git a/plugins/markdown/package-lock.json b/plugins/markdown/package-lock.json index 75a939f0..1db910d9 100644 --- a/plugins/markdown/package-lock.json +++ b/plugins/markdown/package-lock.json @@ -5,161 +5,416 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -172,86 +427,286 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { @@ -260,135 +715,241 @@ "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -400,6 +961,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -409,6 +979,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -418,6 +997,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -428,12 +1016,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -464,392 +1052,482 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -860,40 +1538,90 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/types": { @@ -937,10 +1665,25 @@ "color-convert": "^1.9.0" } }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -963,15 +1706,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -992,10 +1736,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001037", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001037.tgz", - "integrity": "sha512-qQP40FzWQ1i9RTjxppOUnpM8OwTBFL5DQbjoR9Az32EtM7YUZOw9orFO6rj1C+xWAGzz+X3bUe09Jf5Ep+zpuA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1024,6 +1778,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1046,12 +1806,12 @@ } }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1070,26 +1830,42 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "define-properties": { @@ -1117,28 +1893,53 @@ } }, "electron-to-chromium": { - "version": "1.3.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz", - "integrity": "sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1152,6 +1953,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1170,15 +1977,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1188,6 +1986,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1195,9 +1999,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1208,11 +2012,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1270,39 +2085,69 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-reference": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", @@ -1313,14 +2158,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1330,6 +2187,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1337,22 +2239,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1370,45 +2279,12 @@ "dev": true }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" } }, "lodash": { @@ -1417,15 +2293,6 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1451,9 +2318,9 @@ } }, "minimist": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.4.tgz", - "integrity": "sha512-wTiNDqe4D2rbTJGZk1qcdZgFtY0/r+iuE6GDT7V0/+Gu5MLpIDm4+CssDECR79OJs/OxLPXMzdxy153b5Qy3hg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { @@ -1463,33 +2330,26 @@ "dev": true }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } }, "object-keys": { "version": "1.1.1", @@ -1498,15 +2358,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1518,36 +2378,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1560,27 +2390,21 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1603,9 +2427,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1618,19 +2442,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1641,12 +2464,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1658,9 +2502,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1699,9 +2543,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1759,16 +2603,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1793,10 +2636,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1805,9 +2661,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -1838,34 +2694,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -1887,13 +2742,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -1909,43 +2815,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz", - "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2002,6 +2922,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/markdown/package.json b/plugins/markdown/package.json index 86757786..fd482eac 100644 --- a/plugins/markdown/package.json +++ b/plugins/markdown/package.json @@ -32,17 +32,17 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "4.0.0", "rollup-plugin-node-resolve": "5.2.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "0.2.0", - "tape": "4.13.2" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/person/package-lock.json b/plugins/person/package-lock.json index eb28ddaf..de3e5d2f 100644 --- a/plugins/person/package-lock.json +++ b/plugins/person/package-lock.json @@ -5,161 +5,416 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -172,86 +427,286 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { @@ -260,136 +715,241 @@ "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", - "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.9.5" + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -401,6 +961,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -410,6 +979,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -419,6 +997,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -429,12 +1016,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -465,392 +1052,482 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", - "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", - "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", - "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -861,40 +1538,90 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/types": { @@ -909,27 +1636,49 @@ } }, "@rollup/plugin-node-resolve": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", - "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", + "integrity": "sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.14.2" + "resolve": "^1.17.0" + }, + "dependencies": { + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "@rollup/pluginutils": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.9.tgz", - "integrity": "sha512-TLZavlfPAZYI7v33wQh4mTP6zojne14yok3DNSLcjoG/Hirxfkonn6icP5rrNWRn8nZsirJBFFpijVOJzkUHDg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", - "micromatch": "^4.0.2" + "picomatch": "^2.2.2" } }, "@types/estree": { @@ -962,10 +1711,25 @@ "color-convert": "^1.9.0" } }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -987,25 +1751,17 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "browserslist": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", - "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001038", - "electron-to-chromium": "^1.3.390", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -1026,10 +1782,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001042", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001042.tgz", - "integrity": "sha512-igMQ4dlqnf4tWv0xjaaE02op9AJ2oQzXKjWf4EuAHFN694Uo9/EfPVIPJcmn2WkU9RqozCxx5e2KPcVClHDbDw==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1058,6 +1824,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1065,9 +1837,9 @@ "dev": true }, "compromise": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.1.1.tgz", - "integrity": "sha512-z54eBM+qbLS2/i/lYwCqDSkUMRXP0QZWW7XsffIiWGZpJPteTRr8laAEXoa4DQM5it5tGpE08cqRa8yZKYTcUw==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.7.0.tgz", + "integrity": "sha512-RGCUJQs906TCU04rN0Fb2xwrzL9/xyr6MTggTytrlI+VEaBVqeO0ccOtTLEnlI4BVB6hoCic5Nmbp3nRdNKpJA==", "requires": { "efrt-unpack": "2.2.0" } @@ -1088,12 +1860,12 @@ } }, "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.5", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1112,28 +1884,50 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1164,28 +1958,53 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "electron-to-chromium": { - "version": "1.3.408", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.408.tgz", - "integrity": "sha512-vn1zWIxIdyl0MR72lr81/7kHYTRlDRjJT4ocp8dtb85VhH46J3lNqDMEBljAKPKgguqjK0+WAbf3IL6ZKw72kQ==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1199,6 +2018,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1217,24 +2042,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1244,6 +2051,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1251,9 +2064,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1264,11 +2077,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1326,43 +2150,67 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", "dev": true }, "is-reference": { @@ -1375,14 +2223,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1392,6 +2252,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1399,22 +2304,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1440,46 +2352,12 @@ "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1495,16 +2373,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1527,25 +2395,25 @@ "dev": true }, "node-releases": { - "version": "1.1.53", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", - "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "object-keys": { @@ -1555,15 +2423,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1575,36 +2443,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1623,27 +2461,21 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1666,9 +2498,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1681,19 +2513,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1704,12 +2535,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1721,9 +2573,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1762,9 +2614,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1830,16 +2682,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1872,10 +2723,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1884,9 +2748,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -1908,9 +2772,9 @@ "dev": true }, "spacetime": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.4.3.tgz", - "integrity": "sha512-UFxbLPEyH5sERljIj/NCTtfAJhLTGSroR8nOguWAPVRaIWjWCOfQ7t/kcu/BebQieY8Zl365WSXuciTyUDYDug==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.9.0.tgz", + "integrity": "sha512-XACu59pB6dYpGEo1rB+RXWDSlNde68cC7WhG370MbhtWuMcNw7XiJcsrxPqI2OpbtWXKwS3KnpcATKIrjAGlvg==" }, "split": { "version": "1.0.0", @@ -1922,56 +2786,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" + "es-abstract": "^1.18.0-next.1" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -1993,13 +2834,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -2015,43 +2907,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.6.11", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", - "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2068,15 +2974,6 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -2117,6 +3014,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/person/package.json b/plugins/person/package.json index 0df610c0..847a2b4f 100644 --- a/plugins/person/package.json +++ b/plugins/person/package.json @@ -28,25 +28,25 @@ "printWidth": 100 }, "dependencies": { - "compromise": "^13.1.1", - "spacetime": "^6.4.3" + "compromise": "13.7.0", + "spacetime": "6.9.0" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "@rollup/plugin-node-resolve": "^7.1.3", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "@rollup/plugin-node-resolve": "10.0.0", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "^4.0.0", "rollup-plugin-node-resolve": "^5.1.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "^0.2.0", - "tape": "^4.11.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/summary/package-lock.json b/plugins/summary/package-lock.json index efb465a5..90959901 100644 --- a/plugins/summary/package-lock.json +++ b/plugins/summary/package-lock.json @@ -5,187 +5,356 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -198,249 +367,467 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +839,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -461,6 +857,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -470,6 +875,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -480,12 +894,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -516,405 +930,462 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -925,52 +1396,77 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, @@ -986,27 +1482,49 @@ } }, "@rollup/plugin-node-resolve": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", - "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", + "integrity": "sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.14.2" + "resolve": "^1.17.0" + }, + "dependencies": { + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "@rollup/pluginutils": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.9.tgz", - "integrity": "sha512-TLZavlfPAZYI7v33wQh4mTP6zojne14yok3DNSLcjoG/Hirxfkonn6icP5rrNWRn8nZsirJBFFpijVOJzkUHDg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", - "micromatch": "^4.0.2" + "picomatch": "^2.2.2" }, "dependencies": { "estree-walker": { @@ -1047,10 +1565,25 @@ "color-convert": "^1.9.0" } }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -1072,25 +1605,17 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -1111,10 +1636,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001037", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001037.tgz", - "integrity": "sha512-qQP40FzWQ1i9RTjxppOUnpM8OwTBFL5DQbjoR9Az32EtM7YUZOw9orFO6rj1C+xWAGzz+X3bUe09Jf5Ep+zpuA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1143,6 +1678,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1150,9 +1691,9 @@ "dev": true }, "compromise": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.1.1.tgz", - "integrity": "sha512-z54eBM+qbLS2/i/lYwCqDSkUMRXP0QZWW7XsffIiWGZpJPteTRr8laAEXoa4DQM5it5tGpE08cqRa8yZKYTcUw==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.7.0.tgz", + "integrity": "sha512-RGCUJQs906TCU04rN0Fb2xwrzL9/xyr6MTggTytrlI+VEaBVqeO0ccOtTLEnlI4BVB6hoCic5Nmbp3nRdNKpJA==", "requires": { "efrt-unpack": "2.2.0" } @@ -1173,12 +1714,12 @@ } }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1197,28 +1738,50 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1249,28 +1812,53 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "electron-to-chromium": { - "version": "1.3.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz", - "integrity": "sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1284,6 +1872,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1302,24 +1896,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1329,6 +1905,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1336,9 +1918,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1349,11 +1931,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1411,43 +2004,67 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", "dev": true }, "is-reference": { @@ -1460,14 +2077,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1477,6 +2106,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1484,22 +2158,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1517,54 +2198,20 @@ "dev": true }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1580,16 +2227,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1612,33 +2249,26 @@ "dev": true }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } }, "object-keys": { "version": "1.1.1", @@ -1647,15 +2277,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1667,36 +2297,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1715,27 +2315,21 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1758,9 +2352,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1773,19 +2367,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1796,12 +2389,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1813,9 +2427,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1854,9 +2468,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1914,16 +2528,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1948,10 +2561,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1960,9 +2586,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -1993,34 +2619,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -2042,13 +2667,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -2064,43 +2740,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz", - "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2117,15 +2807,6 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -2166,6 +2847,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/summary/package.json b/plugins/summary/package.json index 61ff472e..596a7a9d 100644 --- a/plugins/summary/package.json +++ b/plugins/summary/package.json @@ -28,24 +28,24 @@ "printWidth": 100 }, "dependencies": { - "compromise": "^13.1.1" + "compromise": "13.7.0" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "@rollup/plugin-node-resolve": "^7.1.3", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "@rollup/plugin-node-resolve": "10.0.0", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "^4.0.0", "rollup-plugin-node-resolve": "^5.1.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "^0.2.0", - "tape": "^4.11.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/plugins/summary/scratch.js b/plugins/summary/scratch.js index 4050961b..8794f50e 100644 --- a/plugins/summary/scratch.js +++ b/plugins/summary/scratch.js @@ -1,6 +1,6 @@ const fs = require('fs') const path = require('path') -var wtf = require('../../src/index') +const wtf = require('../../src/index') wtf.extend(require('./src')) // `{{About|the British mathematician John H. Conway |the American mathematician| John B. Conway|other people named John Conway|John Conway (disambiguation){{!}}John Conway}}` diff --git a/plugins/wikitext/package-lock.json b/plugins/wikitext/package-lock.json index d55b94eb..7e2f20b3 100644 --- a/plugins/wikitext/package-lock.json +++ b/plugins/wikitext/package-lock.json @@ -5,187 +5,356 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.9.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -198,249 +367,467 @@ } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +839,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -461,6 +857,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -470,6 +875,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -480,12 +894,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -516,405 +930,462 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -925,52 +1396,77 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, @@ -1009,10 +1505,25 @@ "color-convert": "^1.9.0" } }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -1035,15 +1546,16 @@ } }, "browserslist": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", - "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.380", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -1064,10 +1576,20 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caniuse-lite": { - "version": "1.0.30001037", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001037.tgz", - "integrity": "sha512-qQP40FzWQ1i9RTjxppOUnpM8OwTBFL5DQbjoR9Az32EtM7YUZOw9orFO6rj1C+xWAGzz+X3bUe09Jf5Ep+zpuA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { @@ -1096,6 +1618,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1118,12 +1646,12 @@ } }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -1142,26 +1670,42 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", + "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", "dev": true, "requires": { + "es-abstract": "^1.18.0-next.1", + "es-get-iterator": "^1.1.0", "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.3", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "define-properties": { @@ -1189,28 +1733,53 @@ } }, "electron-to-chromium": { - "version": "1.3.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz", - "integrity": "sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w==", + "version": "1.3.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", + "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", "dev": true }, "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-get-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, "es-to-primitive": { @@ -1224,6 +1793,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1242,15 +1817,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1260,6 +1826,12 @@ "is-callable": "^1.1.3" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1267,9 +1839,9 @@ "dev": true }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -1280,11 +1852,22 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1342,39 +1925,69 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "dev": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-reference": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", @@ -1393,14 +2006,26 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1410,6 +2035,51 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1417,22 +2087,29 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -1450,45 +2127,12 @@ "dev": true }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" } }, "lodash": { @@ -1497,15 +2141,6 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -1531,9 +2166,9 @@ } }, "minimist": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.4.tgz", - "integrity": "sha512-wTiNDqe4D2rbTJGZk1qcdZgFtY0/r+iuE6GDT7V0/+Gu5MLpIDm4+CssDECR79OJs/OxLPXMzdxy153b5Qy3hg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { @@ -1543,33 +2178,26 @@ "dev": true }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } }, "object-keys": { "version": "1.1.1", @@ -1578,15 +2206,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -1598,36 +2226,6 @@ "wrappy": "1" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1640,27 +2238,21 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "re-emitter": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", @@ -1683,9 +2275,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -1698,19 +2290,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { @@ -1721,12 +2312,33 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -1738,9 +2350,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -1779,9 +2391,9 @@ } }, "rollup": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", - "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -1839,16 +2451,15 @@ } }, "rollup-plugin-terser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", - "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^2.1.2", - "terser": "^4.6.2" + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" } }, "rollup-pluginutils": { @@ -1873,10 +2484,23 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } }, "source-map": { "version": "0.5.7", @@ -1885,9 +2509,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -1918,34 +2542,33 @@ } }, "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.0" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" } }, "string_decoder": { @@ -1967,13 +2590,64 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", "dev": true, "requires": { - "chalk": "2.4.2", + "chalk": "4.1.0", "tap-out": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tap-out": { @@ -1989,43 +2663,57 @@ } }, "tape": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", - "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", - "dev": true, - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.0", - "object-inspect": "~1.7.0", - "resolve": "~1.15.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", + "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.3", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "function-bind": "^1.1.1", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.0.5", + "minimist": "^1.2.5", + "object-inspect": "^1.7.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "resolve": "^1.17.0", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } } }, "terser": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz", - "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -2082,6 +2770,66 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "dev": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/plugins/wikitext/package.json b/plugins/wikitext/package.json index 652f3e55..245fb2d4 100644 --- a/plugins/wikitext/package.json +++ b/plugins/wikitext/package.json @@ -32,17 +32,17 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.0", - "rollup": "2.2.0", + "@babel/core": "7.12.3", + "@babel/preset-env": "7.12.1", + "rollup": "2.33.1", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-json": "^4.0.0", "rollup-plugin-node-resolve": "^5.1.0", - "rollup-plugin-terser": "^5.0.0", - "tap-dancer": "^0.2.0", - "tape": "^4.11.0" + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.0.1" }, "license": "MIT" } diff --git a/scratch.js b/scratch.js index 0253d2cd..810dd998 100644 --- a/scratch.js +++ b/scratch.js @@ -11,9 +11,6 @@ wtf.extend(require('./plugins/html/src')) // }) let str = ` +
inside div
` -// let doc = wtf(str) -// console.log(doc.infobox(0)) - -let doc = wtf('', { title: 'Barack Obama' }) -console.log(doc.url()) +console.log(wtf(str).section(0).text()) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index 5e24f784..051a12c1 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -222,10 +222,9 @@ class Document { * If a clue is available return the category at that index * Else return all categories * - * @param {number} [clue] The index of the wanted category * @returns {string | string[]} The category at the provided index or all categories */ - categories(clue) { + categories() { return this._categories || [] } @@ -262,10 +261,9 @@ class Document { * If the clue is a number then it returns the paragraph at that index * Else it returns all paragraphs in an array * - * @param {number} [clue] The index of the to be selected paragraph * @returns {object | object[]} the selected paragraph or an array of all paragraphs */ - paragraphs(clue) { + paragraphs() { let arr = [] this.sections().forEach((s) => { arr = arr.concat(s.paragraphs()) @@ -277,10 +275,9 @@ class Document { * if no clue is provided, it compiles an array of sentences in the wiki text. * if the clue is provided it return the sentence at the provided index * - * @param {number} clue the index of the wanted sentence * @returns {object[]|object} an array of sentences or a single sentence */ - sentences(clue) { + sentences() { let arr = [] this.sections().forEach((sec) => { arr = arr.concat(sec.sentences()) @@ -293,10 +290,9 @@ class Document { * and then returns them in an array if no clue is provided. * if an clue is profieded then it returns the image at the clue-th index * - * @param {number} [clue] the index of the image to be selected * @returns {Image[]|Image} a single image or an array of images */ - images(clue) { + images() { let arr = sectionMap(this, 'images', null) //grab image from infobox, first this.infoboxes().forEach((info) => { diff --git a/src/01-document/toJson.js b/src/01-document/toJson.js index a0696f95..4abe0635 100644 --- a/src/01-document/toJson.js +++ b/src/01-document/toJson.js @@ -1,6 +1,4 @@ const setDefaults = require('../_lib/setDefaults') -const Section = require('../02-section/Section') -const Document = require('./Document') /** * @typedef DocumentToJsonOptions @@ -27,14 +25,14 @@ const defaults = { * @property {string | undefined} title * @property {number | null | undefined} pageID * @property {string[] | undefined} categories - * @property {Section[] | undefined} sections + * @property {object[] | undefined} sections * @property {boolean | undefined} isRedirect * @property {object | undefined} redirectTo - * @property {Template[] | undefined} coordinates - * @property {Infobox[] | undefined} infoboxes + * @property {object[] | undefined} coordinates + * @property {object[] | undefined} infoboxes * @property {Image[] | undefined} images * @property {string | undefined} plaintext - * @property {Reference[] | undefined} references + * @property {object[] | undefined} references */ /** diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 27599752..14a7baba 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -111,26 +111,22 @@ class Section { * returns all sentences in the section * if an clue is provided then it returns the sentence at clue-th index * - * @param {number} [clue] the clue for selecting the sentence * @returns {object | object[]} all sentences in an array or the clue-th sentence */ - sentences(clue) { - let arr = this.paragraphs().reduce((list, p) => { + sentences() { + return this.paragraphs().reduce((list, p) => { return list.concat(p.sentences()) }, []) - return arr || [] } /** * returns all paragraphs in the section * if an clue is provided then it returns the paragraph at clue-th index * - * @param {number} [clue] the clue for selecting the paragraph * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph */ - paragraphs(clue) { - let arr = this._paragraphs || [] - return arr || [] + paragraphs() { + return this._paragraphs || [] } /** @@ -176,12 +172,10 @@ class Section { * returns all tables in the section * if an clue is provided then it returns the table at clue-th index * - * @param {number} [clue] the clue for selecting the table * @returns {object | object[]} all tables in an array or the clue-th infobox */ - tables(clue) { - let arr = this._tables || [] - return arr + tables() { + return this._tables || [] } /** @@ -224,10 +218,9 @@ class Section { * returns all lists in the section * if an clue is provided then it returns the list at clue-th index * - * @param {number} [clue] the clue for selecting the list * @returns {object | object[]} all lists in an array or the clue-th list */ - coordinates(clue) { + coordinates() { let arr = [...this.templates('coord'), ...this.templates('coor')] return arr } @@ -236,10 +229,9 @@ class Section { * returns all lists in the section * if an clue is provided then it returns the list at clue-th index * - * @param {number} [clue] the clue for selecting the list * @returns {object | object[]} all lists in an array or the clue-th list */ - lists(clue) { + lists() { let arr = [] this.paragraphs().forEach((p) => { arr = arr.concat(p.lists()) @@ -251,42 +243,38 @@ class Section { * returns all interwiki links in the section * if an clue is provided then it returns the interwiki link at clue-th index * - * @param {number} [clue] the clue for selecting the interwiki link * @returns {object | object[]} all interwiki links in an array or the clue-th interwiki link */ - interwiki(clue) { + interwiki() { let arr = [] this.paragraphs().forEach((p) => { arr = arr.concat(p.interwiki()) }) - return arr || [] + return arr } /** * returns all images in the section * if an clue is provided then it returns the image at clue-th index * - * @param {number} [clue] the clue for selecting the reference * @returns {Image | Image[]} all images in an array or the clue-th image */ - images(clue) { + images() { let arr = [] this.paragraphs().forEach((p) => { arr = arr.concat(p.images()) }) - return arr || [] + return arr } /** * returns all references in the section * if an clue is provided then it returns the reference at clue-th index * - * @param {number} [clue] the clue for selecting the reference * @returns {object | object[]} all references in an array or the clue-th reference */ - references(clue) { - let arr = this._references || [] - return arr + references() { + return this._references || [] } //transformations diff --git a/src/02-section/index.js b/src/02-section/index.js index 5bd5bf92..aee65b2f 100644 --- a/src/02-section/index.js +++ b/src/02-section/index.js @@ -1,5 +1,3 @@ -//@ts-expect-error because this is some kind of type definition for jsdoc that's why typescript does not recognize it -const Document = require('../01-document/Document') const Section = require('./Section') const i18n = require('../_data/i18n') const isReference = new RegExp('^(' + i18n.references.join('|') + '):?', 'i') diff --git a/src/02-section/start-to-end/gallery.js b/src/02-section/start-to-end/gallery.js index b84be5c5..2002fc08 100644 --- a/src/02-section/start-to-end/gallery.js +++ b/src/02-section/start-to-end/gallery.js @@ -1,5 +1,3 @@ -//@ts-expect-error because this is some kind of type definition for jsdoc that's why typescript does not recognize it -const Document = require('../../01-document/Document') const Section = require('../Section') const parseSentence = require('../../04-sentence/').fromText @@ -10,7 +8,7 @@ const Image = require('../../image/Image') /** * * @private - * @param {Catcher} catcher + * @param {string} catcher * @param {Document} doc * @param {Section} section */ diff --git a/src/02-section/start-to-end/index.js b/src/02-section/start-to-end/index.js index e39ed269..bc0cfd71 100644 --- a/src/02-section/start-to-end/index.js +++ b/src/02-section/start-to-end/index.js @@ -1,5 +1,3 @@ -//@ts-expect-error because this is some kind of type definition for jsdoc that's why typescript does not recognize it -const Document = require('../../01-document/Document') const Section = require('../Section') const parseGallery = require('./gallery') @@ -9,15 +7,6 @@ const parseMlb = require('./mlb') const parseMMA = require('./mma') const parseMath = require('./math') -/** - * a catcher for the data used in these parsers - * - * @private - * @typedef Catcher - * @property {Template[]} templates the found templates - * @property {string} text the wiki text - */ - /** * parses out non standard templates * @@ -28,7 +17,7 @@ const parseMath = require('./math') * @private * @param {Section} section * @param {Document} doc - * @returns {Catcher} + * @returns {string} wikitext */ const xmlTemplates = function (section, doc) { const catcher = { diff --git a/src/02-section/start-to-end/math.js b/src/02-section/start-to-end/math.js index cc605958..ffffe59c 100644 --- a/src/02-section/start-to-end/math.js +++ b/src/02-section/start-to-end/math.js @@ -7,7 +7,7 @@ const parseSentence = require('../../04-sentence/').fromText * https://en.wikipedia.org/wiki/Help:Displaying_a_formula * * @private - * @param {Catcher} catcher + * @param {object} catcher */ const parseMath = function (catcher) { catcher.text = catcher.text.replace(/]*?)>([\s\S]+?)<\/math>/g, (_, attrs, inside) => { diff --git a/src/02-section/start-to-end/mlb.js b/src/02-section/start-to-end/mlb.js index db03a905..0e11ef7c 100644 --- a/src/02-section/start-to-end/mlb.js +++ b/src/02-section/start-to-end/mlb.js @@ -18,7 +18,7 @@ const whichHeadings = function (tmpl) { /** * * @private - * @param {Catcher} catcher + * @param {object} catcher */ const parseMlb = function (catcher) { catcher.text = catcher.text.replace( diff --git a/src/02-section/start-to-end/mma.js b/src/02-section/start-to-end/mma.js index 4f3028d9..e112b426 100644 --- a/src/02-section/start-to-end/mma.js +++ b/src/02-section/start-to-end/mma.js @@ -6,7 +6,7 @@ let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', * https://en.wikipedia.org/wiki/Template:MMA_record_start * * @private - * @param {Catcher} catcher + * @param {object} catcher */ const parseMMA = function (catcher) { catcher.text = catcher.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, (tmpl) => { diff --git a/src/02-section/start-to-end/nba.js b/src/02-section/start-to-end/nba.js index 493f616f..88b37b6b 100644 --- a/src/02-section/start-to-end/nba.js +++ b/src/02-section/start-to-end/nba.js @@ -9,7 +9,7 @@ const keys = { * https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start * * @private - * @param {Catcher} catcher + * @param {object} catcher */ const parseNBA = function (catcher) { catcher.text = catcher.text.replace( diff --git a/src/02-section/toJson.js b/src/02-section/toJson.js index f89c6913..a237ffc5 100644 --- a/src/02-section/toJson.js +++ b/src/02-section/toJson.js @@ -33,26 +33,26 @@ const defaults = { * @typedef sectionToJsonReturn * @property {string | undefined} title * @property {number | undefined} depth - * @property {Paragraph[] | undefined} paragraphs + * @property {object[] | undefined} paragraphs * @property {Image[] | undefined} images - * @property {Table[] | undefined} tables - * @property {Template[] | undefined} templates - * @property {Infobox[] | undefined} infoboxes - * @property {List[] | undefined} lists - * @property {Reference[] | undefined} references - * @property {Sentence[] | undefined} sentences + * @property {object[] | undefined} tables + * @property {object[] | undefined} templates + * @property {object[] | undefined} infoboxes + * @property {object[] | undefined} lists + * @property {object[] | undefined} references + * @property {object[] | undefined} sentences */ /** * * @param {Section} section * @param {sectionToJsonOptions} options - * @returns {sectionToJsonReturn} + * @returns {object} */ const toJSON = function (section, options) { options = setDefaults(options, defaults) /** - * @type {sectionToJsonReturn} + * @type {object} */ let data = {} diff --git a/src/04-sentence/Sentence.js b/src/04-sentence/Sentence.js index 17e59c36..35f109be 100644 --- a/src/04-sentence/Sentence.js +++ b/src/04-sentence/Sentence.js @@ -19,27 +19,20 @@ const methods = { } return arr }, - interwiki: function (n) { - let arr = this.links().filter((l) => l.wiki !== undefined) - return arr + interwiki: function () { + return this.links().filter((l) => l.wiki !== undefined) }, - bolds: function (n) { - let arr = [] + bolds: function () { if (this.data && this.data.fmt && this.data.fmt.bold) { - arr = this.data.fmt.bold || [] + return this.data.fmt.bold || [] } - return arr + return [] }, - italics: function (n) { - let arr = [] + italics: function () { if (this.data && this.data.fmt && this.data.fmt.italic) { - arr = this.data.fmt.italic || [] + return this.data.fmt.italic || [] } - return arr - }, - dates: function (n) { - let arr = [] - return arr + return [] }, text: function (str) { if (str !== undefined && typeof str === 'string') { @@ -62,7 +55,6 @@ const singular = { links: 'link', bolds: 'bold', italics: 'italic', - dates: 'date', } Object.keys(singular).forEach((k) => { let sing = singular[k] diff --git a/src/_fetch/01-makeUrl.js b/src/_fetch/01-makeUrl.js index 144e3634..d24baacf 100644 --- a/src/_fetch/01-makeUrl.js +++ b/src/_fetch/01-makeUrl.js @@ -16,8 +16,8 @@ const defaults = { /** * * @private - * @param {Object} obj - * @returns {string} + * @param {object} obj + * @returns {string} QueryString */ const toQueryString = function (obj) { return Object.entries(obj) diff --git a/src/_fetch/02-getResult.js b/src/_fetch/02-getResult.js index 281c604e..67a04d80 100644 --- a/src/_fetch/02-getResult.js +++ b/src/_fetch/02-getResult.js @@ -4,9 +4,9 @@ * the data-format from mediawiki api is nutso * * @private - * @param data - * @param {fetchDefaults} options - * @returns {*} + * @param {object} data + * @param {object} options + * @returns {*} result */ const getResult = function (data, options) { options = options || {} diff --git a/src/_fetch/_headers.js b/src/_fetch/_headers.js index 925be4c8..0b752893 100644 --- a/src/_fetch/_headers.js +++ b/src/_fetch/_headers.js @@ -1,21 +1,9 @@ -/** - * @private - * @typedef HeaderOptions - * @property {string} redirect - * @property {object} headers - * @property {*} headers.Origin - * @property {string} headers.Content-Type - * @property {string} headers.Api-User-Agent - * @property {string} headers.User-Agent - * @property {string} method - */ - /** * factory for header options * * @private * @param {object} options - * @returns {HeaderOptions} the generated options + * @returns {object} the generated options */ const makeHeaders = function (options) { let agent = diff --git a/src/template/_parsers/parse.js b/src/template/_parsers/parse.js index 8cb30219..9ed6f845 100644 --- a/src/template/_parsers/parse.js +++ b/src/template/_parsers/parse.js @@ -10,9 +10,9 @@ const cleanup = require('./03-cleanup') * most templates just want plaintext... * * @private - * @param str + * @param {str} str * @param {'json' | 'raw'} [fmt] - * @returns {Sentence|string|object} + * @returns {string} text */ const makeFormat = function (str, fmt) { let s = parseSentence(str) diff --git a/tests/fetch/fetch.test.js b/tests/fetch/fetch.test.js index cef1383b..2ac73c41 100644 --- a/tests/fetch/fetch.test.js +++ b/tests/fetch/fetch.test.js @@ -1,9 +1,9 @@ -var test = require('tape') -var wtf = require('../lib') +const test = require('tape') +const wtf = require('../lib') test('fetch-as-promise', (t) => { t.plan(1) - var p = wtf.fetch('Tony Hawk', 'en', { + const p = wtf.fetch('Tony Hawk', 'en', { 'Api-User-Agent': 'wtf_wikipedia test script - ', }) p.then(function (doc) { @@ -26,7 +26,7 @@ test('fetch-as-callback', (t) => { test('fetch-invalid', (t) => { t.plan(1) - var p = wtf.fetch('Taylor%20Swift', 'en', { + const p = wtf.fetch('Taylor%20Swift', 'en', { 'Api-User-Agent': 'wtf_wikipedia test script - ', }) p.then(function (doc) { @@ -39,7 +39,7 @@ test('fetch-invalid', (t) => { test('fetch-missing', (t) => { t.plan(1) - var p = wtf.fetch('NonExistentPage', 'en', { + const p = wtf.fetch('NonExistentPage', 'en', { 'Api-User-Agent': 'wtf_wikipedia test script - ', }) p.then(function (doc) { @@ -52,7 +52,7 @@ test('fetch-missing', (t) => { test('fetch-redirect', (t) => { t.plan(1) - var p = wtf.fetch('USA', { + const p = wtf.fetch('USA', { lang: 'simple', follow_redirects: false, 'Api-User-Agent': 'wtf_wikipedia test script - ', @@ -67,7 +67,7 @@ test('fetch-redirect', (t) => { test('fetch-alternate-wiki', (t) => { t.plan(1) - var p = wtf.fetch(336711, 'en', { + const p = wtf.fetch(336711, 'en', { 'Api-User-Agent': 'wtf_wikipedia test script - ', domain: 'www.mixesdb.com', path: 'db/api.php', @@ -82,7 +82,7 @@ test('fetch-alternate-wiki', (t) => { test('fetch-alternate-wiki-with-no-origin', (t) => { t.plan(1) - var p = wtf.fetch('Abyssal whip', { + const p = wtf.fetch('Abyssal whip', { 'Api-User-Agent': 'wtf_wikipedia test script - ', domain: 'oldschool.runescape.wiki', noOrigin: true, @@ -97,13 +97,13 @@ test('fetch-alternate-wiki-with-no-origin', (t) => { //uncomment for testing on node>6 test('ambiguous-pageids', async function (t) { - var doc = await wtf.fetch(1984, 'en') + const doc = await wtf.fetch(1984, 'en') t.equal(doc.title(), 'Arab world', 'input as pageid') doc = await wtf.fetch('1984', 'en') t.equal(doc.title(), '1984', 'input as text') - var docs = await wtf.fetch([2983, 7493], 'en') + const docs = await wtf.fetch([2983, 7493], 'en') t.equal(docs.length, 2, 'got two pageid results') t.equal(docs[0].title(), 'Austria-Hungary', 'first pageid') t.equal(docs[1].title(), 'Talk:P versus NP problem/Archive 1', 'second pageid') @@ -117,9 +117,20 @@ test('ambiguous-pageids', async function (t) { test('intensive', (t) => { /* fires a bunch of requests in parallel - this should be enough to get blocked by wikipedia if the user agent is not set correctly */ - var pages = ['Mouse', 'Rat', 'Porcupine', 'Chipmunk', 'Vole', 'Chinchilla', 'Gopher', 'Capybara', 'Beaver', 'Hamster'] + const pages = [ + 'Mouse', + 'Rat', + 'Porcupine', + 'Chipmunk', + 'Vole', + 'Chinchilla', + 'Gopher', + 'Capybara', + 'Beaver', + 'Hamster', + ] t.plan(pages.length) - var promises = pages.map((page) => + const promises = pages.map((page) => wtf.fetch(page, 'en', { 'Api-User-Agent': 'wtf_wikipedia test script - ', }) diff --git a/tests/lib/_cachedPage.js b/tests/lib/_cachedPage.js index cb2f35b9..e8b0bd9e 100644 --- a/tests/lib/_cachedPage.js +++ b/tests/lib/_cachedPage.js @@ -1,11 +1,11 @@ -var fs = require('fs') -var path = require('path') -var wtf = require('../../src/index') +const fs = require('fs') +const path = require('path') +const wtf = require('../../src/index') function from_file(page, options) { - var file = '../cache/' + page + '.txt' + let file = '../cache/' + page + '.txt' file = path.join(__dirname, file) - var str = fs.readFileSync(file, 'utf-8') + const str = fs.readFileSync(file, 'utf-8') return wtf(str, options) } module.exports = from_file From 9a81b6e48e8905e3d4d93c13943b5f110168ff2e Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 16:44:27 -0500 Subject: [PATCH 042/117] fix #380 --- src/01-document/preProcess/kill_xml.js | 2 +- tests/xml.test.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/01-document/preProcess/kill_xml.js b/src/01-document/preProcess/kill_xml.js index 631ef490..d42c4660 100644 --- a/src/01-document/preProcess/kill_xml.js +++ b/src/01-document/preProcess/kill_xml.js @@ -30,7 +30,7 @@ const kill_xml = function (wiki) { //types of html/xml that we want to trash completely. wiki = wiki.replace(noThanks, ' ') //some xml-like fragments we can also kill - wiki = wiki.replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%\.#:;'" ]{2,100}\/? ?> ?/g, ' ') // + wiki = wiki.replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%\.\-#:;'" ]{2,100}\/? ?> ?/g, ' ') // //only kill ref tags if they are selfclosing wiki = wiki.replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g, ' ') // diff --git a/tests/xml.test.js b/tests/xml.test.js index deec3974..a060a8a0 100644 --- a/tests/xml.test.js +++ b/tests/xml.test.js @@ -36,3 +36,11 @@ lkjsdf t.equal(doc.sections().length, 4, 'got all sections') t.end() }) + +test('div style replacement', function (t) { + let str = ` +
inside div
+` + t.equal(wtf(str).section(0).text(), 'inside div', 'support css style') + t.end() +}) From 79ee933dbac36825cfdd0c32084709ce5a09e0e1 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 17:17:46 -0500 Subject: [PATCH 043/117] add more date templates #397 --- scratch.js | 7 ++-- src/template/index.js | 2 +- src/template/parse.js | 4 +- src/template/templates/dates/misc.js | 47 +++++++++++++++++++++++ src/template/templates/formatting/misc.js | 38 ++++++++++++++++++ tests/lib/api.json | 5 --- tests/templates-inline.test.js | 9 +++++ 7 files changed, 100 insertions(+), 12 deletions(-) diff --git a/scratch.js b/scratch.js index 810dd998..6ed946d3 100644 --- a/scratch.js +++ b/scratch.js @@ -10,7 +10,6 @@ wtf.extend(require('./plugins/html/src')) // console.log(JSON.stringify(arr, null, 2)) // }) -let str = ` -
inside div
-` -console.log(wtf(str).section(0).text()) +let doc = wtf('{{MILLENNIUM|1999}}') +console.log(doc.text()) +// console.log(doc.templates()) diff --git a/src/template/index.js b/src/template/index.js index eac5a2e5..5ea53b42 100644 --- a/src/template/index.js +++ b/src/template/index.js @@ -37,7 +37,7 @@ const allTemplates = function (section, doc) { if (obj.children && obj.children.length > 0) { obj.children.forEach((ch) => parseThem(ch, obj)) } - obj.out = parse(obj, keep) + obj.out = parse(obj, keep, doc) //remove the text from every parent const removeIt = function (node, body, out) { if (node.parent) { diff --git a/src/template/parse.js b/src/template/parse.js index a558ca5b..54f91a47 100644 --- a/src/template/parse.js +++ b/src/template/parse.js @@ -8,7 +8,7 @@ const { isArray } = require('../_lib/helpers') const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8'] //this gets all the {{template}} strings and decides how to parse them -const parseTemplate = function (tmpl, list) { +const parseTemplate = function (tmpl, list, doc) { let name = tmpl.name if (ignore.hasOwnProperty(name) === true) { @@ -51,7 +51,7 @@ const parseTemplate = function (tmpl, list) { } //handle function syntax if (typeof templates[name] === 'function') { - return templates[name](tmpl.body, list) + return templates[name](tmpl.body, list, doc) } } diff --git a/src/template/templates/dates/misc.js b/src/template/templates/dates/misc.js index 39390110..cb439a5f 100644 --- a/src/template/templates/dates/misc.js +++ b/src/template/templates/dates/misc.js @@ -1,6 +1,21 @@ const format = require('./_format') const parse = require('../../_parsers/parse') +const toOrdinal = function (i) { + let j = i % 10 + let k = i % 100 + if (j === 1 && k !== 11) { + return i + 'st' + } + if (j === 2 && k !== 12) { + return i + 'nd' + } + if (j === 3 && k !== 13) { + return i + 'rd' + } + return i + 'th' +} + const misc = { reign: (tmpl) => { let order = ['start', 'end'] @@ -29,5 +44,37 @@ const misc = { } return str }, + // https://en.wikipedia.org/wiki/Template:Decade_link + 'decade link': (tmpl) => { + let obj = parse(tmpl, ['year']) + return `${obj.year}|${obj.year}s` + }, + // https://en.wikipedia.org/wiki/Template:Decade + decade: (tmpl) => { + let obj = parse(tmpl, ['year']) + let year = Number(obj.year) + year = parseInt(year / 10, 10) * 10 // round to decade + return `${year}s` + }, + // https://en.wikipedia.org/wiki/Template:Century + century: (tmpl) => { + let obj = parse(tmpl, ['year']) + let year = Number(obj.year) + year = parseInt(year / 100, 10) + 1 + return `${year}` + }, + // https://en.wikipedia.org/wiki/Template:MILLENNIUM + millennium: (tmpl) => { + let obj = parse(tmpl, ['year']) + let year = Number(obj.year) + year = parseInt(year / 1000, 10) + 1 + if (obj.abbr && obj.abbr === 'y') { + if (year < 0) { + return `${toOrdinal(Math.abs(year))} BC` + } + return `${toOrdinal(year)}` + } + return `${toOrdinal(year)} millennium` + }, } module.exports = misc diff --git a/src/template/templates/formatting/misc.js b/src/template/templates/formatting/misc.js index e743841a..700402ba 100644 --- a/src/template/templates/formatting/misc.js +++ b/src/template/templates/formatting/misc.js @@ -198,6 +198,44 @@ const inline = { finedetail: 0, //https://en.wikipedia.org/wiki/Template:Sort sort: 1, + + // these templates use the page's title + // https://en.wikipedia.org/wiki/Template:Title_year + 'title year': (tmpl, _list, doc) => { + let obj = parse(tmpl, ['match', 'nomatch', 'page']) + let title = obj.page || doc.title() + if (title) { + let m = title.match(/\b[0-9]{4}\b/) //parse the year out of the title's name + if (m) { + return m[0] + } + } + return obj.nomatch || '' //use default response + }, + // https://en.wikipedia.org/wiki/Template:Title_century + 'title century': (tmpl, _list, doc) => { + let obj = parse(tmpl, ['match', 'nomatch', 'page']) + let title = obj.page || doc.title() + if (title) { + let m = title.match(/\b([0-9]+)(st|nd|rd|th)\b/) //parse the century out of the title's name + if (m) { + return m[1] || '' + } + } + return obj.nomatch || '' //use default response + }, + // https://en.wikipedia.org/wiki/Template:Title_decade + 'title decade': (tmpl, _list, doc) => { + let obj = parse(tmpl, ['match', 'nomatch', 'page']) + let title = obj.page || doc.title() + if (title) { + let m = title.match(/\b([0-9]+)s\b/) //parse the decade out of the title's name + if (m) { + return m[1] || '' + } + } + return obj.nomatch || '' //use default response + }, } //aliases diff --git a/tests/lib/api.json b/tests/lib/api.json index 93394964..c7d9731c 100644 --- a/tests/lib/api.json +++ b/tests/lib/api.json @@ -311,11 +311,6 @@ "returns": "Array", "description": "" }, - { - "name": "dates", - "returns": "Array", - "description": "" - }, { "name": "json", "returns": "Object", diff --git a/tests/templates-inline.test.js b/tests/templates-inline.test.js index 449d0467..3fedd222 100644 --- a/tests/templates-inline.test.js +++ b/tests/templates-inline.test.js @@ -150,6 +150,15 @@ test('inline-output', (t) => { [`{{Winning percentage|30|20|50}}`, `.550`], [`{{Winning percentage|30|20}}`, `.600`], [`{{Winning percentage|30|20|50|ignore_ties=y}}`, `.300`], + [`asdf in {{Title year|match=1|nomatch=2008|page=}}`, 'asdf in 2008'], + [`{{Title century|page=Category:21st century in Ballyporeen}}`, '21'], + [`{{Title decade|page=Horticultural controversies in the 1790s in Xanadu}}`, '1790'], + ['[[{{Decade link|1960}}]]', '1960s'], + ['{{DECADE|1915}}', '1910s'], + ['{{CENTURY|1998}}', '20'], + ['{{CENTURY|2020}}', '21'], + ['{{MILLENNIUM|1999}}', '2nd millennium'], + ['{{MILLENNIUM|1|abbr=y}}', '1st'], ] arr.forEach((a) => { t.equal(wtf(a[0]).text(), a[1], a[0]) From d5d8e1f60f513b4d52acf50b8d63255c7532d198 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 18:07:49 -0500 Subject: [PATCH 044/117] move category and random methods to api plugin --- plugins/api/src/_fns.js | 2 +- plugins/api/src/category.js | 88 +++++++++++++++++++++++++++ plugins/api/src/getCategory.js | 80 ++++++++++++++++-------- plugins/api/src/getRandom.js | 39 ++++++++++++ plugins/api/src/index.js | 6 +- plugins/api/tests/category.test.js | 9 ++- plugins/api/tests/constructor.test.js | 4 +- plugins/api/tests/random.test.js | 6 +- scratch.js | 14 +++-- src/template/index.js | 3 +- src/template/parse.js | 1 - 11 files changed, 207 insertions(+), 45 deletions(-) create mode 100644 plugins/api/src/category.js create mode 100644 plugins/api/src/getRandom.js diff --git a/plugins/api/src/_fns.js b/plugins/api/src/_fns.js index 7e3dcbdf..a9a2b0b7 100644 --- a/plugins/api/src/_fns.js +++ b/plugins/api/src/_fns.js @@ -7,7 +7,7 @@ exports.normalize = function (title = '') { exports.defaults = { lang: 'en', - path: '/w/api.php' + path: 'w/api.php' } exports.toUrlParams = function (obj) { diff --git a/plugins/api/src/category.js b/plugins/api/src/category.js new file mode 100644 index 00000000..d24a8130 --- /dev/null +++ b/plugins/api/src/category.js @@ -0,0 +1,88 @@ +const http = require('./http/server') +const makeHeaders = require('./_headers') +const { isObject } = require('../_lib/helpers') + +const defaults = { + lang: 'en', + wiki: 'wikipedia', + domain: null, + path: 'w/api.php', //some 3rd party sites use a weird path +} + +const normalizeCategory = function (cat = '') { + if (/^Category/i.test(cat) === false) { + cat = 'Category:' + cat + } + cat = cat.replace(/ /g, '_') + return cat +} + +const getResult = function (body) { + let list = body.query.categorymembers || [] + let res = { + pages: [], + categories: [], + } + list.forEach((p) => { + if (p.ns === 14) { + delete p.ns + res.categories.push(p) + } else { + delete p.ns + res.pages.push(p) + } + }) + return res +} + +const makeUrl = function (category, options, cm) { + category = normalizeCategory(category) + category = encodeURIComponent(category) + let url = `https://${options.lang}.wikipedia.org/${options.path}?` + if (options.domain) { + url = `https://${options.domain}/${options.path}?` + } + url += `action=query&list=categorymembers&cmtitle=${category}&cmlimit=500&format=json&origin=*&redirects=true&cmtype=page|subcat` + if (cm) { + url += '&cmcontinue=' + cm + } + return url +} + +const fetchCategory = function (category, lang, options) { + options = options || {} + options = Object.assign({}, defaults, options) + //support lang 2nd param + if (typeof lang === 'string') { + options.lang = lang + } else if (isObject(lang)) { + options = Object.assign(options, lang) + } + let res = { + pages: [], + categories: [], + } + //wrap a promise around potentially-many requests + return new Promise((resolve, reject) => { + const doit = function (cm) { + let url = makeUrl(category, options, cm) + const headers = makeHeaders(options) + return http(url, headers) + .then((body) => { + res = getResult(body, res) + if (body.continue && body.continue.cmcontinue) { + doit(body.continue.cmcontinue) + } else { + resolve(res) + } + }) + .catch((e) => { + console.error(e) + reject(e) + }) + } + doit(null) + }) +} + +module.exports = fetchCategory diff --git a/plugins/api/src/getCategory.js b/plugins/api/src/getCategory.js index 10f13255..981da269 100644 --- a/plugins/api/src/getCategory.js +++ b/plugins/api/src/getCategory.js @@ -1,34 +1,60 @@ -const slow = require('slow') +const { normalize, defaults, toUrlParams } = require('./_fns') -const chunkBy = function (arr, chunkSize = 5) { - let groups = [] - for (let i = 0; i < arr.length; i += chunkSize) { - groups.push(arr.slice(i, i + chunkSize)) - } - return groups +const params = { + action: 'query', + list: 'categorymembers', + cmlimit: 500, + cmtype: 'page|subcat', + cmnamespace: 0, + format: 'json', + origin: '*', + redirects: true } -const fetchCat = function (cat, options = {}, wtf) { - if (!cat) { - return { docs: [], categories: [] } - } - return wtf.category(cat, options.lang).then((resp) => { - let pages = resp.pages.map((o) => o.title) - let groups = chunkBy(pages) - - const doit = function (group) { - return wtf.fetch(group, options) //returns a promise +const fetchIt = function (url, http, prop) { + return http(url).then((res) => { + let pages = Object.keys(res.query[prop] || {}) + if (pages.length === 0) { + return { pages: [], cursor: null } + } + let arr = pages.map((k) => res.query[prop][k]) + return { + pages: arr, + cursor: res.continue } - //only allow three requests at a time - return slow.three(groups, doit).then((responses) => { - //flatten the results - let docs = [].concat.apply([], responses) - return { - docs: docs, - categories: resp.categories - } - }) }) } -module.exports = fetchCat +const makeUrl = function (title, options, append) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?` + if (options.domain) { + url = `https://${options.domain}/${options.path}?` + } + url += toUrlParams(params) + if (/^Category/i.test(title) === false) { + title = 'Category:' + title + } + url += `&cmtitle=${normalize(title)}` + if (append) { + url += append + } + return url +} + +const getCategory = async function (title, options, http) { + let list = [] + let getMore = true + let append = '' + while (getMore) { + let url = makeUrl(title, defaults, append) + let { pages, cursor } = await fetchIt(url, http, 'categorymembers') + list = list.concat(pages) + if (cursor && cursor.cmcontinue) { + append = '&cmcontinue=' + cursor.lhcontinue + } else { + getMore = false + } + } + return list +} +module.exports = getCategory diff --git a/plugins/api/src/getRandom.js b/plugins/api/src/getRandom.js new file mode 100644 index 00000000..ca66fbd7 --- /dev/null +++ b/plugins/api/src/getRandom.js @@ -0,0 +1,39 @@ +const { defaults, toUrlParams } = require('./_fns') + +const params = { + action: 'query', + generator: 'random', + grnnamespace: '0', + prop: 'pageprops', + grnlimit: '1', + rvslots: 'main', + format: 'json', + origin: '*', + redirects: 'true' +} + +const fetchIt = function (url, http) { + return http(url).then((res) => { + let pages = Object.keys(res.query.pages || {}) + if (pages.length === 0) { + return { pages: [], cursor: null } + } + return res.query.pages[pages[0]] + }) +} + +const makeUrl = function (options) { + let url = `https://${options.lang}.wikipedia.org/${options.path}?` + if (options.domain) { + url = `https://${options.domain}/${options.path}?` + } + url += toUrlParams(params) + return url +} + +const getRandom = async function (_options, http) { + let url = makeUrl(defaults) + let page = await fetchIt(url, http) + return page +} +module.exports = getRandom diff --git a/plugins/api/src/index.js b/plugins/api/src/index.js index 28634bfe..bc068541 100644 --- a/plugins/api/src/index.js +++ b/plugins/api/src/index.js @@ -3,6 +3,7 @@ const getIncoming = require('./getIncoming') const getPageViews = require('./getPageViews') const getTransclusions = require('./getTransclusions') const getCategory = require('./getCategory') +const getRandomPage = require('./getRandom') const getRandomCategory = require('./getRandomCategory') const fetchList = require('./fetchList') @@ -19,6 +20,9 @@ const addMethod = function (models) { } // constructor methods + models.wtf.getRandomPage = function (options) { + return getRandomPage(options, models.http) + } models.wtf.getRandomCategory = function (options) { return getRandomCategory(options, models.http) } @@ -26,7 +30,7 @@ const addMethod = function (models) { return getTransclusions(template, options, models.http) } models.wtf.getCategoryPages = function (category, options) { - return getCategory(category, options, models.wtf) + return getCategory(category, options, models.http) } models.wtf.fetchList = function (list, options) { return fetchList(list, options, models.wtf) diff --git a/plugins/api/tests/category.test.js b/plugins/api/tests/category.test.js index f239daad..8e9d82da 100644 --- a/plugins/api/tests/category.test.js +++ b/plugins/api/tests/category.test.js @@ -2,13 +2,12 @@ const test = require('tape') const wtf = require('./_lib') test('category', (t) => { - t.plan(2) - const p = wtf.category('Category:Basketball teams in Toronto', { + t.plan(1) + const p = wtf.getCategoryPages('Category:Basketball teams in Toronto', { 'Api-User-Agent': 'wtf_wikipedia test script - ' }) - p.then(function (res) { - t.ok(res.pages.length > 2, 'got some pages') - t.ok(res.categories.length > 1, 'got a subcategory') + p.then(function (pages) { + t.ok(pages.length > 2, 'got some pages') }) p.catch(function (e) { t.throw(e) diff --git a/plugins/api/tests/constructor.test.js b/plugins/api/tests/constructor.test.js index 1f6eb895..5ec65b44 100644 --- a/plugins/api/tests/constructor.test.js +++ b/plugins/api/tests/constructor.test.js @@ -21,8 +21,8 @@ test('randomCategory', (t) => { test('getCategory', (t) => { t.plan(1) - wtf.getCategoryPages('Swiss female skeleton racers', opts).then(function (list) { - t.ok(list.docs.length > 0, `got ${list.docs.length} pages for category`) + wtf.getCategoryPages('Swiss female skeleton racers', opts).then(function (docs) { + t.ok(docs.length > 0, `got ${docs.length} pages for category`) }) }) diff --git a/plugins/api/tests/random.test.js b/plugins/api/tests/random.test.js index 6ceeca5d..aa2b2ac0 100644 --- a/plugins/api/tests/random.test.js +++ b/plugins/api/tests/random.test.js @@ -3,12 +3,12 @@ const wtf = require('./_lib') test('random', (t) => { t.plan(1) - let p = wtf.random('simple', 'simple', { + let p = wtf.getRandomPage('simple', 'simple', { follow_redirects: false, 'Api-User-Agent': 'wtf_wikipedia test script - ' }) - p.then(function (doc) { - t.ok(doc.title(), 'got redirect') + p.then(function (page) { + t.ok(page.title, 'got random page ' + page.title) }) p.catch(function (e) { t.throw(e) diff --git a/scratch.js b/scratch.js index 6ed946d3..84836bbc 100644 --- a/scratch.js +++ b/scratch.js @@ -1,5 +1,5 @@ const wtf = require('./src/index') -wtf.extend(require('./plugins/html/src')) +wtf.extend(require('./plugins/api/src')) // const getAll = async function (tmpl) { // let pages = await wtf.getTemplatePages(tmpl) @@ -9,7 +9,13 @@ wtf.extend(require('./plugins/html/src')) // getAll(template).then((arr) => { // console.log(JSON.stringify(arr, null, 2)) // }) +// const str = `hello {{citation|url=cool.com/?fun=yes}} ` +// const str = `{{Cita libru |url=cool.com |title= |last= |first= |date= |website= |publisher= |access-date= |quote=}}` +// const arr = wtf(str) +// .references() +// .map((c) => c.json()) +// console.log(arr) -let doc = wtf('{{MILLENNIUM|1999}}') -console.log(doc.text()) -// console.log(doc.templates()) +wtf.getCategoryPages('Swiss female skeleton racers').then((doc) => { + console.log(doc) +}) diff --git a/src/template/index.js b/src/template/index.js index 5ea53b42..fbca553b 100644 --- a/src/template/index.js +++ b/src/template/index.js @@ -12,7 +12,8 @@ const references = { } const isReference = function (obj) { - return references[obj.template] === true || isCitation.test(obj.template) === true + let kind = obj.template || obj.type || obj.name + return references[kind] === true || isCitation.test(kind) === true } const isObject = function (obj) { diff --git a/src/template/parse.js b/src/template/parse.js index 54f91a47..05b5399d 100644 --- a/src/template/parse.js +++ b/src/template/parse.js @@ -10,7 +10,6 @@ const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8'] //this gets all the {{template}} strings and decides how to parse them const parseTemplate = function (tmpl, list, doc) { let name = tmpl.name - if (ignore.hasOwnProperty(name) === true) { return '' } From 9c97d30188338f116cb05728dc421ade0656871a Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 18:18:22 -0500 Subject: [PATCH 045/117] tests passing again --- scratch.js | 15 +++++---------- scripts/test.js | 2 +- src/template/parse.js | 2 +- src/template/templates/formatting/misc.js | 6 +++--- tests/page.test.js | 4 ++-- 5 files changed, 12 insertions(+), 17 deletions(-) diff --git a/scratch.js b/scratch.js index 84836bbc..d9b19ce2 100644 --- a/scratch.js +++ b/scratch.js @@ -9,13 +9,8 @@ wtf.extend(require('./plugins/api/src')) // getAll(template).then((arr) => { // console.log(JSON.stringify(arr, null, 2)) // }) -// const str = `hello {{citation|url=cool.com/?fun=yes}} ` -// const str = `{{Cita libru |url=cool.com |title= |last= |first= |date= |website= |publisher= |access-date= |quote=}}` -// const arr = wtf(str) -// .references() -// .map((c) => c.json()) -// console.log(arr) - -wtf.getCategoryPages('Swiss female skeleton racers').then((doc) => { - console.log(doc) -}) +const str = `hello {{citation |url=cool.com }}` +const arr = wtf(str) + .references() + .map((c) => c.json()) +console.log(arr) diff --git a/scripts/test.js b/scripts/test.js index 9918050a..5d1d819e 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -18,7 +18,7 @@ if (arg) { // run the main tests: let fail = false -let code = sh.exec('tape "./tests/*.test.js" | tap-spec --color always').code +let code = sh.exec('tape "./tests/*.test.js" | tap-dancer --color always').code if (code !== 0) { fail = true } diff --git a/src/template/parse.js b/src/template/parse.js index 05b5399d..81ae5dc5 100644 --- a/src/template/parse.js +++ b/src/template/parse.js @@ -50,7 +50,7 @@ const parseTemplate = function (tmpl, list, doc) { } //handle function syntax if (typeof templates[name] === 'function') { - return templates[name](tmpl.body, list, doc) + return templates[name](tmpl.body, list, null, doc) } } diff --git a/src/template/templates/formatting/misc.js b/src/template/templates/formatting/misc.js index 700402ba..5f71b624 100644 --- a/src/template/templates/formatting/misc.js +++ b/src/template/templates/formatting/misc.js @@ -201,7 +201,7 @@ const inline = { // these templates use the page's title // https://en.wikipedia.org/wiki/Template:Title_year - 'title year': (tmpl, _list, doc) => { + 'title year': (tmpl, _list, _alias, doc) => { let obj = parse(tmpl, ['match', 'nomatch', 'page']) let title = obj.page || doc.title() if (title) { @@ -213,7 +213,7 @@ const inline = { return obj.nomatch || '' //use default response }, // https://en.wikipedia.org/wiki/Template:Title_century - 'title century': (tmpl, _list, doc) => { + 'title century': (tmpl, _list, _alias, doc) => { let obj = parse(tmpl, ['match', 'nomatch', 'page']) let title = obj.page || doc.title() if (title) { @@ -225,7 +225,7 @@ const inline = { return obj.nomatch || '' //use default response }, // https://en.wikipedia.org/wiki/Template:Title_decade - 'title decade': (tmpl, _list, doc) => { + 'title decade': (tmpl, _list, _alias, doc) => { let obj = parse(tmpl, ['match', 'nomatch', 'page']) let title = obj.page || doc.title() if (title) { diff --git a/tests/page.test.js b/tests/page.test.js index 7b8ba312..dfd6d83b 100644 --- a/tests/page.test.js +++ b/tests/page.test.js @@ -42,8 +42,8 @@ test('jodie_emery', (t) => { t.equal(doc.isRedirect(), false, 'not-redirect') t.equal(doc.infobox().data.nationality.text(), 'Canadian', 'nationality') t.equal(doc.infobox().template(), 'person', 'person template') - t.equal(doc.section().sentences.length >= 1, true, 'intro-length') - t.equal(doc.section(1).sentences.length >= 1, true, 'career-length') + t.equal(doc.section().sentences().length >= 1, true, 'intro-length') + t.equal(doc.section(1).sentences().length >= 1, true, 'career-length') t.equal(doc.categories().length, 8, 'cat-length') t.equal(doc.images().length, 1, 'image-length') t.end() From 36226fb2571c904a5c527de53f0c73ca0870be28 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 18:24:41 -0500 Subject: [PATCH 046/117] linter passing --- .eslintrc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index feb7d012..30b85340 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,4 +1,5 @@ { + "root": true, "env": { "es6": true, "browser": true, @@ -58,8 +59,10 @@ "ignoreRegExpLiterals": true } ], - "require-jsdoc": 0, + "jsdoc/require-jsdoc": 0, + "jsdoc/require-description": 0, "jsdoc/require-param-description": 0, + "jsdoc/require-returns-description": 0, "jsdoc/require-property-description": 0 } } From d403b95f5ccda49ee2037daa573ad36c29a02d39 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 12 Nov 2020 18:30:50 -0500 Subject: [PATCH 047/117] cleanup config files --- .eslintignore | 1 - .github/workflows/build-and-test.yml | 2 +- .gitignore | 1 - contributing.md | 6 +- demo/index.html | 1 - readFile.js | 8 --- tsconfig.json | 82 ++++++---------------------- 7 files changed, 22 insertions(+), 79 deletions(-) delete mode 100644 readFile.js diff --git a/.eslintignore b/.eslintignore index a3137ad2..fa5eef33 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,3 @@ **/node_modules/ node_modules/ - **/builds/ diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 1b08832a..53b8790e 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - node-version: [10.x, 13.x] + node-version: [10.x, 15.x] steps: - uses: actions/checkout@v2 diff --git a/.gitignore b/.gitignore index f31400ec..5623b26a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ node_modules .git -viz coverage coverage.lcov codecov.yml diff --git a/contributing.md b/contributing.md index b8414598..63b4a20e 100644 --- a/contributing.md +++ b/contributing.md @@ -1,7 +1,7 @@ -Pull requests are always welcome and respected. Cosmetic code things are never blockers. +Pull requests are always welcome and respected. Cosmetic things are never blockers. -Please open an issue to ask questions before making a big PR, that changes behaviour or adds new features. +Before making a big PR, please open an issue to ask questions. See **[Instructions for contributing](https://github.com/spencermountain/wtf_wikipedia/wiki/Contributing)** -It's done collaboratively or not at all! +Projects like this done collaboratively, or not at all! diff --git a/demo/index.html b/demo/index.html index b261ab6b..23d23094 100644 --- a/demo/index.html +++ b/demo/index.html @@ -33,7 +33,6 @@ - - diff --git a/demo/es-module.html b/demo/es-module.html new file mode 100644 index 00000000..78f13af0 --- /dev/null +++ b/demo/es-module.html @@ -0,0 +1,32 @@ + + + + + + + + + + +
+ client-side test for wtf_wikipedia +
+
+
ES5 build:
+ loading... +
+ +
+
ESModule:
+ loading... +
+ + + + diff --git a/scratch.js b/scratch.js index 88a49626..6d67dc31 100644 --- a/scratch.js +++ b/scratch.js @@ -1,8 +1,26 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/wikis/wiktionary/plugin')) -let str = `{{hyphenation|en|mea|sure}}` +// one +// let str = `[[one]] and [[two]]` +// let doc = wtf(str) +// console.log(doc.links(0)) + +// two +let str = `{| class="wikitable" +|- +! Header 1 +! Header 2 +! Header 3 +|- +| row 1, cell 1 +| row 1, cell 2 +| row 1, cell 3 +|- +| row 2, cell 1 +| row 2, cell 2 +| row 2, cell 3 +|}` let doc = wtf(str) -console.log(doc.templates()) -console.log(doc.text()) -console.log(doc.link(0)) +console.log(doc.table().get(['header 2', 'asdf', 'Header 1'])) +// console.log(doc.table().json()) diff --git a/scripts/fetch-templates.js b/scripts/fetch-templates.js index a14d9bda..c8349179 100644 --- a/scripts/fetch-templates.js +++ b/scripts/fetch-templates.js @@ -12,7 +12,8 @@ const ns = 10 //templates // listen: true, // } -let url = 'https://en.wikipedia.org/w/api.php?action=query&list=allpages&aplimit=500&apnamespace=' + ns + '&format=json' +let url = + 'https://wiki.openstreetmap.org/w/api.php?action=query&list=allpages&aplimit=500&apnamespace=' + ns + '&format=json' const doit = function (from) { let myUrl = url + '&apfrom=' + encodeURIComponent(from) diff --git a/src/_fetch/_headers.js b/src/_fetch/_headers.js index 0b752893..c2fa7b72 100644 --- a/src/_fetch/_headers.js +++ b/src/_fetch/_headers.js @@ -23,6 +23,7 @@ const makeHeaders = function (options) { 'Api-User-Agent': agent, 'User-Agent': agent, Origin: origin, + 'Accept-Encoding': 'gzip', }, redirect: 'follow', } diff --git a/src/table/Table.js b/src/table/Table.js index d003ec66..a7cb1e3f 100644 --- a/src/table/Table.js +++ b/src/table/Table.js @@ -34,19 +34,28 @@ const methods = { return links }, get(keys) { + // normalize mappings + let have = this.data[0] || {} + let mapping = Object.keys(have).reduce((h, k) => { + h[normalize(k)] = k + return h + }, {}) // string gets a flat-list if (typeof keys === 'string') { let key = normalize(keys) + key = mapping[key] || key return this.data.map((row) => { return row[key] ? row[key].text() : null }) } // array gets obj-list - keys = keys.map(normalize) + keys = keys.map(normalize).map((k) => mapping[k] || k) return this.data.map((row) => { return keys.reduce((h, k) => { if (row[k]) { h[k] = row[k].text() + } else { + h[k] = '' } return h }, {}) From 5a77cd89b9e7715734fc0e4c69586348eb58c3fb Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 08:52:56 -0400 Subject: [PATCH 107/117] add wikitext methods --- scratch.js | 29 ++++++++-------------- src/01-document/Document.js | 9 +++++++ src/02-section/Section.js | 10 +++++++- src/03-paragraph/Paragraph.js | 3 +++ src/04-sentence/Sentence.js | 3 +++ src/04-sentence/index.js | 1 + tests/integration/v9.test.js | 45 +++++++++++++++++++++++++++++++++++ 7 files changed, 80 insertions(+), 20 deletions(-) create mode 100644 tests/integration/v9.test.js diff --git a/scratch.js b/scratch.js index 6d67dc31..d5dfac8c 100644 --- a/scratch.js +++ b/scratch.js @@ -2,25 +2,16 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/wikis/wiktionary/plugin')) // one -// let str = `[[one]] and [[two]]` -// let doc = wtf(str) +let str = `[[one]] and [[two]]` +let doc = wtf(str) // console.log(doc.links(0)) +console.log(doc.sentence().wikitext()) // two -let str = `{| class="wikitable" -|- -! Header 1 -! Header 2 -! Header 3 -|- -| row 1, cell 1 -| row 1, cell 2 -| row 1, cell 3 -|- -| row 2, cell 1 -| row 2, cell 2 -| row 2, cell 3 -|}` -let doc = wtf(str) -console.log(doc.table().get(['header 2', 'asdf', 'Header 1'])) -// console.log(doc.table().json()) + +// // console.log(doc.table().json()) + +// let doc = wtf.fetch('Milwaukee Bucks').then((doc) => { +// console.log(doc.sentence(133)) +// console.log(doc.sentence(133).json()) +// }) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index eaaeff48..fcdd62bd 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -459,6 +459,15 @@ class Document { return toJSON(this, options) } + /** + * return original wiki markup + * + * @returns {string} markup text + */ + wikitext() { + return this._wiki || '' + } + /** * prints the title of every section * diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 79f92a44..4614b292 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -21,7 +21,7 @@ const defaults = { /** * the Section class represents the different sections of the article. * we look for the == title == syntax and split and parse the sections from there - * + * * @class */ class Section { @@ -477,6 +477,14 @@ class Section { .map((p) => p.text(options)) .join('\n\n') } + /** + * returns original wiki markup + * + * @returns {string} the original markup + */ + wikitext() { + return this._wiki + } /** * returns a json version of the section diff --git a/src/03-paragraph/Paragraph.js b/src/03-paragraph/Paragraph.js index f987b3a4..035e65dc 100644 --- a/src/03-paragraph/Paragraph.js +++ b/src/03-paragraph/Paragraph.js @@ -60,6 +60,9 @@ const methods = { options = setDefaults(options, defaults) return toJSON(this, options) }, + wikitext: function () { + return this.data.wiki + }, } methods.citations = methods.references Object.keys(methods).forEach((k) => { diff --git a/src/04-sentence/Sentence.js b/src/04-sentence/Sentence.js index 5a52bd96..e020eb4c 100644 --- a/src/04-sentence/Sentence.js +++ b/src/04-sentence/Sentence.js @@ -44,6 +44,9 @@ const methods = { json: function (options) { return toJSON(this, options) }, + wikitext: function () { + return this.data.wiki || '' + }, isEmpty: function () { return this.data.text === '' }, diff --git a/src/04-sentence/index.js b/src/04-sentence/index.js index e9adb12a..85b650cc 100644 --- a/src/04-sentence/index.js +++ b/src/04-sentence/index.js @@ -30,6 +30,7 @@ function postprocess(line) { */ function fromText(str) { let obj = { + wiki: str, text: str, } //pull-out the [[links]] diff --git a/tests/integration/v9.test.js b/tests/integration/v9.test.js new file mode 100644 index 00000000..c9b008cd --- /dev/null +++ b/tests/integration/v9.test.js @@ -0,0 +1,45 @@ +const test = require('tape') +const wtf = require('../lib') + +test('wikitext', (t) => { + const str = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]]. + + She is '''''very''''' good` + let doc = wtf(str) + t.equal(doc.wikitext(), str, 'doc-wikitext') + t.equal(doc.section().wikitext(), str, 'section-wikitext') + let first = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]].` + t.equal(doc.paragraph().wikitext(), first, 'paragraph-wikitext') + t.equal(doc.sentence().wikitext(), first, 'sentence-wikitext') + + t.end() +}) + +test('table-get', (t) => { + let str = `{| class="wikitable" +|- +! Header 1 +! Header 2 +! Header 3 +|- +| row 1, cell 1 +| row 1, cell 2 +| row 1, cell 3 +|- +| row 2, cell 1 +| row 2, cell 2 +| row 2, cell 3 +|- +| row 3, cell 1 +| row 3, cell 2 +| row 3, cell 3 +|}` + let doc = wtf(str) + let data = doc.table().get('header 2') + t.deepEqual(data, ['row 1, cell 2', 'row 2, cell 2', 'row 3, cell 2']) + + data = doc.table().get(['header 2', 'asdf', 'Header 1']) + t.equal(data.length, 3, 'still three') + t.equal(Object.keys(data).length, 3, 'three keys') + t.end() +}) From 54d2e079c58be5ee0fd9ad9e723545f01823f105 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 10:20:29 -0400 Subject: [PATCH 108/117] more wikitext methods --- scratch.js | 28 ++++++++++++++++++++++++---- src/image/Image.js | 3 +++ src/image/index.js | 1 + src/infobox/Infobox.js | 4 ++++ src/link/Link.js | 4 ++++ src/link/index.js | 2 +- src/list/List.js | 9 ++++++++- src/list/index.js | 2 +- src/table/Table.js | 10 +++++++++- src/table/index.js | 2 +- tests/integration/v9.test.js | 14 +++++++++++++- 11 files changed, 69 insertions(+), 10 deletions(-) diff --git a/scratch.js b/scratch.js index d5dfac8c..7b9d981f 100644 --- a/scratch.js +++ b/scratch.js @@ -2,11 +2,9 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/wikis/wiktionary/plugin')) // one -let str = `[[one]] and [[two]]` -let doc = wtf(str) +// let str = `[[one]] and [[two]]` +// let doc = wtf(str) // console.log(doc.links(0)) -console.log(doc.sentence().wikitext()) - // two // // console.log(doc.table().json()) @@ -15,3 +13,25 @@ console.log(doc.sentence().wikitext()) // console.log(doc.sentence(133)) // console.log(doc.sentence(133).json()) // }) + +let str = `{{Infobox animanga/Novel +| 著者 = [[白米良]] +| イラスト = [[たかやKi]] +| 出版社 = [[オーバーラップ (企業)|オーバーラップ]] +| 掲載誌 = [[小説家になろう]] +| レーベル = [[オーバーラップ文庫]] +| 開始号 = 2013年11月7日 +| 終了号 = +| 開始日 = 2015年6月24日 +| 終了日 = +| 巻数 = 既刊16巻(本編11巻+外伝4巻+短編集1巻)
(2020年7月現在) +| インターネット = 1 +}}` +str = `* one +* Two +* three +` +let doc = wtf(str) +// console.log(doc.links(0).map((t) => t.text())) +// console.log(doc.infobox().wikitext()) +console.log(doc.list().wikitext()) diff --git a/src/image/Image.js b/src/image/Image.js index 3f86df4f..598dcf7a 100644 --- a/src/image/Image.js +++ b/src/image/Image.js @@ -72,6 +72,9 @@ const methods = { text: function () { return '' }, + wikitext: function () { + return this.data.wiki || '' + }, } Object.keys(methods).forEach((k) => { diff --git a/src/image/index.js b/src/image/index.js index b62cd75d..d26b5e30 100644 --- a/src/image/index.js +++ b/src/image/index.js @@ -43,6 +43,7 @@ const oneImage = function (img, doc) { file: file, lang: doc._lang, domain: doc._domain, + wiki: img, } //try to grab other metadata, too img = img.replace(/^\[\[/, '') diff --git a/src/infobox/Infobox.js b/src/infobox/Infobox.js index 9a641816..47609701 100644 --- a/src/infobox/Infobox.js +++ b/src/infobox/Infobox.js @@ -81,6 +81,10 @@ const methods = { options = options || {} return toJson(this, options) }, + wikitext: function () { + console.log(this.data) + return '' + }, keyValue: function () { return Object.keys(this.data).reduce((h, k) => { if (this.data[k]) { diff --git a/src/link/Link.js b/src/link/Link.js index 3d31bae4..77b06d80 100644 --- a/src/link/Link.js +++ b/src/link/Link.js @@ -39,6 +39,10 @@ const methods = { } return obj }, + wikitext: function () { + let txt = this.data.raw || '' + return txt + }, page: function (str) { if (str !== undefined) { this.data.page = str diff --git a/src/link/index.js b/src/link/index.js index a753c884..255232c1 100644 --- a/src/link/index.js +++ b/src/link/index.js @@ -15,7 +15,7 @@ const getLinks = function (data) { let links = parseLinks(wiki) || [] data.links = links.map((link) => { wiki = wiki.replace(link.raw, link.text || link.page || '') - delete link.raw + // delete link.raw return new Link(link) }) wiki = removeLinks(wiki) diff --git a/src/list/List.js b/src/list/List.js index 63c58e30..22c8f9c7 100644 --- a/src/list/List.js +++ b/src/list/List.js @@ -10,11 +10,15 @@ const toText = (list, options) => { .join('\n') } -const List = function (data) { +const List = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data, }) + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki, + }) } const methods = { @@ -41,6 +45,9 @@ const methods = { text() { return toText(this.data) }, + wikitext() { + return this.wiki || '' + }, } Object.keys(methods).forEach((k) => { diff --git a/src/list/index.js b/src/list/index.js index b82d2551..ece3f16f 100644 --- a/src/list/index.js +++ b/src/list/index.js @@ -60,7 +60,7 @@ const parseList = function (paragraph) { theRest.push(lines[i]) } } - paragraph.lists = lists.map((l) => new List(l)) + paragraph.lists = lists.map((l) => new List(l, wiki)) paragraph.wiki = theRest.join('\n') } module.exports = parseList diff --git a/src/table/Table.js b/src/table/Table.js index a7cb1e3f..3897955c 100644 --- a/src/table/Table.js +++ b/src/table/Table.js @@ -10,11 +10,15 @@ const normalize = function (key = '') { return key } -const Table = function (data) { +const Table = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data, }) + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki, + }) } const methods = { @@ -78,6 +82,10 @@ const methods = { text() { return '' }, + + wikitext() { + return this._wiki || '' + }, } methods.keyvalue = methods.keyValue methods.keyval = methods.keyValue diff --git a/src/table/index.js b/src/table/index.js index 6001fa4f..74fdb083 100644 --- a/src/table/index.js +++ b/src/table/index.js @@ -37,7 +37,7 @@ const findTables = function (section) { wiki = wiki.replace(str, '') let data = parseTable(str) if (data && data.length > 0) { - tables.push(new Table(data)) + tables.push(new Table(data, str)) } } }) diff --git a/tests/integration/v9.test.js b/tests/integration/v9.test.js index c9b008cd..066334be 100644 --- a/tests/integration/v9.test.js +++ b/tests/integration/v9.test.js @@ -2,7 +2,7 @@ const test = require('tape') const wtf = require('../lib') test('wikitext', (t) => { - const str = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]]. + let str = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]]. She is '''''very''''' good` let doc = wtf(str) @@ -11,7 +11,17 @@ test('wikitext', (t) => { let first = `'''K. Nicole Mitchell''' is ''currently'' a [[U.S. Magistrate Judge]].` t.equal(doc.paragraph().wikitext(), first, 'paragraph-wikitext') t.equal(doc.sentence().wikitext(), first, 'sentence-wikitext') + t.equal(doc.link().wikitext(), `[[U.S. Magistrate Judge]]`, 'sentence-wikitext') + str = 'hello [[File:cool.svg|yeah]] after' + doc = wtf(str) + t.equal(doc.image().wikitext(), `[[File:cool.svg|yeah]]`, 'image-wikitext') + + str = `* one +* Two +* three` + doc = wtf(str) + t.equal(doc.list().wikitext(), str, 'list-wikitext') t.end() }) @@ -41,5 +51,7 @@ test('table-get', (t) => { data = doc.table().get(['header 2', 'asdf', 'Header 1']) t.equal(data.length, 3, 'still three') t.equal(Object.keys(data).length, 3, 'three keys') + + t.equal(doc.table().wikitext(), str, 'table-wikitext') t.end() }) From b3f256f7a0343fda0aedb753c286ab65fc100c9c Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 10:55:12 -0400 Subject: [PATCH 109/117] templates function now returns Template objects --- scratch.js | 43 ++++++++++++---------- src/01-document/Document.js | 6 +-- src/02-section/Section.js | 6 +-- src/02-section/toJson.js | 2 +- tests/integration/currencies.test.js | 2 +- tests/integration/extend.test.js | 2 +- tests/integration/html.test.js | 4 +- tests/integration/i18n.test.js | 2 +- tests/integration/images.test.js | 6 +-- tests/integration/json-full.test.js | 4 +- tests/integration/lists.test.js | 8 ++-- tests/integration/math.test.js | 10 ++--- tests/integration/more-templates.test.js | 20 +++++----- tests/integration/start-end.test.js | 2 +- tests/integration/table.test.js | 2 +- tests/integration/template.test.js | 2 +- tests/integration/templates-data.test.js | 18 ++++----- tests/integration/templates-inline.test.js | 2 +- tests/integration/tracklist.test.js | 4 +- 19 files changed, 76 insertions(+), 69 deletions(-) diff --git a/scratch.js b/scratch.js index 7b9d981f..b9c3345d 100644 --- a/scratch.js +++ b/scratch.js @@ -14,24 +14,29 @@ wtf.extend(require('./plugins/wikis/wiktionary/plugin')) // console.log(doc.sentence(133).json()) // }) -let str = `{{Infobox animanga/Novel -| 著者 = [[白米良]] -| イラスト = [[たかやKi]] -| 出版社 = [[オーバーラップ (企業)|オーバーラップ]] -| 掲載誌 = [[小説家になろう]] -| レーベル = [[オーバーラップ文庫]] -| 開始号 = 2013年11月7日 -| 終了号 = -| 開始日 = 2015年6月24日 -| 終了日 = -| 巻数 = 既刊16巻(本編11巻+外伝4巻+短編集1巻)
(2020年7月現在) -| インターネット = 1 -}}` -str = `* one -* Two -* three -` -let doc = wtf(str) +// let str = `{{Infobox animanga/Novel +// | 著者 = [[白米良]] +// | イラスト = [[たかやKi]] +// | 出版社 = [[オーバーラップ (企業)|オーバーラップ]] +// | 掲載誌 = [[小説家になろう]] +// | レーベル = [[オーバーラップ文庫]] +// | 開始号 = 2013年11月7日 +// | 終了号 = +// | 開始日 = 2015年6月24日 +// | 終了日 = +// | 巻数 = 既刊16巻(本編11巻+外伝4巻+短編集1巻)
(2020年7月現在) +// | インターネット = 1 +// }}` +// str = `{{hello|world}} +// ` +// let doc = wtf(str) // console.log(doc.links(0).map((t) => t.text())) // console.log(doc.infobox().wikitext()) -console.log(doc.list().wikitext()) +// console.log(doc.template()) + +let str = ` +File:YYZ Aerial 2.jpg +` +let doc = wtf(str, { domain: 'cool.com' }) +// let img = doc.image(0).url() +console.log(doc.section().json()) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index fcdd62bd..dea740e5 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -311,9 +311,9 @@ class Document { }) //look for 'gallery' templates, too this.templates().forEach((obj) => { - if (obj.template === 'gallery') { - obj.images = obj.images || [] - obj.images.forEach((img) => { + if (obj.data.template === 'gallery') { + obj.data.images = obj.data.images || [] + obj.data.images.forEach((img) => { if (!(img instanceof Image)) { img.language = this.language() img.domain = this.domain() diff --git a/src/02-section/Section.js b/src/02-section/Section.js index 4614b292..c2d67a35 100644 --- a/src/02-section/Section.js +++ b/src/02-section/Section.js @@ -194,10 +194,10 @@ class Section { */ templates(clue) { let arr = this._templates || [] - arr = arr.map((t) => t.json()) + // arr = arr.map((t) => t.json()) if (typeof clue === 'string') { clue = clue.toLowerCase() - return arr.filter((o) => o.template === clue || o.name === clue) + return arr.filter((o) => o.data.template === clue || o.data.name === clue) } return arr @@ -228,7 +228,7 @@ class Section { */ coordinates() { let arr = [...this.templates('coord'), ...this.templates('coor')] - return arr + return arr.map((tmpl) => tmpl.json()) } /** diff --git a/src/02-section/toJson.js b/src/02-section/toJson.js index e19abb11..8fd87f5b 100644 --- a/src/02-section/toJson.js +++ b/src/02-section/toJson.js @@ -60,7 +60,7 @@ const toJSON = function (section, options) { //template json data if (options.templates === true) { - let templates = section.templates() + let templates = section.templates().map((tmpl) => tmpl.json()) if (templates.length > 0) { data.templates = templates //encode them, for mongodb diff --git a/tests/integration/currencies.test.js b/tests/integration/currencies.test.js index 2d874452..61e2f2ce 100644 --- a/tests/integration/currencies.test.js +++ b/tests/integration/currencies.test.js @@ -11,7 +11,7 @@ test('currency-templates', function (t) { doc = wtf('{{Currency|1,000|JPY}} world') t.equal(doc.text(), '¥1,000 world', 'currency yen') t.equal(doc.templates().length, 1, 'got a template') - t.equal(doc.template().amount, '1,000', 'got template amount') + t.equal(doc.template().json().amount, '1,000', 'got template amount') doc = wtf('{{Currency|1000|USD}}') t.equal(doc.text(), 'US$1000', 'currency named parameters') diff --git a/tests/integration/extend.test.js b/tests/integration/extend.test.js index 70c65029..18bab83a 100644 --- a/tests/integration/extend.test.js +++ b/tests/integration/extend.test.js @@ -24,7 +24,7 @@ test('extend templates', (t) => { }) let doc = wtf(`it is {{missing|true}}`) - let templates = doc.templates() + let templates = doc.templates().map((tmpl) => tmpl.json()) t.equal(templates.length, 1, 'found template') t.equal(templates[0].working, true, 'template obj') t.equal(doc.text(), 'it is working', 'template text') diff --git a/tests/integration/html.test.js b/tests/integration/html.test.js index 307ef786..ab2a2cd0 100644 --- a/tests/integration/html.test.js +++ b/tests/integration/html.test.js @@ -24,12 +24,12 @@ test('support bold and italics', (t) => { test('support sub and sup', (t) => { let doc = wtf(`hi world there`) t.equal(doc.text(), 'hi world there') - let tmpl = doc.template() || {} + let tmpl = doc.template().json() || {} t.equal(tmpl.text, 'world', 'got sub template') doc = wtf(`hi world there`) t.equal(doc.text(), 'hi world there') - tmpl = doc.template() || {} + tmpl = doc.template().json() || {} t.equal(tmpl.text, 'world', 'got sup template') t.end() }) diff --git a/tests/integration/i18n.test.js b/tests/integration/i18n.test.js index b12a52e2..9e52f584 100644 --- a/tests/integration/i18n.test.js +++ b/tests/integration/i18n.test.js @@ -6,7 +6,7 @@ test('nihongo templates templates', (t) => { let doc = wtf(str) t.equal(doc.text(), 'hello Tokyo Tower (東京タワー) world', 'sub english word') t.equal(doc.templates().length, 1, 'have template') - t.equal(doc.template(0).romaji, 'Tōkyō tawā', 'have translation') + t.equal(doc.template(0).json().romaji, 'Tōkyō tawā', 'have translation') str = `In Japanese, {{Nihongo2|虚無僧}} reads ''komusō''.` doc = wtf(str) diff --git a/tests/integration/images.test.js b/tests/integration/images.test.js index 555f062e..001d4760 100644 --- a/tests/integration/images.test.js +++ b/tests/integration/images.test.js @@ -20,7 +20,7 @@ The paintings have the freedom and energy of sketches, using warm and cool ligh ` const doc = wtf(str) t.deepEqual(doc.section('paintings').templates('gallery').length, 1, 'section-has-gallery') - const templ = doc.template(0) + const templ = doc.template(0).json() t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 5, '5 images') t.deepEqual(templ.images[0].caption.link().page(), 'Freyja', 'image has caption') @@ -43,7 +43,7 @@ test('gallery-tag-2', (t) => { foo`) - const templ = doc.template() + const templ = doc.template().json() t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 8, '8 images') t.deepEqual(templ.images[0].file, 'Culex-female.jpg', 'got filename') @@ -57,7 +57,7 @@ test('gallery-template', (t) => { |File:Kurmi threshing.jpg|Another ethnographic print from 1916 showing a Kurmi family employing its beasts of burden to thresh wheat. |File:Kurmi winnowing.jpg|A third print from the same collection showing the Kurmi family winnowing. }} ` - const templ = wtf(str).template() + const templ = wtf(str).template().json() t.deepEqual(templ.template, 'gallery', 'document-has-template') t.deepEqual(templ.images.length, 4, 'has 4 images') t.end() diff --git a/tests/integration/json-full.test.js b/tests/integration/json-full.test.js index 6f6bdc81..0fb3cacd 100644 --- a/tests/integration/json-full.test.js +++ b/tests/integration/json-full.test.js @@ -697,8 +697,8 @@ test('plurals / singular - all should exist', (t) => { }, ], template: [ - { clue: undefined, expected: { date: 'August 2016', template: 'use mdy dates' } }, - { clue: 1, expected: { template: 'good article' } }, + { clue: undefined, json: true, expected: { date: 'August 2016', template: 'use mdy dates' } }, + { clue: 1, json: true, expected: { template: 'good article' } }, ], category: [ { clue: undefined, expected: '1916 establishments in Illinois' }, diff --git a/tests/integration/lists.test.js b/tests/integration/lists.test.js index aaf26db1..bd0d1267 100644 --- a/tests/integration/lists.test.js +++ b/tests/integration/lists.test.js @@ -49,7 +49,7 @@ test('collapsible list', function (t) { | [[Switzerland]] }}` let doc = wtf(str) - let tmpl = doc.template() || {} + let tmpl = doc.template().json() || {} t.equal(tmpl.title, 'European Free Trade Association members', 'got title 1') t.equal(tmpl.list.length, 4, 'got list') t.equal(tmpl.list[1], 'Liechtenstein', 'got list member') @@ -65,7 +65,7 @@ test('collapsible list', function (t) { |1=[[Dean Allison]] |2=[[Chris Charlton]] |3=[[David Christopherson]] |4=[[Wayne Marston]] |5=[[David Sweet]] }}` doc = wtf(str) - tmpl = doc.template() || {} + tmpl = doc.template().json() || {} t.equal(tmpl.title, 'List of MPs', 'got title 2') t.equal(tmpl.list.length, 5, 'got list2') t.equal(tmpl.list[1], 'Chris Charlton', 'got list member2') @@ -80,7 +80,7 @@ test('collapsible list', function (t) { test('unbulleted list', function (t) { const str = `{{unbulleted list|first item|second item|third item|}}` const doc = wtf(str) - const tmpl = doc.template() || {} + const tmpl = doc.template().json() || {} t.equal(tmpl.title, undefined, 'got title 3') t.equal(tmpl.list.length, 3, 'got list3') t.equal(tmpl.list[1], 'second item', 'got list member3') @@ -91,7 +91,7 @@ test('unbulleted list', function (t) { test('ordered list', function (t) { const str = `{{Ordered list|first item|second item|third item|}}` const doc = wtf(str) - const tmpl = doc.template() || {} + const tmpl = doc.template().json() || {} t.equal(tmpl.title, undefined, 'got title 4') t.equal(tmpl.list.length, 3, 'got list4') t.equal(tmpl.list[1], 'second item', 'got list member4') diff --git a/tests/integration/math.test.js b/tests/integration/math.test.js index 68fdddd7..4185e9c2 100644 --- a/tests/integration/math.test.js +++ b/tests/integration/math.test.js @@ -4,25 +4,25 @@ const wtf = require('../lib') test('math-simple', (t) => { let str = `hello {{math|big=1|1 + 2 {{=}} 3}} world` let doc = wtf(str) - let tmpl = doc.template() || {} + let tmpl = doc.template().json() || {} t.equal(tmpl.formula, '1 + 2 = 3', 'tmpl formula') t.equal(doc.text(), 'hello\n\n1 + 2 = 3\n\nworld', 'text output') str = `y^3` doc = wtf(str) - tmpl = doc.template() || {} + tmpl = doc.template().json() || {} t.equal(tmpl.formula, 'y^3', 'xml inline') t.equal(doc.text(), 'y^3', 'xml inline output') str = `sum_{i=0}^infty 2^{-i}` doc = wtf(str) - tmpl = doc.template() || {} + tmpl = doc.template().json() || {} t.ok(tmpl.formula.length > 10, 'tmpl formula2') t.equal(doc.text(), '', 'no text output2') str = ` ext{geometric series:}quad sum_{i=0}^infty 2^{-i}=2 ` doc = wtf(str) - tmpl = doc.template() || {} + tmpl = doc.template().json() || {} t.ok(tmpl.formula.length > 10, 'tmpl formula3') t.equal(doc.text(), '', 'no text output3') t.end() @@ -36,7 +36,7 @@ test('math-weirder', (t) => { end{cases} ` const doc = wtf(str) - const tmpl = doc.template() || {} + const tmpl = doc.template().json() || {} t.ok(tmpl.formula.length > 10, 'tmpl formula') t.equal(doc.text(), '', 'no text output') t.end() diff --git a/tests/integration/more-templates.test.js b/tests/integration/more-templates.test.js index 9da4a652..25f07628 100644 --- a/tests/integration/more-templates.test.js +++ b/tests/integration/more-templates.test.js @@ -4,14 +4,14 @@ const wtf = require('../lib') test('imdb', (t) => { let str = `{{IMDb title | 0426883 | Alpha Dog }}` let doc = wtf(str) - let obj = doc.template() + let obj = doc.template().json() t.equal(obj.template, 'imdb title', 'imdb') t.equal(obj.id, '0426883', 'id1') t.equal(obj.title, 'Alpha Dog', 'title') str = `{{IMDb title | id= 0426883 | title= Alpha Dog }}` doc = wtf(str) - obj = doc.template() + obj = doc.template().json() t.equal(obj.id, '0426883', 'id1') t.equal(obj.title, 'Alpha Dog', 'title') t.end() @@ -20,7 +20,7 @@ test('imdb', (t) => { test('taxon', (t) => { const str = `{{Taxon info|Felis|parent}}` const doc = wtf(str) - const obj = doc.template() + const obj = doc.template().json() t.equal(obj.taxon, 'Felis', 'taxon') t.end() }) @@ -28,7 +28,7 @@ test('taxon', (t) => { test('generic-list', (t) => { const str = `{{Portal bar|portal 1|portal 2}}` const doc = wtf(str) - const obj = doc.template() + const obj = doc.template().json() t.equal(obj.template, 'portal bar', 'name') t.equal(obj.list[0], 'portal 1', 'list1') t.equal(obj.list[1], 'portal 2', 'list2') @@ -39,7 +39,7 @@ test('generic-list', (t) => { test('redirect-list', (t) => { const str = `{{Redirect|City of Toronto|the municipal government|Municipal government of Toronto|the historical part of the city prior to the 1998 amalgamation|Old Toronto}}` const doc = wtf(str) - const obj = doc.template() + const obj = doc.template().json() t.equal(obj.template, 'redirect', 'name') t.equal(obj.redirect, 'City of Toronto', 'main') t.equal(obj.links[0].page, 'Municipal government of Toronto', 'list1') @@ -54,7 +54,9 @@ test('templates-in-templates', (t) => { t.equal(ref.template, 'citation', 'cite-book') t.equal(ref.url, 'https://books.google.com/books?id=abqjP-_KfzkC&pg=PA233', 'url') t.equal(ref.isbn, '978-0-19-974376-6', 'isbn') - const templates = wtf(str).templates() + const templates = wtf(str) + .templates() + .map((tmpl) => tmpl.json()) t.equal(templates[0].template, 'marriage', 'marriage1') t.equal(templates[1].template, 'marriage', 'marriage2') t.equal(templates[1].spouse, 'Elsa Löwenthal', 'marriage-1-name') @@ -95,7 +97,7 @@ test('three-layer-templates', (t) => { const str = `she married {{nowrap| {{nowrap| {{marriage|Johnny-boy}} }}}}` const doc = wtf(str) t.equal(doc.text(), 'she married Johnny-boy', '3-template inline') - t.equal(doc.template().template, 'marriage', '3-template result') + t.equal(doc.template().json().template, 'marriage', '3-template result') t.end() }) @@ -107,10 +109,10 @@ test('austria-hungary', (t) => { 'Austria-Hungary, often referred to as the Austro-Hungarian Empire or the Dual Monarchy', 'got-plaintext' ) - t.equal(doc.templates('for')[0].list[1], 'Austria–Hungary relations', 'nested emdash') + t.equal(doc.template('for').json().list[1], 'Austria–Hungary relations', 'nested emdash') t.equal(doc.links('budapest')[0].page(), 'Budapest', 'got Budapest link') t.equal( - doc.templates('short description')[0].description, + doc.templates('short description')[0].json().description, 'Constitutional monarchic union from 1867 to October 1918', 'short-description' ) diff --git a/tests/integration/start-end.test.js b/tests/integration/start-end.test.js index 85d3c7cc..8660faa6 100644 --- a/tests/integration/start-end.test.js +++ b/tests/integration/start-end.test.js @@ -56,7 +56,7 @@ test('mlb-start-end-fancy', function (t) { const doc = wtf(str) t.equal(doc.text(), 'hello world', 'text') t.equal(doc.templates().length, 1, 'got-template') - let rows = doc.template().data + let rows = doc.template().json().data t.equal(rows.length, 2, 'got-both rows') t.equal(rows[0].stadium, 'Fenway Park', 'got stadium') t.equal(rows[0].attendance, '39,059', 'got attendance') diff --git a/tests/integration/table.test.js b/tests/integration/table.test.js index 39d17556..a898485e 100644 --- a/tests/integration/table.test.js +++ b/tests/integration/table.test.js @@ -32,7 +32,7 @@ test('rnli stations', (t) => { const lifeboat = doc.section(2) t.equal(lifeboat._depth, 1, 'lifeboat-depth') - t.equal(lifeboat.template().list[0], 'Royal National Lifeboat Institution lifeboats', 'lifeboat-main') + t.equal(lifeboat.template().json().list[0], 'Royal National Lifeboat Institution lifeboats', 'lifeboat-main') t.equal(lifeboat.list().json().length, 3, 'lifeboat-list') t.equal(lifeboat.sentences().length, 3, 'lifeboat-sentences') t.deepEqual(lifeboat.images(), [], 'lifeboat-no-images') diff --git a/tests/integration/template.test.js b/tests/integration/template.test.js index 7eaed2fe..20d1c8ce 100644 --- a/tests/integration/template.test.js +++ b/tests/integration/template.test.js @@ -314,7 +314,7 @@ test('climate template', function (t) { | −3.1 | 2.1 | 61 |float=right |source= Environment Canada }}` - const data = wtf(str).template().data + const data = wtf(str).template().json().data t.equal(data.months[0].low, -6.7, 'jan low') t.equal(data.months[1].precip, 55, 'feb precip') t.end() diff --git a/tests/integration/templates-data.test.js b/tests/integration/templates-data.test.js index b7740165..fb9f04cf 100644 --- a/tests/integration/templates-data.test.js +++ b/tests/integration/templates-data.test.js @@ -28,7 +28,7 @@ test('external-links', function (t) { arr.forEach((a) => { const doc = wtf(a[1]) t.equal(doc.templates().length, 1, a[0] + ' count') - const tmpl = doc.template() || {} + const tmpl = doc.template().json() || {} t.equal(tmpl.template, a[0], a[1] + ' name') }) t.end() @@ -118,7 +118,7 @@ test('wikipedia-templates', function (t) { arr.forEach((a) => { const doc = wtf(a[1]) t.equal(doc.templates().length, 1, a[0] + ' count') - const tmpl = doc.template() || {} + const tmpl = doc.template().json() || {} t.equal(tmpl.template, a[0], a[0] + ' name') }) t.end() @@ -145,7 +145,7 @@ test('weather', function (t) { |Dec high C = -0.8 |source 1=[[Environment Canada]] }}` - let arr = wtf(str).template().byMonth['high c'] + let arr = wtf(str).template().json().byMonth['high c'] t.equal(arr.length, 12, 'got twelve months') t.equal(arr[1], 0.7, 'got february') @@ -154,7 +154,7 @@ test('weather', function (t) { | 18.4|19.9|22.3|23.7|27.5|31.3|36.8|36.5|32.5|27.5|22.2|18.7 | 5.9 |7.6 |9.4 |11.0|13.8|16.3|19.9|20.1|18.2|14.7|10.4|6.5 }}` - arr = wtf(str).template().byMonth['high c'] + arr = wtf(str).template().json().byMonth['high c'] t.equal(arr.length, 12, 'got twelve months concise') t.equal(arr[1], 19.9, 'got february') t.end() @@ -185,7 +185,7 @@ test('election', function (t) { world` const doc = wtf(str) t.equal(doc.templates().length, 1, 'found one template') - const tmpl = doc.template() || {} + const tmpl = doc.template().json() || {} t.equal(tmpl.template, 'election box', 'template name') t.equal(tmpl.candidates.length, 2, 'two candidates') t.end() @@ -193,7 +193,7 @@ test('election', function (t) { test('test-flexible-format', function (t) { let doc = wtf(`hello {{Hollywood Walk of Fame|Alan Alda}} world`) - let tmpl = doc.template() || {} + let tmpl = doc.template().json() || {} t.equal(tmpl.template, 'hollywood walk of fame', 'template1') t.equal(tmpl.name, 'Alan Alda', 'name1') t.equal(doc.text(), 'hello world', 'text1') @@ -201,7 +201,7 @@ test('test-flexible-format', function (t) { //other format doc = wtf(`hello {{Hollywood Walk of Fame|name = Alan Alda}} world`) - tmpl = doc.template() || {} + tmpl = doc.template().json() || {} t.equal(tmpl.template, 'hollywood walk of fame', 'template2') t.equal(tmpl.name, 'Alan Alda', 'name2') t.equal(doc.text(), 'hello world', 'text2') @@ -229,7 +229,7 @@ test('covid-1', function (t) { }} ` let doc = wtf(str) - let obj = doc.template() + let obj = doc.template().json() t.equal(obj.location, 'Savannah', 'location') t.equal(obj.data.length, 5, '5 rows') t.equal(obj.data[0].date, '2009-04-13', 'row[0]') @@ -266,7 +266,7 @@ test('playoff-brackets', function (t) { | RD2-score2 = '''218/8 (48.5 overs)''' }}` let doc = wtf(str) - let rounds = doc.template().rounds + let rounds = doc.template().json().rounds t.equal(rounds.length, 2, 'two rounds') let final = rounds[1][0] t.equal(final[0].score, '217 (49.4 overs)', 'got score') diff --git a/tests/integration/templates-inline.test.js b/tests/integration/templates-inline.test.js index 9255515a..ab323a03 100644 --- a/tests/integration/templates-inline.test.js +++ b/tests/integration/templates-inline.test.js @@ -183,6 +183,6 @@ test('tricky-based-on', function (t) { // t.equal(doc.links(0).text, 'Jurassic Park', 'found link text'); // t.equal(doc.text(), `''Jurassic Park'' by Michael Crichton`, 'parsed properly'); t.equal(doc.templates().length, 1, 'found one template') - t.equal(doc.template(0).template, 'based on', 'found template name') + t.equal(doc.template(0).json().template, 'based on', 'found template name') t.end() }) diff --git a/tests/integration/tracklist.test.js b/tests/integration/tracklist.test.js index e6a4b324..09508585 100644 --- a/tests/integration/tracklist.test.js +++ b/tests/integration/tracklist.test.js @@ -34,7 +34,7 @@ test('track-listing', (t) => { | length8 = 2:43 }}` const doc = wtf(str) - const track = doc.template() + const track = doc.template().json() t.equal(track.headline, 'Side one', 'track-headline') t.equal(track.title4, 'Ob-La-Di, Ob-La-Da', 'title4') t.end() @@ -70,7 +70,7 @@ test('track-listing', (t) => { | length6 = 4:41 }}` const doc = wtf(str) - const track = doc.templates('tracklist')[0] + const track = doc.templates('tracklist')[0].json() t.equal(track.total_length, '23:14', 'track-total_length') t.end() }) From a7898a8a08a3aecd3de0da92528ca7466f77ee31 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 11:16:06 -0400 Subject: [PATCH 110/117] fix wikitext plugin --- changelog.md | 3 +++ plugins/wikitext/README.md | 22 ++++++++++++++++++++-- plugins/wikitext/package.json | 2 +- plugins/wikitext/src/index.js | 22 ++++++++++++---------- plugins/wikitext/src/template.js | 15 +++++++++++++++ plugins/wikitext/tests/misc.test.js | 2 +- plugins/wikitext/tests/stress.test.js | 2 +- plugins/wikitext/tests/table.test.js | 4 ++-- scratch.js | 15 ++++++++------- 9 files changed, 63 insertions(+), 24 deletions(-) create mode 100644 plugins/wikitext/src/template.js diff --git a/changelog.md b/changelog.md index 566e3522..a6d40109 100644 --- a/changelog.md +++ b/changelog.md @@ -3,9 +3,12 @@ - **[breaking]** - plural methods like .sentences() always return arrays, even with a 'clue' param. --> + #### 9.0.0 + big cleanup of .fetch() (thanks wouter!), 'parse' param for templates. +- **[breaking]** - .templates() now returns Template objects, like other methods (call .json()) - **[breaking]** - change interpretation of reversed params in .fetch() method - **[breaking]** - change params to new templates added by plugins - **[breaking]** - move .random() and .category() to plugin-api diff --git a/plugins/wikitext/README.md b/plugins/wikitext/README.md index 927fa9e5..54d45639 100644 --- a/plugins/wikitext/README.md +++ b/plugins/wikitext/README.md @@ -26,10 +26,28 @@ const wtf = require('wtf_wikipedia') wtf.extend(require('wtf-plugin-wikitext')) let doc = wtf('hello [[world]]') -doc.wikitext() +doc.makeWikitext() // 'hello [[world]]' ``` -work-in-progress +all wtf_wikipedia models have a `.wikitext()` method that (tries to) return their original wikitext. +This method will try to \_generate\* the wikitext, as best it can. This is a lossy, and error-prone process, but may be useful for some applications. + +```js +let doc = wtf(`hello [[world]]. {{cool|fun=yes}}`) +let tmpl = doc.template() +console.log(tmpl.makeWikitext()) +// {{cool| fun = yes}} + +tmpl.data.more = 'yes' +console.log(tmpl.makeWikitext()) +// {{cool| fun = yes| more = yes}} +``` + +Concievably, this could be part of a edit-bot workflow, although there are many unresolved problems still, to doing so. + +work-in-progress! + +PRs welcome MIT diff --git a/plugins/wikitext/package.json b/plugins/wikitext/package.json index 7ae97cb0..55035ada 100644 --- a/plugins/wikitext/package.json +++ b/plugins/wikitext/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-wikitext", "description": "wikitext output plugin for wtf_wikipedia", - "version": "0.2.0", + "version": "1.0.0", "main": "./builds/wtf-plugin-wikitext.js", "unpkg": "./builds/wtf-plugin-wikitext.min.js", "module": "./builds/wtf-plugin-wikitext.mjs", diff --git a/plugins/wikitext/src/index.js b/plugins/wikitext/src/index.js index b986d8d3..761ab5ec 100644 --- a/plugins/wikitext/src/index.js +++ b/plugins/wikitext/src/index.js @@ -4,21 +4,23 @@ const paragraph = require('./03-paragraph') const sentence = require('./04-sentence') const link = require('./05-link') const image = require('./image') +const template = require('./template') const infobox = require('./infobox') const list = require('./list') const reference = require('./reference') const table = require('./table') const plugin = function (models) { - models.Doc.prototype.wikitext = doc - models.Section.prototype.wikitext = section - models.Paragraph.prototype.wikitext = paragraph - models.Sentence.prototype.wikitext = sentence - models.Link.prototype.wikitext = link - models.Image.prototype.wikitext = image - models.Infobox.prototype.wikitext = infobox - models.Table.prototype.wikitext = table - models.List.prototype.wikitext = list - models.Reference.prototype.wikitext = reference + models.Doc.prototype.makeWikitext = doc + models.Section.prototype.makeWikitext = section + models.Paragraph.prototype.makeWikitext = paragraph + models.Sentence.prototype.makeWikitext = sentence + models.Link.prototype.makeWikitext = link + models.Image.prototype.makeWikitext = image + models.Infobox.prototype.makeWikitext = infobox + models.Template.prototype.makeWikitext = template + models.Table.prototype.makeWikitext = table + models.List.prototype.makeWikitext = list + models.Reference.prototype.makeWikitext = reference } module.exports = plugin diff --git a/plugins/wikitext/src/template.js b/plugins/wikitext/src/template.js new file mode 100644 index 00000000..7f1d1693 --- /dev/null +++ b/plugins/wikitext/src/template.js @@ -0,0 +1,15 @@ +const toWiki = function () { + let text = `{{${this.data.template || ''}` + Object.keys(this.data).forEach((k) => { + if (k === 'template') { + return + } + let val = this.data[k] + if (val) { + text += `| ${k} = ${val || ''}` + } + }) + text += '}}\n' + return text +} +module.exports = toWiki diff --git a/plugins/wikitext/tests/misc.test.js b/plugins/wikitext/tests/misc.test.js index bec32021..3bab8ed2 100644 --- a/plugins/wikitext/tests/misc.test.js +++ b/plugins/wikitext/tests/misc.test.js @@ -24,7 +24,7 @@ test('basic-wikitext', (t) => { ] arr.forEach((str) => { let doc = wtf(str) - t.equal(tidy(doc.wikitext()), tidy(str), str) + t.equal(tidy(doc.makeWikitext()), tidy(str), str) }) t.end() }) diff --git a/plugins/wikitext/tests/stress.test.js b/plugins/wikitext/tests/stress.test.js index 5aa603b0..f67ff810 100644 --- a/plugins/wikitext/tests/stress.test.js +++ b/plugins/wikitext/tests/stress.test.js @@ -86,7 +86,7 @@ const pages = [ test('try all pages', (t) => { pages.forEach((page) => { let doc = from_file(page) - let wiki = doc.wikitext() + let wiki = doc.makeWikitext() t.ok(wiki && wiki.length > 5, page) }) t.end() diff --git a/plugins/wikitext/tests/table.test.js b/plugins/wikitext/tests/table.test.js index 5af36389..246f93cf 100644 --- a/plugins/wikitext/tests/table.test.js +++ b/plugins/wikitext/tests/table.test.js @@ -20,7 +20,7 @@ test('table-header', (t) => { | row 2, cell 3 |}` - const have = wtf(str).table().wikitext() + const have = wtf(str).table().makeWikitext() t.equal(tidy(have), tidy(str), 'with-header') @@ -39,7 +39,7 @@ test('no-header', (t) => { | row 2, cell 3 |}` - const have = wtf(str).table().wikitext() + const have = wtf(str).table().makeWikitext() t.equal(tidy(have), tidy(str), 'no-header') diff --git a/scratch.js b/scratch.js index b9c3345d..e6cad869 100644 --- a/scratch.js +++ b/scratch.js @@ -1,5 +1,5 @@ const wtf = require('./src/index') -wtf.extend(require('./plugins/wikis/wiktionary/plugin')) +wtf.extend(require('./plugins/wikitext/src')) // one // let str = `[[one]] and [[two]]` @@ -34,9 +34,10 @@ wtf.extend(require('./plugins/wikis/wiktionary/plugin')) // console.log(doc.infobox().wikitext()) // console.log(doc.template()) -let str = ` -File:YYZ Aerial 2.jpg -` -let doc = wtf(str, { domain: 'cool.com' }) -// let img = doc.image(0).url() -console.log(doc.section().json()) +let doc = wtf(`hello [[world]]. {{cool|fun=yes}}`) +let tmpl = doc.template() +console.log(tmpl.makeWikitext()) +// {{cool| fun = yes}} + +tmpl.data.more = 'yes' +console.log(tmpl.makeWikitext()) From 9c5145e3fb27749367b38597c95f1647254128a5 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 12:02:07 -0400 Subject: [PATCH 111/117] pass wikitext and text output to Template object, somehow --- README.md | 21 +++++++++---- plugins/classify/src/byTemplate/index.js | 2 +- plugins/i18n/tests/misc.test.js | 4 +-- plugins/person/src/isAlive/byTemplate.js | 3 +- plugins/summary/src/template/index.js | 8 ++--- plugins/wikis/wiktionary/templates.js | 1 - scratch.js | 10 +++--- src/01-document/isDisambig.js | 2 +- src/infobox/Infobox.js | 1 - src/template/Template.js | 20 ++++++++++-- src/template/index.js | 11 ++++++- src/template/parse/index.js | 39 ++++++++++++------------ src/template/sortOut.js | 19 ++++++------ tests/integration/v9.test.js | 8 +++++ 14 files changed, 92 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 2c6c413b..c35fc205 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ doc.json() // { categories: ['Oral communication', 'Vocal skills'], sections: [{ title: 'Techniques' }], ...} ``` -the default .json() output is *[really verbose](https://observablehq.com/@spencermountain/wtf-wikipedia-json)*, but you can cherry-pick data by poking-around like this: +the default .json() output is _[really verbose](https://observablehq.com/@spencermountain/wtf-wikipedia-json)_, but you can cherry-pick data by poking-around like this: ```js // get just the links: @@ -330,7 +330,9 @@ wtf(txt) ```javascript let txt = `Whistling is featured in a number of television shows, such as [[Lassie (1954 TV series)|''Lassie'']], and the title theme for ''[[The X-Files]]''.` -wtf(txt).links().map((l) => l.page()) +wtf(txt) + .links() + .map((l) => l.page()) // [ 'Lassie (1954 TV series)', 'The X-Files' ] ``` @@ -384,7 +386,7 @@ img.format() // jpg, png, .. ## Fetch -You can grab and parse articles from *[any wiki api](https://www.mediawiki.org/wiki/API:Main_page)*. +You can grab and parse articles from _[any wiki api](https://www.mediawiki.org/wiki/API:Main_page)_. This includes any language, any wiki-project, and most **3rd-party wikis**. ```js @@ -440,6 +442,7 @@ wtf.random().then((doc) => { //'Whistling' ['Oral communication', 'Vocal skills'] }) ``` + see [wtf-plugin-api](./plugins/api) ### Good practice: @@ -544,6 +547,11 @@ wtf - **.json()** - return some generic metadata for this image - **.text()** - does nothing +### Template + +- **.text()** - does this template generate any readable plaintext? +- **.json()** - get all the data for this template + ### Infobox - **.links()** - @@ -619,14 +627,15 @@ wtf.extend((models, templates) => { templates.asterisk = '*' }) ``` + you can determine which templates are understood to be 'infoboxes' with the 3rd parameter: + ```js wtf.extend((models, templates, infoboxes) => { - Object.assign(infoboxes, {person:true, place:true, thing:true}) + Object.assign(infoboxes, { person: true, place: true, thing: true }) }) ``` - @@ -655,7 +664,7 @@ some wikis will change the path of their API, from `./api.php` to elsewhere. If ```js wtf.fetch('2016-06-04_-_J.Fernandes_@_FIL,_Lisbon', { domain: 'www.mixesdb.com', path: 'db/api.php' }).then((doc) => { - console.log(doc.templates('player')) + console.log(doc.template('player').json()) }) ``` diff --git a/plugins/classify/src/byTemplate/index.js b/plugins/classify/src/byTemplate/index.js index e09511e4..9f2d160d 100644 --- a/plugins/classify/src/byTemplate/index.js +++ b/plugins/classify/src/byTemplate/index.js @@ -2,7 +2,7 @@ const { patterns, mappings } = require('../../schema/_data-fns') const byPattern = require('../_byPattern') const byTemplate = function (doc) { - let templates = doc.templates() + let templates = doc.templates().map((tmpl) => tmpl.json()) let found = [] for (let i = 0; i < templates.length; i++) { const title = templates[i].template diff --git a/plugins/i18n/tests/misc.test.js b/plugins/i18n/tests/misc.test.js index 1d8b022f..6514f86b 100644 --- a/plugins/i18n/tests/misc.test.js +++ b/plugins/i18n/tests/misc.test.js @@ -12,7 +12,7 @@ test('flag', (t) => { test('main', (t) => { let str = ` {{hlavný článok|USA}}` let doc = wtf(str) - let templates = doc.templates() + let templates = doc.templates().map((tmpl) => tmpl.json()) t.equal(templates.length, 1, 'one templates') t.equal(doc.text(), ``, 'main text') t.end() @@ -31,7 +31,7 @@ test('start date', (t) => { test('persondata', (t) => { let str = `{{personendaten|Full_name=c00l}}` let doc = wtf(str) - let templates = doc.templates() + let templates = doc.templates().map((tmpl) => tmpl.json()) t.equal(templates.length, 1, 'template') t.equal(templates[0].template, 'persondata', 'maps to original template') t.equal(templates[0].name, 'personendaten', 'has alias') diff --git a/plugins/person/src/isAlive/byTemplate.js b/plugins/person/src/isAlive/byTemplate.js index 64328a83..5a7cdaa2 100644 --- a/plugins/person/src/isAlive/byTemplate.js +++ b/plugins/person/src/isAlive/byTemplate.js @@ -32,7 +32,7 @@ const isDead = { memorial: true, } const byTemplate = function (doc) { - let templates = doc.templates() + let templates = doc.templates().map((tmpl) => tmpl.json()) for (let i = 0; i < templates.length; i++) { let title = templates[i].template || '' title = title.toLowerCase().trim() @@ -46,6 +46,7 @@ const byTemplate = function (doc) { // `{{WikiProject Biography|living=yes|activepol=yes}}` let bio = doc.template('WikiProject Biography') if (bio) { + bio = bio.json() //living blp BLP if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') { return true diff --git a/plugins/summary/src/template/index.js b/plugins/summary/src/template/index.js index 0fd4ee0d..deac33aa 100644 --- a/plugins/summary/src/template/index.js +++ b/plugins/summary/src/template/index.js @@ -1,10 +1,8 @@ -const isObject = function (obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]' -} const fromTemplate = function (doc) { let tmpl = doc.template('short description') - if (tmpl && isObject(tmpl) && tmpl.description) { - return tmpl.description + if (tmpl) { + let json = tmpl.json() || {} + return json.description || '' } return null } diff --git a/plugins/wikis/wiktionary/templates.js b/plugins/wikis/wiktionary/templates.js index 95f710bb..5ce65139 100644 --- a/plugins/wikis/wiktionary/templates.js +++ b/plugins/wikis/wiktionary/templates.js @@ -143,7 +143,6 @@ const templates = { pres: 'present', spos: 'single-possession', } - console.log(obj.list) let terms = obj.list.filter((k) => words[k]) terms = terms.map((str) => words[str]) return `${terms.join(', ')} of [[${obj.lemma}]]` diff --git a/scratch.js b/scratch.js index e6cad869..853e7389 100644 --- a/scratch.js +++ b/scratch.js @@ -34,10 +34,8 @@ wtf.extend(require('./plugins/wikitext/src')) // console.log(doc.infobox().wikitext()) // console.log(doc.template()) -let doc = wtf(`hello [[world]]. {{cool|fun=yes}}`) +let doc = wtf(`* {{USS|Barry}}, four US destroyers`) let tmpl = doc.template() -console.log(tmpl.makeWikitext()) -// {{cool| fun = yes}} - -tmpl.data.more = 'yes' -console.log(tmpl.makeWikitext()) +console.log(tmpl.wikitext()) +console.log(tmpl.text()) +// console.log(doc.text()) diff --git a/src/01-document/isDisambig.js b/src/01-document/isDisambig.js index 95630617..dfa600dd 100644 --- a/src/01-document/isDisambig.js +++ b/src/01-document/isDisambig.js @@ -29,7 +29,7 @@ const byText = function (s) { */ const isDisambig = function (doc) { // check for a {{disambig}} template - let templates = doc.templates() + let templates = doc.templates().map((tmpl) => tmpl.json()) let found = templates.find((obj) => { return alt_disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template) }) diff --git a/src/infobox/Infobox.js b/src/infobox/Infobox.js index 47609701..75a092f2 100644 --- a/src/infobox/Infobox.js +++ b/src/infobox/Infobox.js @@ -82,7 +82,6 @@ const methods = { return toJson(this, options) }, wikitext: function () { - console.log(this.data) return '' }, keyValue: function () { diff --git a/src/template/Template.js b/src/template/Template.js index e0bdfc44..7ac9e3ec 100644 --- a/src/template/Template.js +++ b/src/template/Template.js @@ -1,17 +1,31 @@ +const toText = require('../04-sentence').fromText + const methods = { text: function () { - return '' + let str = this._text || '' + return toText(str).text() }, json: function () { - return this.data + return this.data || {} + }, + wikitext: function () { + return this.wiki || '' }, } -const Template = function (data) { +const Template = function (data, text = '', wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data, }) + Object.defineProperty(this, '_text', { + enumerable: false, + value: text, + }) + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki, + }) } Object.keys(methods).forEach((k) => { diff --git a/src/template/index.js b/src/template/index.js index 11245574..99e56c8d 100644 --- a/src/template/index.js +++ b/src/template/index.js @@ -15,7 +15,16 @@ const allTemplates = function (wiki, doc) { obj.children.forEach((ch) => parseNested(ch, obj)) } //parse template into json, return replacement wikitext - obj.wiki = parseTemplate(obj, list, doc) + let [text, json] = parseTemplate(obj, doc) + obj.wiki = text + if (json) { + list.push({ + name: obj.name, + wiki: obj.body, + text: text, + json: json, + }) + } //remove the text from every parent const removeIt = function (node, body, out) { if (node.parent) { diff --git a/src/template/parse/index.js b/src/template/parse/index.js index f03cb6ad..f85d2296 100644 --- a/src/template/parse/index.js +++ b/src/template/parse/index.js @@ -7,25 +7,25 @@ const { isArray, isObject } = require('../../_lib/helpers') const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] //this gets all the {{template}} objects and decides how to parse them -const parseTemplate = function (tmpl, list, doc) { +const parseTemplate = function (tmpl, doc) { let name = tmpl.name // dont bother with some junk templates if (ignore.hasOwnProperty(name) === true) { - return '' + return [''] } //{{infobox settlement...}} if (infobox.isInfobox(name) === true) { let obj = toJSON(tmpl.body, [], 'raw') - list.push(infobox.format(obj)) - return '' + // list.push(infobox.format(obj)) + return ['', infobox.format(obj)] } //cite book, cite arxiv... if (/^cite [a-z]/.test(name) === true) { let obj = toJSON(tmpl.body) obj.type = obj.template obj.template = 'citation' - list.push(obj) - return '' + // list.push(obj) + return ['', obj] } // ok, here we go! //parse some known templates @@ -34,41 +34,40 @@ const parseTemplate = function (tmpl, list, doc) { if (typeof templates[name] === 'number') { let obj = toJSON(tmpl.body, nums) let key = String(templates[name]) - return obj[key] || '' + return [obj[key] || ''] } //handle string-syntax if (typeof templates[name] === 'string') { - return templates[name] + return [templates[name]] } //handle array sytax if (isArray(templates[name]) === true) { let obj = toJSON(tmpl.body, templates[name]) - list.push(obj) - return '' + // list.push(obj) + return ['', obj] } //handle object sytax if (isObject(templates[name]) === true) { let obj = toJSON(tmpl.body, templates[name].props) - list.push(obj) - return obj[templates[name].out] + // list.push(obj) + return [obj[templates[name].out], obj] } //handle function syntax if (typeof templates[name] === 'function') { // let json = toJSON(tmpl.body) //(tmpl, list, alias, doc) - return templates[name](tmpl.body, list, toJSON, null, doc) + let arr = [] + let txt = templates[name](tmpl.body, arr, toJSON, null, doc) + return [txt, arr[0]] } } - // if (doc) { - // doc._missing_templates[name] = doc._missing_templates[name] || 0 - // doc._missing_templates[name] += 1 - // } //an unknown template with data, so just keep it. let json = toJSON(tmpl.body) - if (list && Object.keys(json).length > 0) { - list.push(json) + if (Object.keys(json).length === 0) { + // list.push(json) + json = null } //..then remove it - return '' + return ['', json] } module.exports = parseTemplate diff --git a/src/template/sortOut.js b/src/template/sortOut.js index 36dc9ceb..033a5b05 100644 --- a/src/template/sortOut.js +++ b/src/template/sortOut.js @@ -11,29 +11,30 @@ const referenceTypes = { } // split Infoboxes from templates and references -const sortOut = function (keep, domain) { +const sortOut = function (list, domain) { let res = { infoboxes: [], templates: [], references: [], } //remove references and infoboxes from our list - keep.forEach((obj) => { - let kind = obj.template || obj.type || obj.name + list.forEach((obj) => { + let json = obj.json + let kind = json.template || json.type || json.name // is it a Reference? if (referenceTypes[kind] === true || isCitation.test(kind) === true) { - res.references.push(new Reference(obj)) + res.references.push(new Reference(json)) return } // is it an Infobox? - if (obj.template === 'infobox' && obj.subbox !== 'yes') { - obj.domain = domain //infoboxes need this for images, i guess - obj.data = obj.data || {} //validate it a little - res.infoboxes.push(new Infobox(obj)) + if (json.template === 'infobox' && obj.subbox !== 'yes') { + json.domain = domain //infoboxes need this for images, i guess + json.data = json.data || {} //validate it a little + res.infoboxes.push(new Infobox(json)) return } // otherwise, it's just a template - res.templates.push(new Template(obj)) + res.templates.push(new Template(json, obj.text, obj.wiki)) }) return res } diff --git a/tests/integration/v9.test.js b/tests/integration/v9.test.js index 066334be..b4952f34 100644 --- a/tests/integration/v9.test.js +++ b/tests/integration/v9.test.js @@ -55,3 +55,11 @@ test('table-get', (t) => { t.equal(doc.table().wikitext(), str, 'table-wikitext') t.end() }) + +test('template methods', (t) => { + let doc = wtf(`* {{USS|Barry}}, four US destroyers`) + let tmpl = doc.template() + t.equal(tmpl.wikitext(), '{{USS|Barry}}', 'tmpl wikitext') + t.equal(tmpl.text(), `USS Barry`, 'tmpl text') + t.end() +}) From 02274113c0603e600abeef5467d95df2ed7cf87c Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 12:21:06 -0400 Subject: [PATCH 112/117] all tests passing --- plugins/wikitext/src/01-doc.js | 6 +++--- plugins/wikitext/src/02-section.js | 14 ++++++++------ plugins/wikitext/src/03-paragraph.js | 6 +++--- plugins/wikitext/src/04-sentence.js | 2 +- plugins/wikitext/tests/misc.test.js | 3 ++- scratch.js | 29 ++++++++++------------------ src/infobox/Infobox.js | 8 ++++++-- src/reference/Reference.js | 10 ++++++++-- src/reference/index.js | 14 +++++++------- src/template/sortOut.js | 6 +++--- tests/integration/v9.test.js | 8 ++++++++ 11 files changed, 59 insertions(+), 47 deletions(-) diff --git a/plugins/wikitext/src/01-doc.js b/plugins/wikitext/src/01-doc.js index a3e90410..0bc0dcc2 100644 --- a/plugins/wikitext/src/01-doc.js +++ b/plugins/wikitext/src/01-doc.js @@ -1,6 +1,7 @@ const defaults = { images: true, tables: true, + templates: true, infoboxes: true, categories: true, lists: true, @@ -20,15 +21,14 @@ const toWiki = function (options) { //render infoboxes (up at the top) if (options.infoboxes === true) { text += this.infoboxes() - .map((i) => i.wikitext(options)) + .map((i) => i.makeWikitext(options)) .join('\n') } //render each section if (options.sections === true || options.paragraphs === true || options.sentences === true) { let sections = this.sections() - // sections = sections.filter((s) => s.title() !== 'References') - text += sections.map((s) => s.wikitext(options)).join('\n') + text += sections.map((s) => s.makeWikitext(options)).join('\n') } // add categories on the bottom diff --git a/plugins/wikitext/src/02-section.js b/plugins/wikitext/src/02-section.js index 0edb738b..1a94a4ad 100644 --- a/plugins/wikitext/src/02-section.js +++ b/plugins/wikitext/src/02-section.js @@ -20,14 +20,16 @@ const toWiki = function (options) { text += `\n${side} ${this.title()} ${side}\n` } // render some templates? - this.templates().forEach((tmpl) => { - text += doTemplate(tmpl) + '\n' - }) + if (options.templates === true) { + this.templates().forEach((tmpl) => { + text += doTemplate(tmpl.json()) + '\n' + }) + } //make a table if (options.tables === true) { text += this.tables() - .map((t) => t.wikitext(options)) + .map((t) => t.makeWikitext(options)) .join('\n') } @@ -39,14 +41,14 @@ const toWiki = function (options) { } text += this.paragraphs() .map((p) => { - return p.wikitext(options) + return p.makeWikitext(options) }) .join('\n') // render references // these will be out of place this.references().forEach((ref) => { - text += ref.wikitext(options) + '\n' + text += ref.makeWikitext(options) + '\n' }) return text diff --git a/plugins/wikitext/src/03-paragraph.js b/plugins/wikitext/src/03-paragraph.js index 001e4a05..9672d67e 100644 --- a/plugins/wikitext/src/03-paragraph.js +++ b/plugins/wikitext/src/03-paragraph.js @@ -7,16 +7,16 @@ const toWiki = function (options) { // do images this.images().forEach((img) => { - text += img.wikitext() + text += img.makeWikitext() }) // do lists this.lists().forEach((list) => { - text += list.wikitext() + text += list.makeWikitext() }) // render sentences text += this.sentences() .map((s) => { - return s.wikitext(options) + return s.makeWikitext(options) }) .join('\n') return text diff --git a/plugins/wikitext/src/04-sentence.js b/plugins/wikitext/src/04-sentence.js index 550ed63a..7c5d9dbc 100644 --- a/plugins/wikitext/src/04-sentence.js +++ b/plugins/wikitext/src/04-sentence.js @@ -11,7 +11,7 @@ const toWiki = function (options) { if (options.links === true) { this.links().forEach((link) => { let str = link.text() || link.page() - let tag = link.wikitext() + let tag = link.makeWikitext() text = smartReplace(text, str, tag) }) } diff --git a/plugins/wikitext/tests/misc.test.js b/plugins/wikitext/tests/misc.test.js index 3bab8ed2..3cbff7d6 100644 --- a/plugins/wikitext/tests/misc.test.js +++ b/plugins/wikitext/tests/misc.test.js @@ -24,7 +24,8 @@ test('basic-wikitext', (t) => { ] arr.forEach((str) => { let doc = wtf(str) - t.equal(tidy(doc.makeWikitext()), tidy(str), str) + let have = doc.makeWikitext() + t.equal(tidy(have), tidy(str), str) }) t.end() }) diff --git a/scratch.js b/scratch.js index 853e7389..621824fd 100644 --- a/scratch.js +++ b/scratch.js @@ -14,28 +14,19 @@ wtf.extend(require('./plugins/wikitext/src')) // console.log(doc.sentence(133).json()) // }) -// let str = `{{Infobox animanga/Novel -// | 著者 = [[白米良]] -// | イラスト = [[たかやKi]] -// | 出版社 = [[オーバーラップ (企業)|オーバーラップ]] -// | 掲載誌 = [[小説家になろう]] -// | レーベル = [[オーバーラップ文庫]] -// | 開始号 = 2013年11月7日 -// | 終了号 = -// | 開始日 = 2015年6月24日 -// | 終了日 = -// | 巻数 = 既刊16巻(本編11巻+外伝4巻+短編集1巻)
(2020年7月現在) -// | インターネット = 1 -// }}` +let str = `{{foobar | fun = true | key = val}}` // str = `{{hello|world}} +// str = `Emery is a vegetarian,{{cite web|title=The princess of pot|url=http://thewalrus.ca/the-princess-of-pot/}}` + // ` -// let doc = wtf(str) +let doc = wtf(str) // console.log(doc.links(0).map((t) => t.text())) -// console.log(doc.infobox().wikitext()) +// console.log(doc.reference().json()) +console.log(doc.makeWikitext()) // console.log(doc.template()) -let doc = wtf(`* {{USS|Barry}}, four US destroyers`) -let tmpl = doc.template() -console.log(tmpl.wikitext()) -console.log(tmpl.text()) +// let doc = wtf(`* {{USS|Barry}}, four US destroyers`) +// let tmpl = doc.template() +// console.log(tmpl.wikitext()) +// console.log(tmpl.text()) // console.log(doc.text()) diff --git a/src/infobox/Infobox.js b/src/infobox/Infobox.js index 75a092f2..fd21dc12 100644 --- a/src/infobox/Infobox.js +++ b/src/infobox/Infobox.js @@ -10,13 +10,17 @@ const normalize = (str = '') => { } //a formal key-value data table about a topic -const Infobox = function (obj) { +const Infobox = function (obj, wiki) { this._type = obj.type this.domain = obj.domain Object.defineProperty(this, 'data', { enumerable: false, value: obj.data, }) + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki, + }) } const methods = { @@ -82,7 +86,7 @@ const methods = { return toJson(this, options) }, wikitext: function () { - return '' + return this.wiki || '' }, keyValue: function () { return Object.keys(this.data).reduce((h, k) => { diff --git a/src/reference/Reference.js b/src/reference/Reference.js index 01c2a3f4..fef87b59 100644 --- a/src/reference/Reference.js +++ b/src/reference/Reference.js @@ -1,11 +1,15 @@ const encode = require('../_lib/encode') //also called 'citations' -const Reference = function (data) { +const Reference = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data, }) + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki, + }) } const methods = { @@ -32,7 +36,9 @@ const methods = { text: function () { return '' //nah, skip these. }, - + wikitext: function () { + return this.wiki || '' + }, json: function (options = {}) { let json = this.data || {} //encode them, for mongodb diff --git a/src/reference/index.js b/src/reference/index.js index 748aee30..ab5d4ce2 100644 --- a/src/reference/index.js +++ b/src/reference/index.js @@ -31,15 +31,15 @@ const parseRefs = function (section) { let references = [] let wiki = section._wiki - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (_a, tmpl) { + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl) if (obj) { - references.push(obj) + references.push({ json: obj, wiki: all }) } wiki = wiki.replace(tmpl, '') } else { - references.push(parseInline(tmpl)) + references.push({ json: parseInline(tmpl), wiki: all }) } return ' ' }) @@ -48,22 +48,22 @@ const parseRefs = function (section) { wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' ') // - wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (a, tmpl) { + wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl) if (obj) { - references.push(obj) + references.push({ json: obj, wiki: tmpl }) } wiki = wiki.replace(tmpl, '') } else { - references.push(parseInline(tmpl)) + references.push({ json: parseInline(tmpl), wiki: all }) } return ' ' }) //now that we're done with xml, do a generic + dangerous xml-tag removal wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' ') // - section._references = references.map((r) => new Reference(r)) + section._references = references.map((obj) => new Reference(obj.json, obj.wiki)) section._wiki = wiki } diff --git a/src/template/sortOut.js b/src/template/sortOut.js index 033a5b05..99a86f38 100644 --- a/src/template/sortOut.js +++ b/src/template/sortOut.js @@ -23,14 +23,14 @@ const sortOut = function (list, domain) { let kind = json.template || json.type || json.name // is it a Reference? if (referenceTypes[kind] === true || isCitation.test(kind) === true) { - res.references.push(new Reference(json)) + res.references.push(new Reference(json, obj.wiki)) return } // is it an Infobox? - if (json.template === 'infobox' && obj.subbox !== 'yes') { + if (json.template === 'infobox' && json.subbox !== 'yes') { json.domain = domain //infoboxes need this for images, i guess json.data = json.data || {} //validate it a little - res.infoboxes.push(new Infobox(json)) + res.infoboxes.push(new Infobox(json, obj.wiki)) return } // otherwise, it's just a template diff --git a/tests/integration/v9.test.js b/tests/integration/v9.test.js index b4952f34..509feb60 100644 --- a/tests/integration/v9.test.js +++ b/tests/integration/v9.test.js @@ -63,3 +63,11 @@ test('template methods', (t) => { t.equal(tmpl.text(), `USS Barry`, 'tmpl text') t.end() }) +test('reference method', (t) => { + let str = `{{cite web|title=The princess of pot|url=http://thewalrus.ca/the-princess-of-pot/}}` + let doc = wtf(`the end.` + str) + let tmpl = doc.reference() + t.equal(tmpl.wikitext(), str, 'ref wikitext') + t.equal(tmpl.text(), ``, 'ref text') + t.end() +}) From ae4f7d6eca1f6908070c5f2ca65f750e36632897 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 12:53:42 -0400 Subject: [PATCH 113/117] cleanup plural singular clue params --- changelog.md | 1 + plugins/{output => }/html/README.md | 0 .../html/builds/wtf-plugin-html.js | 0 .../html/builds/wtf-plugin-html.js.map | 0 .../html/builds/wtf-plugin-html.min.js | 0 .../html/builds/wtf-plugin-html.mjs | 0 plugins/{output => }/html/changelog.md | 0 plugins/{output => }/html/package-lock.json | 0 plugins/{output => }/html/package.json | 0 plugins/{output => }/html/rollup.config.js | 0 plugins/{output => }/html/src/01-doc.js | 0 plugins/{output => }/html/src/02-section.js | 0 plugins/{output => }/html/src/03-paragraph.js | 0 plugins/{output => }/html/src/04-sentence.js | 0 plugins/{output => }/html/src/05-link.js | 0 .../html/src/_lib/smartReplace.js | 0 plugins/{output => }/html/src/image.js | 0 plugins/{output => }/html/src/index.js | 0 plugins/{output => }/html/src/infobox.js | 0 plugins/{output => }/html/src/list.js | 0 plugins/{output => }/html/src/reference.js | 0 plugins/{output => }/html/src/table.js | 0 plugins/{output => }/html/tests/_lib.js | 4 +- plugins/{output => }/html/tests/html.test.js | 0 .../{output => }/html/tests/interwiki.test.js | 0 .../{output => }/html/tests/stress.test.js | 0 plugins/{output => }/html/tests/table.test.js | 0 plugins/{output => }/latex/README.md | 0 .../latex/builds/wtf-plugin-latex.js | 0 .../latex/builds/wtf-plugin-latex.js.map | 0 .../latex/builds/wtf-plugin-latex.min.js | 0 .../latex/builds/wtf-plugin-latex.mjs | 0 plugins/{output => }/latex/package-lock.json | 0 plugins/{output => }/latex/package.json | 0 plugins/{output => }/latex/rollup.config.js | 0 plugins/{output => }/latex/src/01-doc.js | 0 plugins/{output => }/latex/src/02-section.js | 0 .../{output => }/latex/src/03-paragraph.js | 0 plugins/{output => }/latex/src/04-sentence.js | 0 plugins/{output => }/latex/src/05-link.js | 0 .../latex/src/_lib/smartReplace.js | 0 plugins/{output => }/latex/src/image.js | 0 plugins/{output => }/latex/src/index.js | 0 plugins/{output => }/latex/src/infobox.js | 0 plugins/{output => }/latex/src/list.js | 0 plugins/{output => }/latex/src/reference.js | 0 plugins/{output => }/latex/src/table.js | 0 plugins/{output => }/latex/tests/_lib.js | 4 +- .../{output => }/latex/tests/latex.test.js | 0 .../{output => }/latex/tests/stress.test.js | 0 plugins/{output => }/markdown/README.md | 0 .../markdown/builds/wtf-plugin-markdown.js | 0 .../builds/wtf-plugin-markdown.js.map | 0 .../builds/wtf-plugin-markdown.min.js | 0 .../markdown/builds/wtf-plugin-markdown.mjs | 0 .../{output => }/markdown/package-lock.json | 0 plugins/{output => }/markdown/package.json | 0 .../{output => }/markdown/rollup.config.js | 0 plugins/{output => }/markdown/src/01-doc.js | 0 .../{output => }/markdown/src/02-section.js | 0 .../{output => }/markdown/src/03-paragraph.js | 0 .../{output => }/markdown/src/04-sentence.js | 0 plugins/{output => }/markdown/src/05-link.js | 0 plugins/{output => }/markdown/src/_lib/pad.js | 0 .../markdown/src/_lib/smartReplace.js | 0 plugins/{output => }/markdown/src/image.js | 0 plugins/{output => }/markdown/src/index.js | 0 plugins/{output => }/markdown/src/infobox.js | 0 plugins/{output => }/markdown/src/list.js | 0 .../{output => }/markdown/src/reference.js | 0 plugins/{output => }/markdown/src/table.js | 0 plugins/{output => }/markdown/tests/_lib.js | 4 +- .../markdown/tests/markdown.test.js | 0 .../markdown/tests/stress.test.js | 0 .../{output => }/markdown/tests/table.test.js | 0 scratch.js | 121 ++++++++++++++---- src/01-document/Document.js | 32 +++-- src/01-document/_sectionMap.js | 9 +- tests/integration/infobox.test.js | 2 +- tests/integration/json-full.test.js | 2 +- tests/unit/Document.test.js | 6 +- 81 files changed, 137 insertions(+), 48 deletions(-) rename plugins/{output => }/html/README.md (100%) rename plugins/{output => }/html/builds/wtf-plugin-html.js (100%) rename plugins/{output => }/html/builds/wtf-plugin-html.js.map (100%) rename plugins/{output => }/html/builds/wtf-plugin-html.min.js (100%) rename plugins/{output => }/html/builds/wtf-plugin-html.mjs (100%) rename plugins/{output => }/html/changelog.md (100%) rename plugins/{output => }/html/package-lock.json (100%) rename plugins/{output => }/html/package.json (100%) rename plugins/{output => }/html/rollup.config.js (100%) rename plugins/{output => }/html/src/01-doc.js (100%) rename plugins/{output => }/html/src/02-section.js (100%) rename plugins/{output => }/html/src/03-paragraph.js (100%) rename plugins/{output => }/html/src/04-sentence.js (100%) rename plugins/{output => }/html/src/05-link.js (100%) rename plugins/{output => }/html/src/_lib/smartReplace.js (100%) rename plugins/{output => }/html/src/image.js (100%) rename plugins/{output => }/html/src/index.js (100%) rename plugins/{output => }/html/src/infobox.js (100%) rename plugins/{output => }/html/src/list.js (100%) rename plugins/{output => }/html/src/reference.js (100%) rename plugins/{output => }/html/src/table.js (100%) rename plugins/{output => }/html/tests/_lib.js (77%) rename plugins/{output => }/html/tests/html.test.js (100%) rename plugins/{output => }/html/tests/interwiki.test.js (100%) rename plugins/{output => }/html/tests/stress.test.js (100%) rename plugins/{output => }/html/tests/table.test.js (100%) rename plugins/{output => }/latex/README.md (100%) rename plugins/{output => }/latex/builds/wtf-plugin-latex.js (100%) rename plugins/{output => }/latex/builds/wtf-plugin-latex.js.map (100%) rename plugins/{output => }/latex/builds/wtf-plugin-latex.min.js (100%) rename plugins/{output => }/latex/builds/wtf-plugin-latex.mjs (100%) rename plugins/{output => }/latex/package-lock.json (100%) rename plugins/{output => }/latex/package.json (100%) rename plugins/{output => }/latex/rollup.config.js (100%) rename plugins/{output => }/latex/src/01-doc.js (100%) rename plugins/{output => }/latex/src/02-section.js (100%) rename plugins/{output => }/latex/src/03-paragraph.js (100%) rename plugins/{output => }/latex/src/04-sentence.js (100%) rename plugins/{output => }/latex/src/05-link.js (100%) rename plugins/{output => }/latex/src/_lib/smartReplace.js (100%) rename plugins/{output => }/latex/src/image.js (100%) rename plugins/{output => }/latex/src/index.js (100%) rename plugins/{output => }/latex/src/infobox.js (100%) rename plugins/{output => }/latex/src/list.js (100%) rename plugins/{output => }/latex/src/reference.js (100%) rename plugins/{output => }/latex/src/table.js (100%) rename plugins/{output => }/latex/tests/_lib.js (77%) rename plugins/{output => }/latex/tests/latex.test.js (100%) rename plugins/{output => }/latex/tests/stress.test.js (100%) rename plugins/{output => }/markdown/README.md (100%) rename plugins/{output => }/markdown/builds/wtf-plugin-markdown.js (100%) rename plugins/{output => }/markdown/builds/wtf-plugin-markdown.js.map (100%) rename plugins/{output => }/markdown/builds/wtf-plugin-markdown.min.js (100%) rename plugins/{output => }/markdown/builds/wtf-plugin-markdown.mjs (100%) rename plugins/{output => }/markdown/package-lock.json (100%) rename plugins/{output => }/markdown/package.json (100%) rename plugins/{output => }/markdown/rollup.config.js (100%) rename plugins/{output => }/markdown/src/01-doc.js (100%) rename plugins/{output => }/markdown/src/02-section.js (100%) rename plugins/{output => }/markdown/src/03-paragraph.js (100%) rename plugins/{output => }/markdown/src/04-sentence.js (100%) rename plugins/{output => }/markdown/src/05-link.js (100%) rename plugins/{output => }/markdown/src/_lib/pad.js (100%) rename plugins/{output => }/markdown/src/_lib/smartReplace.js (100%) rename plugins/{output => }/markdown/src/image.js (100%) rename plugins/{output => }/markdown/src/index.js (100%) rename plugins/{output => }/markdown/src/infobox.js (100%) rename plugins/{output => }/markdown/src/list.js (100%) rename plugins/{output => }/markdown/src/reference.js (100%) rename plugins/{output => }/markdown/src/table.js (100%) rename plugins/{output => }/markdown/tests/_lib.js (77%) rename plugins/{output => }/markdown/tests/markdown.test.js (100%) rename plugins/{output => }/markdown/tests/stress.test.js (100%) rename plugins/{output => }/markdown/tests/table.test.js (100%) diff --git a/changelog.md b/changelog.md index a6d40109..44653d84 100644 --- a/changelog.md +++ b/changelog.md @@ -12,6 +12,7 @@ big cleanup of .fetch() (thanks wouter!), 'parse' param for templates. - **[breaking]** - change interpretation of reversed params in .fetch() method - **[breaking]** - change params to new templates added by plugins - **[breaking]** - move .random() and .category() to plugin-api +- **[breaking]** - always return an array for plural methods, even with number param, like .links(3) - **[possibly-breaking]** - cleanup null|undefined responses from methods - **[possibly-breaking]** - remove .dates() method (prev deprecated) - **[possibly-breaking]** - require node 10, ie > 11 diff --git a/plugins/output/html/README.md b/plugins/html/README.md similarity index 100% rename from plugins/output/html/README.md rename to plugins/html/README.md diff --git a/plugins/output/html/builds/wtf-plugin-html.js b/plugins/html/builds/wtf-plugin-html.js similarity index 100% rename from plugins/output/html/builds/wtf-plugin-html.js rename to plugins/html/builds/wtf-plugin-html.js diff --git a/plugins/output/html/builds/wtf-plugin-html.js.map b/plugins/html/builds/wtf-plugin-html.js.map similarity index 100% rename from plugins/output/html/builds/wtf-plugin-html.js.map rename to plugins/html/builds/wtf-plugin-html.js.map diff --git a/plugins/output/html/builds/wtf-plugin-html.min.js b/plugins/html/builds/wtf-plugin-html.min.js similarity index 100% rename from plugins/output/html/builds/wtf-plugin-html.min.js rename to plugins/html/builds/wtf-plugin-html.min.js diff --git a/plugins/output/html/builds/wtf-plugin-html.mjs b/plugins/html/builds/wtf-plugin-html.mjs similarity index 100% rename from plugins/output/html/builds/wtf-plugin-html.mjs rename to plugins/html/builds/wtf-plugin-html.mjs diff --git a/plugins/output/html/changelog.md b/plugins/html/changelog.md similarity index 100% rename from plugins/output/html/changelog.md rename to plugins/html/changelog.md diff --git a/plugins/output/html/package-lock.json b/plugins/html/package-lock.json similarity index 100% rename from plugins/output/html/package-lock.json rename to plugins/html/package-lock.json diff --git a/plugins/output/html/package.json b/plugins/html/package.json similarity index 100% rename from plugins/output/html/package.json rename to plugins/html/package.json diff --git a/plugins/output/html/rollup.config.js b/plugins/html/rollup.config.js similarity index 100% rename from plugins/output/html/rollup.config.js rename to plugins/html/rollup.config.js diff --git a/plugins/output/html/src/01-doc.js b/plugins/html/src/01-doc.js similarity index 100% rename from plugins/output/html/src/01-doc.js rename to plugins/html/src/01-doc.js diff --git a/plugins/output/html/src/02-section.js b/plugins/html/src/02-section.js similarity index 100% rename from plugins/output/html/src/02-section.js rename to plugins/html/src/02-section.js diff --git a/plugins/output/html/src/03-paragraph.js b/plugins/html/src/03-paragraph.js similarity index 100% rename from plugins/output/html/src/03-paragraph.js rename to plugins/html/src/03-paragraph.js diff --git a/plugins/output/html/src/04-sentence.js b/plugins/html/src/04-sentence.js similarity index 100% rename from plugins/output/html/src/04-sentence.js rename to plugins/html/src/04-sentence.js diff --git a/plugins/output/html/src/05-link.js b/plugins/html/src/05-link.js similarity index 100% rename from plugins/output/html/src/05-link.js rename to plugins/html/src/05-link.js diff --git a/plugins/output/html/src/_lib/smartReplace.js b/plugins/html/src/_lib/smartReplace.js similarity index 100% rename from plugins/output/html/src/_lib/smartReplace.js rename to plugins/html/src/_lib/smartReplace.js diff --git a/plugins/output/html/src/image.js b/plugins/html/src/image.js similarity index 100% rename from plugins/output/html/src/image.js rename to plugins/html/src/image.js diff --git a/plugins/output/html/src/index.js b/plugins/html/src/index.js similarity index 100% rename from plugins/output/html/src/index.js rename to plugins/html/src/index.js diff --git a/plugins/output/html/src/infobox.js b/plugins/html/src/infobox.js similarity index 100% rename from plugins/output/html/src/infobox.js rename to plugins/html/src/infobox.js diff --git a/plugins/output/html/src/list.js b/plugins/html/src/list.js similarity index 100% rename from plugins/output/html/src/list.js rename to plugins/html/src/list.js diff --git a/plugins/output/html/src/reference.js b/plugins/html/src/reference.js similarity index 100% rename from plugins/output/html/src/reference.js rename to plugins/html/src/reference.js diff --git a/plugins/output/html/src/table.js b/plugins/html/src/table.js similarity index 100% rename from plugins/output/html/src/table.js rename to plugins/html/src/table.js diff --git a/plugins/output/html/tests/_lib.js b/plugins/html/tests/_lib.js similarity index 77% rename from plugins/output/html/tests/_lib.js rename to plugins/html/tests/_lib.js index 509488ec..955cc178 100644 --- a/plugins/output/html/tests/_lib.js +++ b/plugins/html/tests/_lib.js @@ -2,10 +2,10 @@ if (typeof process !== undefined && typeof module !== undefined) { let wtf if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') - wtf = require('../../../../types') + wtf = require('../../../types') wtf.extend(require(`..`)) } else { - wtf = require('../../../../src') + wtf = require('../../../src') wtf.extend(require(`../src`)) } diff --git a/plugins/output/html/tests/html.test.js b/plugins/html/tests/html.test.js similarity index 100% rename from plugins/output/html/tests/html.test.js rename to plugins/html/tests/html.test.js diff --git a/plugins/output/html/tests/interwiki.test.js b/plugins/html/tests/interwiki.test.js similarity index 100% rename from plugins/output/html/tests/interwiki.test.js rename to plugins/html/tests/interwiki.test.js diff --git a/plugins/output/html/tests/stress.test.js b/plugins/html/tests/stress.test.js similarity index 100% rename from plugins/output/html/tests/stress.test.js rename to plugins/html/tests/stress.test.js diff --git a/plugins/output/html/tests/table.test.js b/plugins/html/tests/table.test.js similarity index 100% rename from plugins/output/html/tests/table.test.js rename to plugins/html/tests/table.test.js diff --git a/plugins/output/latex/README.md b/plugins/latex/README.md similarity index 100% rename from plugins/output/latex/README.md rename to plugins/latex/README.md diff --git a/plugins/output/latex/builds/wtf-plugin-latex.js b/plugins/latex/builds/wtf-plugin-latex.js similarity index 100% rename from plugins/output/latex/builds/wtf-plugin-latex.js rename to plugins/latex/builds/wtf-plugin-latex.js diff --git a/plugins/output/latex/builds/wtf-plugin-latex.js.map b/plugins/latex/builds/wtf-plugin-latex.js.map similarity index 100% rename from plugins/output/latex/builds/wtf-plugin-latex.js.map rename to plugins/latex/builds/wtf-plugin-latex.js.map diff --git a/plugins/output/latex/builds/wtf-plugin-latex.min.js b/plugins/latex/builds/wtf-plugin-latex.min.js similarity index 100% rename from plugins/output/latex/builds/wtf-plugin-latex.min.js rename to plugins/latex/builds/wtf-plugin-latex.min.js diff --git a/plugins/output/latex/builds/wtf-plugin-latex.mjs b/plugins/latex/builds/wtf-plugin-latex.mjs similarity index 100% rename from plugins/output/latex/builds/wtf-plugin-latex.mjs rename to plugins/latex/builds/wtf-plugin-latex.mjs diff --git a/plugins/output/latex/package-lock.json b/plugins/latex/package-lock.json similarity index 100% rename from plugins/output/latex/package-lock.json rename to plugins/latex/package-lock.json diff --git a/plugins/output/latex/package.json b/plugins/latex/package.json similarity index 100% rename from plugins/output/latex/package.json rename to plugins/latex/package.json diff --git a/plugins/output/latex/rollup.config.js b/plugins/latex/rollup.config.js similarity index 100% rename from plugins/output/latex/rollup.config.js rename to plugins/latex/rollup.config.js diff --git a/plugins/output/latex/src/01-doc.js b/plugins/latex/src/01-doc.js similarity index 100% rename from plugins/output/latex/src/01-doc.js rename to plugins/latex/src/01-doc.js diff --git a/plugins/output/latex/src/02-section.js b/plugins/latex/src/02-section.js similarity index 100% rename from plugins/output/latex/src/02-section.js rename to plugins/latex/src/02-section.js diff --git a/plugins/output/latex/src/03-paragraph.js b/plugins/latex/src/03-paragraph.js similarity index 100% rename from plugins/output/latex/src/03-paragraph.js rename to plugins/latex/src/03-paragraph.js diff --git a/plugins/output/latex/src/04-sentence.js b/plugins/latex/src/04-sentence.js similarity index 100% rename from plugins/output/latex/src/04-sentence.js rename to plugins/latex/src/04-sentence.js diff --git a/plugins/output/latex/src/05-link.js b/plugins/latex/src/05-link.js similarity index 100% rename from plugins/output/latex/src/05-link.js rename to plugins/latex/src/05-link.js diff --git a/plugins/output/latex/src/_lib/smartReplace.js b/plugins/latex/src/_lib/smartReplace.js similarity index 100% rename from plugins/output/latex/src/_lib/smartReplace.js rename to plugins/latex/src/_lib/smartReplace.js diff --git a/plugins/output/latex/src/image.js b/plugins/latex/src/image.js similarity index 100% rename from plugins/output/latex/src/image.js rename to plugins/latex/src/image.js diff --git a/plugins/output/latex/src/index.js b/plugins/latex/src/index.js similarity index 100% rename from plugins/output/latex/src/index.js rename to plugins/latex/src/index.js diff --git a/plugins/output/latex/src/infobox.js b/plugins/latex/src/infobox.js similarity index 100% rename from plugins/output/latex/src/infobox.js rename to plugins/latex/src/infobox.js diff --git a/plugins/output/latex/src/list.js b/plugins/latex/src/list.js similarity index 100% rename from plugins/output/latex/src/list.js rename to plugins/latex/src/list.js diff --git a/plugins/output/latex/src/reference.js b/plugins/latex/src/reference.js similarity index 100% rename from plugins/output/latex/src/reference.js rename to plugins/latex/src/reference.js diff --git a/plugins/output/latex/src/table.js b/plugins/latex/src/table.js similarity index 100% rename from plugins/output/latex/src/table.js rename to plugins/latex/src/table.js diff --git a/plugins/output/latex/tests/_lib.js b/plugins/latex/tests/_lib.js similarity index 77% rename from plugins/output/latex/tests/_lib.js rename to plugins/latex/tests/_lib.js index 509488ec..955cc178 100644 --- a/plugins/output/latex/tests/_lib.js +++ b/plugins/latex/tests/_lib.js @@ -2,10 +2,10 @@ if (typeof process !== undefined && typeof module !== undefined) { let wtf if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') - wtf = require('../../../../types') + wtf = require('../../../types') wtf.extend(require(`..`)) } else { - wtf = require('../../../../src') + wtf = require('../../../src') wtf.extend(require(`../src`)) } diff --git a/plugins/output/latex/tests/latex.test.js b/plugins/latex/tests/latex.test.js similarity index 100% rename from plugins/output/latex/tests/latex.test.js rename to plugins/latex/tests/latex.test.js diff --git a/plugins/output/latex/tests/stress.test.js b/plugins/latex/tests/stress.test.js similarity index 100% rename from plugins/output/latex/tests/stress.test.js rename to plugins/latex/tests/stress.test.js diff --git a/plugins/output/markdown/README.md b/plugins/markdown/README.md similarity index 100% rename from plugins/output/markdown/README.md rename to plugins/markdown/README.md diff --git a/plugins/output/markdown/builds/wtf-plugin-markdown.js b/plugins/markdown/builds/wtf-plugin-markdown.js similarity index 100% rename from plugins/output/markdown/builds/wtf-plugin-markdown.js rename to plugins/markdown/builds/wtf-plugin-markdown.js diff --git a/plugins/output/markdown/builds/wtf-plugin-markdown.js.map b/plugins/markdown/builds/wtf-plugin-markdown.js.map similarity index 100% rename from plugins/output/markdown/builds/wtf-plugin-markdown.js.map rename to plugins/markdown/builds/wtf-plugin-markdown.js.map diff --git a/plugins/output/markdown/builds/wtf-plugin-markdown.min.js b/plugins/markdown/builds/wtf-plugin-markdown.min.js similarity index 100% rename from plugins/output/markdown/builds/wtf-plugin-markdown.min.js rename to plugins/markdown/builds/wtf-plugin-markdown.min.js diff --git a/plugins/output/markdown/builds/wtf-plugin-markdown.mjs b/plugins/markdown/builds/wtf-plugin-markdown.mjs similarity index 100% rename from plugins/output/markdown/builds/wtf-plugin-markdown.mjs rename to plugins/markdown/builds/wtf-plugin-markdown.mjs diff --git a/plugins/output/markdown/package-lock.json b/plugins/markdown/package-lock.json similarity index 100% rename from plugins/output/markdown/package-lock.json rename to plugins/markdown/package-lock.json diff --git a/plugins/output/markdown/package.json b/plugins/markdown/package.json similarity index 100% rename from plugins/output/markdown/package.json rename to plugins/markdown/package.json diff --git a/plugins/output/markdown/rollup.config.js b/plugins/markdown/rollup.config.js similarity index 100% rename from plugins/output/markdown/rollup.config.js rename to plugins/markdown/rollup.config.js diff --git a/plugins/output/markdown/src/01-doc.js b/plugins/markdown/src/01-doc.js similarity index 100% rename from plugins/output/markdown/src/01-doc.js rename to plugins/markdown/src/01-doc.js diff --git a/plugins/output/markdown/src/02-section.js b/plugins/markdown/src/02-section.js similarity index 100% rename from plugins/output/markdown/src/02-section.js rename to plugins/markdown/src/02-section.js diff --git a/plugins/output/markdown/src/03-paragraph.js b/plugins/markdown/src/03-paragraph.js similarity index 100% rename from plugins/output/markdown/src/03-paragraph.js rename to plugins/markdown/src/03-paragraph.js diff --git a/plugins/output/markdown/src/04-sentence.js b/plugins/markdown/src/04-sentence.js similarity index 100% rename from plugins/output/markdown/src/04-sentence.js rename to plugins/markdown/src/04-sentence.js diff --git a/plugins/output/markdown/src/05-link.js b/plugins/markdown/src/05-link.js similarity index 100% rename from plugins/output/markdown/src/05-link.js rename to plugins/markdown/src/05-link.js diff --git a/plugins/output/markdown/src/_lib/pad.js b/plugins/markdown/src/_lib/pad.js similarity index 100% rename from plugins/output/markdown/src/_lib/pad.js rename to plugins/markdown/src/_lib/pad.js diff --git a/plugins/output/markdown/src/_lib/smartReplace.js b/plugins/markdown/src/_lib/smartReplace.js similarity index 100% rename from plugins/output/markdown/src/_lib/smartReplace.js rename to plugins/markdown/src/_lib/smartReplace.js diff --git a/plugins/output/markdown/src/image.js b/plugins/markdown/src/image.js similarity index 100% rename from plugins/output/markdown/src/image.js rename to plugins/markdown/src/image.js diff --git a/plugins/output/markdown/src/index.js b/plugins/markdown/src/index.js similarity index 100% rename from plugins/output/markdown/src/index.js rename to plugins/markdown/src/index.js diff --git a/plugins/output/markdown/src/infobox.js b/plugins/markdown/src/infobox.js similarity index 100% rename from plugins/output/markdown/src/infobox.js rename to plugins/markdown/src/infobox.js diff --git a/plugins/output/markdown/src/list.js b/plugins/markdown/src/list.js similarity index 100% rename from plugins/output/markdown/src/list.js rename to plugins/markdown/src/list.js diff --git a/plugins/output/markdown/src/reference.js b/plugins/markdown/src/reference.js similarity index 100% rename from plugins/output/markdown/src/reference.js rename to plugins/markdown/src/reference.js diff --git a/plugins/output/markdown/src/table.js b/plugins/markdown/src/table.js similarity index 100% rename from plugins/output/markdown/src/table.js rename to plugins/markdown/src/table.js diff --git a/plugins/output/markdown/tests/_lib.js b/plugins/markdown/tests/_lib.js similarity index 77% rename from plugins/output/markdown/tests/_lib.js rename to plugins/markdown/tests/_lib.js index 509488ec..955cc178 100644 --- a/plugins/output/markdown/tests/_lib.js +++ b/plugins/markdown/tests/_lib.js @@ -2,10 +2,10 @@ if (typeof process !== undefined && typeof module !== undefined) { let wtf if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') - wtf = require('../../../../types') + wtf = require('../../../types') wtf.extend(require(`..`)) } else { - wtf = require('../../../../src') + wtf = require('../../../src') wtf.extend(require(`../src`)) } diff --git a/plugins/output/markdown/tests/markdown.test.js b/plugins/markdown/tests/markdown.test.js similarity index 100% rename from plugins/output/markdown/tests/markdown.test.js rename to plugins/markdown/tests/markdown.test.js diff --git a/plugins/output/markdown/tests/stress.test.js b/plugins/markdown/tests/stress.test.js similarity index 100% rename from plugins/output/markdown/tests/stress.test.js rename to plugins/markdown/tests/stress.test.js diff --git a/plugins/output/markdown/tests/table.test.js b/plugins/markdown/tests/table.test.js similarity index 100% rename from plugins/output/markdown/tests/table.test.js rename to plugins/markdown/tests/table.test.js diff --git a/scratch.js b/scratch.js index 621824fd..28dc4fb7 100644 --- a/scratch.js +++ b/scratch.js @@ -2,31 +2,104 @@ const wtf = require('./src/index') wtf.extend(require('./plugins/wikitext/src')) // one -// let str = `[[one]] and [[two]]` +// let str = `[[one]] and [[two]] {{one}} and {{two}}` // let doc = wtf(str) -// console.log(doc.links(0)) -// two - -// // console.log(doc.table().json()) - -// let doc = wtf.fetch('Milwaukee Bucks').then((doc) => { -// console.log(doc.sentence(133)) -// console.log(doc.sentence(133).json()) -// }) - -let str = `{{foobar | fun = true | key = val}}` -// str = `{{hello|world}} -// str = `Emery is a vegetarian,{{cite web|title=The princess of pot|url=http://thewalrus.ca/the-princess-of-pot/}}` +// console.log(doc.templates(1)[0].json()) +// let str = `{{Infobox country +// | common_name = United Kingdom +// | name = {{collapsible list +// | title = hello +// | {{Infobox +// | data1={{lang|foo}} +// | data2=bar +// }} +// }} +// }} // ` -let doc = wtf(str) -// console.log(doc.links(0).map((t) => t.text())) -// console.log(doc.reference().json()) -console.log(doc.makeWikitext()) -// console.log(doc.template()) +// let obj = wtf(str).infobox(0).json() +// console.log(obj) -// let doc = wtf(`* {{USS|Barry}}, four US destroyers`) -// let tmpl = doc.template() -// console.log(tmpl.wikitext()) -// console.log(tmpl.text()) -// console.log(doc.text()) +let str = ` {{Infobox settlement + |official_name = Dollar Point, California + |settlement_type = [[census-designated place]] + |image_skyline = + |imagesize = + |image_caption = + |image_seal = + |image_map = Placer_County_California_Incorporated_and_Unincorporated_areas_Dollar_Point_Highlighted.svg + |mapsize = 250x200px + |map_caption = Location in [[Placer County, California|Placer County]] and the state of [[California]] + |image_map1 = + |mapsize1 = + |map_caption1 = + |pushpin_map = USA + |pushpin_relief = yes + | pushpin_map_caption = Location in the United States + |subdivision_type = [[List of countries|Country]] + |subdivision_name = {{USA}} + |subdivision_type1 = [[Political divisions of the United States|State]] + |subdivision_name1 = {{flag|California}} + |subdivision_type2 = [[List of counties in California|County]] + |subdivision_name2 = [[Placer County, California|Placer]] + |government_type = + |leader_title = N/A + |leader_name = + |leader_title1 = [[California State Legislature|State Senate]] + |leader_name1 = [[Dave Cox]] ([[California Republican Party|R]]) + |leader_title2 = [[California State Assembly|State Assembly]] + |leader_name2 = [[Ted Gaines]] (R) + |leader_title3 = [[California's 4th congressional district|U. S. Congress]] + |leader_name3 = {{Representative|cacd|4|fmt=usleader}}{{Cite GovTrack|CA|4|accessdate=March 3, 2013}} + |established_date = + + + |area_magnitude = + | unit_pref = US + | area_footnotes = [http://www.census.gov/geo/www/gazetteer/files/Gaz_places_national.txt U.S. Census] {{webarchive |url=http://www.webcitation.org/699nOulzi?url=http://www.census.gov/geo/www/gazetteer/files/Gaz_places_national.txt |date=2012-07-14 }} + | area_total_sq_mi = 1.634 + | area_land_sq_mi = 1.634 + | area_water_sq_mi = 0 + | area_total_km2 = 4.232 + | area_land_km2 = 4.232 + | area_water_km2 = 0 + | area_water_percent = 0 + | area_note = + + |elevation_ft = 6483 + |elevation_m = 1976 + |population_as_of = [[2010 United States Census|2010]] + |population_footnotes = + |population_total = 1215 + |population_metro = + |population_density_km2 = auto + |population_density_sq_mi = + |timezone = [[Pacific Time Zone|PST]] + |utc_offset = -8 + |coordinates = {{coord|39|11|19|N|120|6|32|W|region:US_type:city|display=inline,title}} + |timezone_DST = PDT + |utc_offset_DST = -7 + |postal_code_type = [[ZIP code]] + |postal_code = 96145 + |area_code = [[Area code 530|530]] + |blank_name = [[Federal Information Processing Standard|FIPS code]] + |blank_info = 06-19455 + |blank1_name = [[Geographic Names Information System|GNIS]] feature IDs + |blank1_info = 1723422; 2408680 + |footnotes = + |website = + }} + '''Dollar Point''' is a [[census-designated place]] (CDP) in [[Placer County, California|Placer County]], [[California]], [[United States]], along the northwest shore of [[Lake Tahoe]]. It is part of the [[Sacramento, California|Sacramento]]–[[Arden-Arcade, California|Arden-Arcade]]–[[Roseville, California|Roseville]] [[Sacramento metropolitan area|Metropolitan Statistical Area]]. The population was 1,215 at the [[2010 United States Census|2010 census]] down from 1,539 at the 2000 census. + + Dollar Point has been noted for its [[place names considered unusual|unusual place name]].{{cite book|last=Thompson|first=George E.|title=You Live Where?: Interesting and Unusual Facts about where We Live|url=https://books.google.com/books?id=0Ia7Rga26OkC&pg=PA10|date=1 July 2009|publisher=iUniverse|isbn=978-1-4401-3421-0|page=10}} + + ==History== + In 1884 the Glenbrook Mills logged 337 acres on a point on Lake Tahoe. In 1898 [[Lake Tahoe Railway and Transportation Company]] (D.L. Bliss) was formed and built {{Convert|16|miles|km}} of narrow gauge track into the area that became known as Dollar Point. [[Southern Pacific Transportation Company|Southern Pacific]] leased the track rights in 1925 and converted the tracks to [[Standard gauge]] in 1926, bought the property in 1933, and abandoned the tracks in 1943. In 1916 Lora Josephine Knight bought the point. The land was originally part of an area called Chinquapin by the [[Washoe people|Washoe Indians]]. [[Robert Dollar]] purchased many properties such as the 1,436 acres in [[Rossmoor, Walnut Creek, California|Rossmoor, California]] and in 1927 he purchased the area that had been called "Old Lousy", "the lousy point", and Observatory Point, from Lora Knight. She became well known for building [[Vikingsholm]] Castle in 1929. She and her husband were also primary financial backers of [[Charles Lindbergh]]'s non-stop solo flight across the Atlantic. + + Dollar Point is located within the [[Sierra Nevada (U.S.)|Sierra Nevada Mountain Range]] on the Northwest corner of Lake Tahoe. [[Carnelian Bay, California|Carnelian Bay]] is on the north side, [[Tahoe City, California|Tahoe City]] to the south, and [[Tahoe National Forest]] and [[Burton Creek State Park]] extends along the entire east side. [[California State Route 28|State Route 28]] is the only major highway access to the area and runs the length of the northwest boundary of Dollar Point. Dollar also purchased a react of land to the east of SR 28 that is now called Chinquapin development.{{cite web | url=http://www.dollarpoint.org/community-info/dollar-point-history/ | title=A Brief History of Dollar Point | publisher=Dollar Point Association | accessdate=March 4, 2015}} + + ==Geography== + Dollar Point is located at {{coord|39|11|19|N|120|6|32|W|type:city}} (39.188639, -120.108848).{{cite web|url=http://www.census.gov/geo/www/gazetteer/gazette.html|publisher=[[United States Census Bureau]]|accessdate=2011-04-23|date=2011-02-12|title=US Gazetteer files: 2010, 2000, and 1990}} + ` +let obj = wtf(str).coordinate(13) +console.log(obj) diff --git a/src/01-document/Document.js b/src/01-document/Document.js index dea740e5..4d7d487a 100644 --- a/src/01-document/Document.js +++ b/src/01-document/Document.js @@ -232,8 +232,12 @@ class Document { * * @returns {string | string[]} The category at the provided index or all categories */ - categories() { - return this._categories || [] + categories(clue) { + let arr = this._categories || [] + if (typeof clue === 'number') { + return [arr[clue]] + } + return arr } /** @@ -259,6 +263,8 @@ class Document { return arr.filter((s) => { return s.title().toLowerCase() === str }) + } else if (typeof clue === 'number') { + return [arr[clue]] } return arr } @@ -268,28 +274,34 @@ class Document { * * If the clue is a number then it returns the paragraph at that index * Else it returns all paragraphs in an array - * + * @param {number | string} [clue] given index of a paragraph * @returns {object | object[]} the selected paragraph or an array of all paragraphs */ - paragraphs() { + paragraphs(clue) { let arr = [] this.sections().forEach((s) => { arr = arr.concat(s.paragraphs()) }) + if (typeof clue === 'number') { + return [arr[clue]] + } return arr } /** * if no clue is provided, it compiles an array of sentences in the wiki text. * if the clue is provided it return the sentence at the provided index - * + * @param {number | string} [clue] given index of a sentence * @returns {object[]|object} an array of sentences or a single sentence */ - sentences() { + sentences(clue) { let arr = [] this.sections().forEach((sec) => { arr = arr.concat(sec.sentences()) }) + if (typeof clue === 'number') { + return [arr[clue]] + } return arr } @@ -300,7 +312,7 @@ class Document { * * @returns {Image[]|Image} a single image or an array of images */ - images() { + images(clue) { let arr = sectionMap(this, 'images', null) //grab image from infobox, first this.infoboxes().forEach((info) => { @@ -323,6 +335,9 @@ class Document { }) } }) + if (typeof clue === 'number') { + return [arr[clue]] + } return arr } @@ -507,9 +522,6 @@ Object.keys(singular).forEach((k) => { let sing = singular[k] Document.prototype[sing] = function (clue) { let arr = this[k](clue) - if (typeof clue === 'number') { - return arr[clue] - } return arr[0] || null } }) diff --git a/src/01-document/_sectionMap.js b/src/01-document/_sectionMap.js index 6bdfe4bf..81a02d43 100644 --- a/src/01-document/_sectionMap.js +++ b/src/01-document/_sectionMap.js @@ -20,9 +20,12 @@ const sectionMap = function (doc, fn, clue) { arr.push(t) }) }) - // if (typeof clue === 'number') { - // return arr[clue] - // } + if (typeof clue === 'number') { + if (arr[clue] === undefined) { + return [] + } + return [arr[clue]] + } return arr } module.exports = sectionMap diff --git a/tests/integration/infobox.test.js b/tests/integration/infobox.test.js index 62232987..ea72c13c 100644 --- a/tests/integration/infobox.test.js +++ b/tests/integration/infobox.test.js @@ -69,7 +69,7 @@ test('nested-london-infobox', function (t) { }} }} ` - let obj = wtf(str).infobox(0).keyValue() + let obj = wtf(str).infobox('country').keyValue() t.equal(obj[`common_name`], 'United Kingdom', 'found common_name val') t.equal(obj[`name`], 'hello', 'found name val') t.end() diff --git a/tests/integration/json-full.test.js b/tests/integration/json-full.test.js index 0fb3cacd..86e12ede 100644 --- a/tests/integration/json-full.test.js +++ b/tests/integration/json-full.test.js @@ -472,7 +472,7 @@ test('plurals / singular - all should exist', (t) => { }, { clue: 1, - expected: undefined, + expected: null, }, ], table: [ diff --git a/tests/unit/Document.test.js b/tests/unit/Document.test.js index f1674e29..96fc7267 100644 --- a/tests/unit/Document.test.js +++ b/tests/unit/Document.test.js @@ -745,7 +745,7 @@ test('templates - get - return all templates', (t) => { let doc = wtf(str) const expected = [13, 12, 5, 4, 4, 7, 7, 18] t.deepEqual( - doc.templates().map((te) => te.template.length), + doc.templates().map((te) => te.json().template.length), expected, 'returns all templates' ) @@ -756,7 +756,7 @@ test('templates - get - if the clue is a number return the templates at that ind let str = fs.readFileSync(path.join(__dirname, '../', 'cache', 'Arts_Club_of_Chicago.txt'), 'utf-8') let doc = wtf(str) //I used the length of the paragraphs as an analogue for the content. - t.deepEqual(doc.template(1).template.length, 12, 'the templates at index 1') + t.deepEqual(doc.template(1).json().template.length, 12, 'the templates at index 1') t.end() }) @@ -765,7 +765,7 @@ test('templates - get - if the clue is any other type then return all templates' let doc = wtf(str) const expected = [13, 12, 5, 4, 4, 7, 7, 18] t.deepEqual( - doc.templates().map((te) => te.template.length), + doc.templates().map((te) => te.json().template.length), expected, 'returns all templates' ) From fc58e1f32ade6e465956d31f7d7e3d0d40e0052b Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 13:12:57 -0400 Subject: [PATCH 114/117] 9.0.0rc --- builds/wtf_wikipedia-client.js | 386 +- builds/wtf_wikipedia-client.min.js | 2 +- builds/wtf_wikipedia-client.mjs | 2 +- builds/wtf_wikipedia.js | 386 +- builds/wtf_wikipedia.mjs | 386 +- changelog.md | 11 + package.json | 3 +- .../classify/builds/wtf-plugin-classify.js | 86 +- .../builds/wtf-plugin-classify.js.map | 2 +- .../builds/wtf-plugin-classify.min.js | 2 +- .../classify/builds/wtf-plugin-classify.mjs | 86 +- plugins/classify/package-lock.json | 4412 +++++++---------- plugins/classify/package.json | 10 +- .../disambig/builds/wtf-plugin-disambig.js | 82 +- .../builds/wtf-plugin-disambig.js.map | 2 +- .../builds/wtf-plugin-disambig.min.js | 2 +- .../disambig/builds/wtf-plugin-disambig.mjs | 82 +- plugins/disambig/package.json | 2 +- plugins/html/tests/_lib.js | 2 +- plugins/image/builds/wtf-plugin-image.js | 23 +- plugins/image/builds/wtf-plugin-image.js.map | 2 +- plugins/image/builds/wtf-plugin-image.min.js | 2 +- plugins/image/builds/wtf-plugin-image.mjs | 23 +- plugins/image/package.json | 2 +- plugins/latex/tests/_lib.js | 2 +- plugins/markdown/tests/_lib.js | 2 +- plugins/person/builds/wtf-plugin-person.js | 7 +- .../person/builds/wtf-plugin-person.js.map | 2 +- .../person/builds/wtf-plugin-person.min.js | 2 +- plugins/person/builds/wtf-plugin-person.mjs | 7 +- plugins/person/package.json | 2 +- plugins/summary/builds/wtf-plugin-summary.js | 11 +- .../summary/builds/wtf-plugin-summary.js.map | 2 +- .../summary/builds/wtf-plugin-summary.min.js | 2 +- plugins/summary/builds/wtf-plugin-summary.mjs | 11 +- plugins/summary/package.json | 2 +- .../wikitext/builds/wtf-plugin-wikitext.js | 97 +- .../builds/wtf-plugin-wikitext.js.map | 2 +- .../builds/wtf-plugin-wikitext.min.js | 2 +- .../wikitext/builds/wtf-plugin-wikitext.mjs | 97 +- plugins/wikitext/package.json | 2 +- scratch.js | 101 +- src/_version.js | 2 +- 43 files changed, 3070 insertions(+), 3283 deletions(-) diff --git a/builds/wtf_wikipedia-client.js b/builds/wtf_wikipedia-client.js index 32822036..e17a0113 100644 --- a/builds/wtf_wikipedia-client.js +++ b/builds/wtf_wikipedia-client.js @@ -1,4 +1,4 @@ -/* wtf_wikipedia 8.5.1 MIT */ +/* wtf_wikipedia 9.0.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -311,6 +311,15 @@ arr.push(t); }); }); + + if (typeof clue === 'number') { + if (arr[clue] === undefined) { + return []; + } + + return [arr[clue]]; + } + return arr; }; @@ -894,7 +903,23 @@ const i18n_templates = i18n.disambig_templates.reduce((h, str) => { h[str] = true; return h; - }, {}); + }, {}); // look for '... may refer to' + + const byText = function (s) { + if (!s) { + return false; + } + + let txt = s.text(); + + if (txt !== null && txt[0]) { + if (/. may (also)? refer to\b/i.test(txt) === true) { + return true; + } + } + + return false; + }; /** * Parses the wikitext to find out if this page is a disambiguation * @@ -903,9 +928,10 @@ * @returns {boolean} an indication if the document is a disambiguation page */ + const isDisambig = function (doc) { // check for a {{disambig}} template - let templates = doc.templates(); + let templates = doc.templates().map(tmpl => tmpl.json()); let found = templates.find(obj => { return _disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); }); @@ -922,22 +948,14 @@ } //try 'may refer to' on first line for en-wiki? - let s = doc.sentences()[0]; - - if (s) { - let firstLine = s.text(); - - if (firstLine !== null && firstLine[0]) { - if (/. may refer to\b/i.test(firstLine) === true) { - return true; - } - } + if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { + return true; } return false; }; - var disambig = isDisambig; + var isDisambig_1 = isDisambig; const defaults$a = { caption: true, @@ -1062,6 +1080,9 @@ }, text: function () { return ''; + }, + wikitext: function () { + return this.data.wiki || ''; } }; Object.keys(methods$8).forEach(k => { @@ -2411,7 +2432,7 @@ if (options.templates === true) { - let templates = section.templates(); + let templates = section.templates().map(tmpl => tmpl.json()); if (templates.length > 0) { data.templates = templates; //encode them, for mongodb @@ -2478,7 +2499,10 @@ this.data.text = str; } - return this.data.text || this.data.page || ''; + let txt = this.data.text || this.data.page || ''; // remove bold/italics + + txt = txt.replace(/''+/g, ''); + return txt; }, json: function () { let obj = { @@ -2502,6 +2526,10 @@ return obj; }, + wikitext: function () { + let txt = this.data.raw || ''; + return txt; + }, page: function (str) { if (str !== undefined) { this.data.page = str; @@ -2590,8 +2618,8 @@ let wiki = data.text; let links = parse$8(wiki) || []; data.links = links.map(link => { - wiki = wiki.replace(link.raw, link.text || link.page || ''); - delete link.raw; + wiki = wiki.replace(link.raw, link.text || link.page || ''); // delete link.raw + return new Link_1(link); }); wiki = removeLinks(wiki); @@ -2732,6 +2760,9 @@ json: function (options) { return toJson$3(this, options); }, + wikitext: function () { + return this.data.wiki || ''; + }, isEmpty: function () { return this.data.text === ''; } @@ -2771,10 +2802,10 @@ const abbreviations = _abbreviations.concat('[^]][^]]'); const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); - const acronym_reg = new RegExp("[ |.|'|[][A-Z].? *?$", 'i'); - const elipses_reg = new RegExp('\\.\\.\\.* +?$'); - const circa_reg = / c\. $/; - const hasWord = new RegExp('[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]', 'iu'); //turn a nested array into one array + const acronym_reg = /[ .'][A-Z].? *?$/i; + const elipses_reg = /\.\.\.* +?$/; + const circa_reg = / c\.\s$/; + const hasWord = /\p{Letter}/iu; //turn a nested array into one array const flatten = function (arr) { let all = []; @@ -2920,6 +2951,7 @@ function fromText(str) { let obj = { + wiki: str, text: str }; //pull-out the [[links]] @@ -3020,7 +3052,7 @@ //every value in {{tmpl|a|b|c}} needs a name //here we come up with names for them - const hasKey = /^[a-z0-9\u00C0-\u00FF\u4e00-\u9faf\._\- '()œ]+=/iu; //templates with these properties are asking for trouble + const hasKey = /^[\p{Letter}0-9\._\- '()œ]+=/iu; //templates with these properties are asking for trouble const reserved = { template: true, @@ -3197,11 +3229,15 @@ var toJSON = parser; - const Reference = function (data) { + const Reference = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$5 = { @@ -3232,6 +3268,9 @@ text: function () { return ''; //nah, skip these. }, + wikitext: function () { + return this.wiki || ''; + }, json: function (options = {}) { let json = this.data || {}; //encode them, for mongodb @@ -3276,17 +3315,23 @@ const parseRefs = function (section) { let references = []; let wiki = section._wiki; - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (_a, tmpl) { + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl); if (obj) { - references.push(obj); + references.push({ + json: obj, + wiki: all + }); } wiki = wiki.replace(tmpl, ''); } else { - references.push(parseInline(tmpl)); + references.push({ + json: parseInline(tmpl), + wiki: all + }); } return ' '; @@ -3294,17 +3339,23 @@ wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' '); // - wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (a, tmpl) { + wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl); if (obj) { - references.push(obj); + references.push({ + json: obj, + wiki: tmpl + }); } wiki = wiki.replace(tmpl, ''); } else { - references.push(parseInline(tmpl)); + references.push({ + json: parseInline(tmpl), + wiki: all + }); } return ' '; @@ -3312,7 +3363,7 @@ wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' '); // - section._references = references.map(r => new Reference_1(r)); + section._references = references.map(obj => new Reference_1(obj.json, obj.wiki)); section._wiki = wiki; }; @@ -3696,11 +3747,15 @@ return key; }; - const Table = function (data) { + const Table = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki + }); }; const methods$4 = { @@ -3724,20 +3779,29 @@ }, get(keys) { - // string gets a flat-list + // normalize mappings + let have = this.data[0] || {}; + let mapping = Object.keys(have).reduce((h, k) => { + h[normalize$1(k)] = k; + return h; + }, {}); // string gets a flat-list + if (typeof keys === 'string') { let key = normalize$1(keys); + key = mapping[key] || key; return this.data.map(row => { return row[key] ? row[key].text() : null; }); } // array gets obj-list - keys = keys.map(normalize$1); + keys = keys.map(normalize$1).map(k => mapping[k] || k); return this.data.map(row => { return keys.reduce((h, k) => { if (row[k]) { h[k] = row[k].text(); + } else { + h[k] = ''; } return h; @@ -3762,6 +3826,10 @@ text() { return ''; + }, + + wikitext() { + return this._wiki || ''; } }; @@ -3812,7 +3880,7 @@ let data = parse$5(str); if (data && data.length > 0) { - tables.push(new Table_1(data)); + tables.push(new Table_1(data, str)); } } }); @@ -3907,6 +3975,9 @@ json: function (options) { options = setDefaults_1(options, defaults$4); return toJson_1$1(this, options); + }, + wikitext: function () { + return this.data.wiki; } }; methods$3.citations = methods$3.references; @@ -4046,7 +4117,8 @@ let obj = { file: file, lang: doc._lang, - domain: doc._domain + domain: doc._domain, + wiki: img }; //try to grab other metadata, too img = img.replace(/^\[\[/, ''); @@ -4096,18 +4168,22 @@ const defaults$3 = {}; - const toText$1 = (list, options) => { + const toText$2 = (list, options) => { return list.map(s => { let str = s.text(options); return ' * ' + str; }).join('\n'); }; - const List = function (data) { + const List = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$2 = { @@ -4138,7 +4214,11 @@ }, text() { - return toText$1(this.data); + return toText$2(this.data); + }, + + wikitext() { + return this.wiki || ''; } }; @@ -4215,7 +4295,7 @@ } } - paragraph.lists = lists.map(l => new List_1(l)); + paragraph.lists = lists.map(l => new List_1(l, wiki)); paragraph.wiki = theRest.join('\n'); }; @@ -4513,7 +4593,6 @@ cricon: 'flagicon', sfrac: 'frac', sqrt: 'radic', - cite: 'citation', 'unreferenced section': 'unreferenced', redir: 'redirect', sisterlinks: 'sister project links', @@ -4521,6 +4600,9 @@ }; //multiple aliases let multi = { + date: ['byline', 'dateline'], + //wikinews + citation: ['cite', 'source', 'source-pr', 'source-science'], flagcountry: ['cr', 'cr-rt'], trunc: ['str left', 'str crop'], percentage: ['pct', 'percentage'], @@ -4595,7 +4677,10 @@ asterisk: '*', 'long dash': '———', clear: '\n\n', - 'h.': 'ḥ' + 'h.': 'ḥ', + profit: '▲', + loss: '▼', + gain: '▲' }; let templates$9 = { @@ -5682,7 +5767,6 @@ 'short description': ['description'], 'coord missing': ['region'], unreferenced: ['date'], - uss: ['ship', 'id'], 'taxon info': ['taxon', 'item'], //https://en.wikipedia.org/wiki/Template:Taxon_info 'portuguese name': ['first', 'second', 'suffix'], @@ -6079,6 +6163,17 @@ list.push(template); let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); return '\n' + str + '\n'; + }, + // https://en.m.wikipedia.org/wiki/Template:USS + uss: (tmpl, list) => { + let obj = toJSON(tmpl, ['name', 'id']); + list.push(obj); + + if (obj.id) { + return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; + } + + return `[[USS ${obj.name}|USS ''${obj.name}'']]`; } }; var functions = templates$3; @@ -6406,7 +6501,7 @@ return String(num); }; - const toText = function (date) { + const toText$1 = function (date) { //eg '1995' let str = String(date.year || ''); @@ -6438,7 +6533,7 @@ }; var _format = { - toText: toText, + toText: toText$1, ymd: ymd }; // console.log(toText(ymd([2018, 3, 28]))); @@ -7407,27 +7502,27 @@ } = helpers; const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; //this gets all the {{template}} objects and decides how to parse them - const parseTemplate = function (tmpl, list, doc) { + const parseTemplate = function (tmpl, doc) { let name = tmpl.name; // dont bother with some junk templates if (_ignore.hasOwnProperty(name) === true) { - return ''; + return ['']; } //{{infobox settlement...}} if (_infobox.isInfobox(name) === true) { - let obj = toJSON(tmpl.body, [], 'raw'); - list.push(_infobox.format(obj)); - return ''; + let obj = toJSON(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) + + return ['', _infobox.format(obj)]; } //cite book, cite arxiv... if (/^cite [a-z]/.test(name) === true) { let obj = toJSON(tmpl.body); obj.type = obj.template; - obj.template = 'citation'; - list.push(obj); - return ''; + obj.template = 'citation'; // list.push(obj) + + return ['', obj]; } // ok, here we go! //parse some known templates @@ -7437,49 +7532,48 @@ if (typeof custom[name] === 'number') { let obj = toJSON(tmpl.body, nums); let key = String(custom[name]); - return obj[key] || ''; + return [obj[key] || '']; } //handle string-syntax if (typeof custom[name] === 'string') { - return custom[name]; + return [custom[name]]; } //handle array sytax if (isArray$1(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name]); - list.push(obj); - return ''; + let obj = toJSON(tmpl.body, custom[name]); // list.push(obj) + + return ['', obj]; } //handle object sytax if (isObject(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name].props); - list.push(obj); - return obj[custom[name].out]; + let obj = toJSON(tmpl.body, custom[name].props); // list.push(obj) + + return [obj[custom[name].out], obj]; } //handle function syntax if (typeof custom[name] === 'function') { // let json = toJSON(tmpl.body) //(tmpl, list, alias, doc) - return custom[name](tmpl.body, list, toJSON, null, doc); + let arr = []; + let txt = custom[name](tmpl.body, arr, toJSON, null, doc); + return [txt, arr[0]]; } - } // if (doc) { - // doc._missing_templates[name] = doc._missing_templates[name] || 0 - // doc._missing_templates[name] += 1 - // } - //an unknown template with data, so just keep it. + } //an unknown template with data, so just keep it. let json = toJSON(tmpl.body); - if (list && Object.keys(json).length > 0) { - list.push(json); + if (Object.keys(json).length === 0) { + // list.push(json) + json = null; } //..then remove it - return ''; + return ['', json]; }; var parse$3 = parseTemplate; @@ -7513,13 +7607,17 @@ }; //a formal key-value data table about a topic - const Infobox = function (obj) { + const Infobox = function (obj, wiki) { this._type = obj.type; this.domain = obj.domain; Object.defineProperty(this, 'data', { enumerable: false, value: obj.data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$1 = { @@ -7543,7 +7641,7 @@ return arr; }, image: function () { - let s = this.data.image || this.data.image2 || this.data.logo; + let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag; if (!s) { return null; @@ -7598,6 +7696,9 @@ options = options || {}; return toJson_1(this, options); }, + wikitext: function () { + return this.wiki || ''; + }, keyValue: function () { return Object.keys(this.data).reduce((h, k) => { if (this.data[k]) { @@ -7617,20 +7718,33 @@ Infobox.prototype.images = Infobox.prototype.image; var Infobox_1 = Infobox; + const toText = _04Sentence.fromText; const methods = { text: function () { - return ''; + let str = this._text || ''; + return toText(str).text(); }, json: function () { - return this.data; + return this.data || {}; + }, + wikitext: function () { + return this.wiki || ''; } }; - const Template = function (data) { + const Template = function (data, text = '', wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_text', { + enumerable: false, + value: text + }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; Object.keys(methods).forEach(k => { @@ -7638,7 +7752,7 @@ }); var Template_1 = Template; - const isCitation = new RegExp('^(cite |citation)', 'i'); + const isCitation = /^(cite |citation)/i; const referenceTypes = { citation: true, refn: true, @@ -7647,33 +7761,34 @@ }; // split Infoboxes from templates and references - const sortOut = function (keep, domain) { + const sortOut = function (list, domain) { let res = { infoboxes: [], templates: [], references: [] }; //remove references and infoboxes from our list - keep.forEach(obj => { - let kind = obj.template || obj.type || obj.name; // is it a Reference? + list.forEach(obj => { + let json = obj.json; + let kind = json.template || json.type || json.name; // is it a Reference? if (referenceTypes[kind] === true || isCitation.test(kind) === true) { - res.references.push(new Reference_1(obj)); + res.references.push(new Reference_1(json, obj.wiki)); return; } // is it an Infobox? - if (obj.template === 'infobox' && obj.subbox !== 'yes') { - obj.domain = domain; //infoboxes need this for images, i guess + if (json.template === 'infobox' && json.subbox !== 'yes') { + json.domain = domain; //infoboxes need this for images, i guess - obj.data = obj.data || {}; //validate it a little + json.data = json.data || {}; //validate it a little - res.infoboxes.push(new Infobox_1(obj)); + res.infoboxes.push(new Infobox_1(json, obj.wiki)); return; } // otherwise, it's just a template - res.templates.push(new Template_1(obj)); + res.templates.push(new Template_1(json, obj.text, obj.wiki)); }); return res; }; @@ -7693,7 +7808,18 @@ } //parse template into json, return replacement wikitext - obj.wiki = parse$3(obj, list, doc); //remove the text from every parent + let [text, json] = parse$3(obj, doc); + obj.wiki = text; + + if (json) { + list.push({ + name: obj.name, + wiki: obj.body, + text: text, + json: json + }); + } //remove the text from every parent + const removeIt = function (node, body, out) { if (node.parent) { @@ -8045,7 +8171,7 @@ /** * the Section class represents the different sections of the article. * we look for the == title == syntax and split and parse the sections from there - * + * * @class */ @@ -8220,12 +8346,11 @@ templates(clue) { - let arr = this._templates || []; - arr = arr.map(t => t.json()); + let arr = this._templates || []; // arr = arr.map((t) => t.json()) if (typeof clue === 'string') { clue = clue.toLowerCase(); - return arr.filter(o => o.template === clue || o.name === clue); + return arr.filter(o => o.data.template === clue || o.data.name === clue); } return arr; @@ -8260,7 +8385,7 @@ coordinates() { let arr = [...this.templates('coord'), ...this.templates('coor')]; - return arr; + return arr.map(tmpl => tmpl.json()); } /** * returns all lists in the section @@ -8529,6 +8654,16 @@ options = setDefaults_1(options, defaults$2); return this.paragraphs().map(p => p.text(options)).join('\n\n'); } + /** + * returns original wiki markup + * + * @returns {string} the original markup + */ + + + wikitext() { + return this._wiki; + } /** * returns a json version of the section * @@ -8688,9 +8823,9 @@ }; /** * The document class is the main entry point of wtf_wikipedia. - * this class represents an article of wikipedia. + * this class represents an article of wikipedia. * from here you can go to the infoboxes or paragraphs - * + * * @class */ @@ -8910,7 +9045,7 @@ isDisambiguation() { - return disambig(this); + return isDisambig_1(this); } /** * If a clue is available return the category at that index @@ -8920,8 +9055,14 @@ */ - categories() { - return this._categories || []; + categories(clue) { + let arr = this._categories || []; + + if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; } /** * returns the sections of the document @@ -8947,6 +9088,8 @@ return arr.filter(s => { return s.title().toLowerCase() === str; }); + } else if (typeof clue === 'number') { + return [arr[clue]]; } return arr; @@ -8956,31 +9099,41 @@ * * If the clue is a number then it returns the paragraph at that index * Else it returns all paragraphs in an array - * + * @param {number | string} [clue] given index of a paragraph * @returns {object | object[]} the selected paragraph or an array of all paragraphs */ - paragraphs() { + paragraphs(clue) { let arr = []; this.sections().forEach(s => { arr = arr.concat(s.paragraphs()); }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** * if no clue is provided, it compiles an array of sentences in the wiki text. * if the clue is provided it return the sentence at the provided index - * + * @param {number | string} [clue] given index of a sentence * @returns {object[]|object} an array of sentences or a single sentence */ - sentences() { + sentences(clue) { let arr = []; this.sections().forEach(sec => { arr = arr.concat(sec.sentences()); }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** @@ -8992,7 +9145,7 @@ */ - images() { + images(clue) { let arr = _sectionMap(this, 'images', null); //grab image from infobox, first this.infoboxes().forEach(info => { @@ -9004,9 +9157,9 @@ }); //look for 'gallery' templates, too this.templates().forEach(obj => { - if (obj.template === 'gallery') { - obj.images = obj.images || []; - obj.images.forEach(img => { + if (obj.data.template === 'gallery') { + obj.data.images = obj.data.images || []; + obj.data.images.forEach(img => { if (!(img instanceof Image_1)) { img.language = this.language(); img.domain = this.domain(); @@ -9017,6 +9170,11 @@ }); } }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** @@ -9164,6 +9322,16 @@ options = setDefaults_1(options, defaults$1); return toJson$6(this, options); } + /** + * return original wiki markup + * + * @returns {string} markup text + */ + + + wikitext() { + return this._wiki || ''; + } /** * prints the title of every section * @@ -9209,11 +9377,6 @@ Document.prototype[sing] = function (clue) { let arr = this[k](clue); - - if (typeof clue === 'number') { - return arr[clue]; - } - return arr[0] || null; }; }); @@ -9280,7 +9443,8 @@ 'Content-Type': 'application/json', 'Api-User-Agent': agent, 'User-Agent': agent, - Origin: origin + Origin: origin, + 'Accept-Encoding': 'gzip' }, redirect: 'follow' }; @@ -9370,7 +9534,7 @@ var _fetch = fetch$1; - var _version = '8.5.1'; + var _version = '9.0.0'; /** * use the native client-side fetch function diff --git a/builds/wtf_wikipedia-client.min.js b/builds/wtf_wikipedia-client.min.js index 53cf9cfd..9de63132 100644 --- a/builds/wtf_wikipedia-client.min.js +++ b/builds/wtf_wikipedia-client.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).wtf=t()}(this,(function(){"use strict";var e=Object.freeze({__proto__:null,default:function(e,t){return t=t||{},new Promise((function(i,a){var n=new XMLHttpRequest,r=[],o=[],s={},l=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:l,headers:{keys:function(){return r},entries:function(){return o},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var c in n.open(t.method||"get",e,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,i){r.push(t=t.toLowerCase()),o.push([t,i]),s[t]=s[t]?s[t]+","+i:i})),i(l())},n.onerror=a,n.withCredentials="include"==t.credentials,t.headers)n.setRequestHeader(c,t.headers[c]);n.send(t.body||null)}))}});var t,i=(t=e)&&t.default||t,a=self.fetch||(self.fetch=i.default||i);var n=function(e){let t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};var r={capitalise:function(e){return e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):""},trim_whitespace:function(e){return e&&"string"==typeof e?e=(e=(e=(e=e.replace(/^\s\s*/,"")).replace(/\s\s*$/,"")).replace(/ {2}/," ")).replace(/\s, /,", "):""},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}};const{isArray:o}=r,s=/(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/,l={action:"query",prop:"revisions|pageprops",rvprop:"content",maxlag:5,rvslots:"main",origin:"*",format:"json",redirects:"true"},c=e=>e.replace(/ /g,"_").trim();var u=function(e){let t=Object.assign({},l),i="";if(e.domain){let t=s.test(e.domain)?"w/api.php":e.path;i=`https://${e.domain}/${t}?`}else{if(!e.lang||!e.wiki)return"";i=`https://${e.lang}.${e.wiki}.org/w/api.php?`}e.follow_redirects||delete t.redirects;let a=e.title;if("number"==typeof a)t.pageids=a;else if("string"==typeof a)t.titles=c(a);else if(void 0!==a&&o(a)&&"number"==typeof a[0])t.pageids=a.join("|");else{if(void 0===a||!0!==o(a)||"string"!=typeof a[0])return"";t.titles=a.map(c).join("|")}return`${i}${n=t,Object.entries(n).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}`;var n};var p=function(e,t={}){return Object.keys(e.query.pages).map(i=>{let a=e.query.pages[i]||{};if(a.hasOwnProperty("missing")||a.hasOwnProperty("invalid"))return null;let n=a.revisions[0]["*"];!n&&a.revisions[0].slots&&(n=a.revisions[0].slots.main["*"]),a.pageprops=a.pageprops||{};let r=t.domain;return!r&&t.wiki&&(r=t.wiki+".org"),{wiki:n,meta:Object.assign({},t,{title:a.title,pageID:a.pageid,namespace:a.ns,domain:r,wikidata:a.pageprops.wikibase_item,description:a.pageprops["wikibase-shortdesc"]})}})};var m=function(e,t,i){let a=[];return e.sections().forEach(e=>{let n=[];n="string"==typeof i?e[t](i):e[t](),n.forEach(e=>{a.push(e)})}),a};var d=function(e,t){return Object.assign({},t,e)};const h={title:!0,sections:!0,pageID:!0,categories:!0};var g=function(e,t){let i={};return(t=d(t,h)).title&&(i.title=e.title()),t.pageID&&(i.pageID=e.pageID()),t.categories&&(i.categories=e.categories()),t.sections&&(i.sections=e.sections().map(e=>e.json(t))),!0===e.isRedirect()&&(i.isRedirect=!0,i.redirectTo=e.redirectTo(),i.sections=[]),t.coordinates&&(i.coordinates=e.coordinates()),t.infoboxes&&(i.infoboxes=e.infoboxes().map(e=>e.json(t))),t.images&&(i.images=e.images().map(e=>e.json(t))),t.plaintext&&(i.plaintext=e.text(t)),(t.citations||t.references)&&(i.references=e.references()),i},f={categories:["category","abdeeling","bólkur","catagóir","categori","categoria","categoria","categoría","categorîa","categorìa","catégorie","categorie","catègorie","category","categuria","catigurìa","class","ẹ̀ka","flocc","flocc","flokkur","grup","jamii","kaarangay","kateggoría","kategooria","kategori","kategorî","kategoria","kategória","kategorie","kategoriija","kategorija","kategorio","kategoriya","kategoriýa","kategoriye","kategory","kategorya","kateqoriya","katiguriya","klad","luokka","ñemohenda","roinn","ronney","rummad","setensele","sokajy","sumut","thể","turkum","категорија","категория","категорія","катэгорыя","төркем","קטגוריה","تصنيف","تۈر","رده","श्रेणी","श्रेणी","বিষয়শ্রেণী","หมวดหมู่","분류","분류","分类"],disambig_templates:["dab","disamb","disambig","disambiguation","aðgreining","aimai","ałtsʼáʼáztiin","anlam ayrımı","anlam ayrımı","apartigilo","argipen","begriepskloorenge","begriffsklärung","begriffsklärung","begriffsklärung","begriffsklearung","bisongidila","bkl","bokokani","caddayn","clerheans","cudakirin","čvor","db","desambig","desambigación","desambiguação","desambiguació","desambiguación","desambiguáncia","desambiguasion","desambiguassiù","desambigui","dezambiguizare","dəqiqləşdirmə","disambigua","disambigua","disambigua","disambìgua","disambigua","disambiguasi","disambiguasi","discretiva","disheñvelout","disingkek","dixanbigua","dixebra","diżambigwazzjoni","doorverwijspagina","dp","dp","dubbelsinnig","dudalipen","dv","egyért","fleiri týdningar","fleirtyding","flertydig","förgrening","gì-ngiê","giklaro","gwahaniaethu","homonimo","homónimos","homonymie","huaʻōlelo puana like","idirdhealú","khu-pia̍t","kthjellim","kujekesa","maana","maneo bin","mehrdüdig begreep","menm non","muardüüdag artiikel","neibetsjuttings","nozīmju atdalīšana","nuorodinis","nyahkekaburan","omonimeye","omonimia","page dé frouque","paglilinaw","panangilawlawag","pansayod","pejy mitovy anarana","peker","razdvojba","razločitev","razvrstavanje","reddaghey","rozcestník","rozlišovacia stránka","sclerir noziun","selvendyssivu","soilleireachadh","suzmunski","täpsustuslehekülg","täsmennyssivu","telplänov","tlahtolmelahuacatlaliztli","trang định hướng","ujednoznacznienie","verdudeliking","wěcejwóznamowosć","wjacezmyslnosć","zambiguaçon","zeimeibu škiršona","αποσαφήνιση","айрық","аҵакырацәа","вишезначна одредница","ибҳомзудоӣ","кёб магъаналы","күп мәгънәләр","күп мәғәнәлелек","мъногосъмꙑслиѥ","неадназначнасць","неадназначнасьць","неоднозначность","олон удхатай","појаснување","пояснение","са шумуд манавал","салаа утгатай","суолталар","текмаанисиздик","цо магіна гуреб","чеперушка","чолхалла","шуко ончыктымаш-влак","მრავალმნიშვნელოვანი","բազմիմաստութիւն","բազմիմաստություն","באדייטן","פירושונים","ابهام‌زدایی","توضيح","توضيح","دقیقلشدیرمه","ڕوونکردنەوە","سلجهائپ","ضد ابہام","گجگجی بیری","نامبهمېدنه","መንታ","अस्पष्टता","बहुअर्थी","बहुविकल्पी शब्द","দ্ব্যর্থতা নিরসন","ਗੁੰਝਲ-ਖੋਲ੍ਹ","સંદિગ્ધ શીર્ષક","பக்கவழி நெறிப்படுத்தல்","అయోమయ నివృత్తి","ದ್ವಂದ್ವ ನಿವಾರಣೆ","വിവക്ഷകൾ","වක්‍රෝත්ති","แก้ความกำกวม","သံတူကြောင်းကွဲ","ណែនាំ","동음이의","扤清楚","搞清楚","曖昧さ回避","消歧义","釋義","gestion dj'omònim","sut'ichana qillqa"],disambig_titles:["disambiguation","homonymie","توضيح","desambiguação","Begriffsklärung","disambigua","曖昧さ回避","消歧義","搞清楚","значения","ابهام‌زدایی","د ابہام","동음이의","dubbelsinnig","այլ կիրառումներ","ujednoznacznienie"],images:["file","image","चित्र","archivo","attēls","berkas","bestand","datei","dosiero","dosya","fájl","fasciculus","fichier","fil","fitxategi","fitxer","gambar","imagem","imej","immagine","larawan","lêer","plik","restr","slika","wêne","wobraz","выява","податотека","слика","файл","სურათი","պատկեր","קובץ","پرونده","دوتنه","ملف","وێنە","चित्र","ไฟล์","파일","ファイル"],infoboxes:["infobox","anfo","anuāmapa","bilgi kutusu","bilgi","bilgiquti","boaty","boestkelaouiñ","bosca","capsa","diehtokássa","faktamall","ficha","generalni","gwybodlen3","info","infobokis","infoboks","infochascha","infokašćik","infokast","infokutija","infolentelė","infopolje","informkesto","infoskreine","infotaula","inligtingskas","inligtingskas3","inligtingskas4","kishtey","kotak","tertcita","tietolaatikko","yerleşim bilgi kutusu","ynfoboks","πλαίσιο","акарточка","аҥа","инфобокс","инфокутија","инфокутия","інфобокс","канадский","картка","карточка","карточка2","карточкарус","картуш","қуттӣ","ინფოდაფა","տեղեկաքարտ","אינפאקעסטל","תבנית","بطاقة","ڄاڻخانو","خانہ","لغة","ज्ञानसन्दूक","তথ্যছক","ਜਾਣਕਾਰੀਡੱਬਾ","సమాచారపెట్టె","තොරතුරුකොටුව","กล่องข้อมูล","ប្រអប់ព័ត៌មាន","정보상자","明細"],redirects:["adkas","aýdaw","doorverwijzing","ohjaus","patrz","přesměruj","redirección","redireccion","redirección","redirecionamento","redirect","redirection","redirection","rinvia","tilvísun","uudelleenohjaus","weiterleitung","weiterleitung","yönlendi̇r","yönlendirme","yönlendi̇rme","ανακατευθυνση","айдау","перанакіраваньне","перенаправлення","пренасочување","преусмери","преусмјери","تغییر_مسیر","تغییرمسیر","تغییرمسیر","เปลี่ยนทาง","ប្តូរទីតាំងទៅ","転送","重定向"],references:["references","reference","einzelnachweise","referencias","références","notes et références","脚注","referenser","bronnen","примечания"]};let k=" disambiguation";var b=["dab","dab","disamb","disambig","geodis","hndis","setindex","ship index","split dab","sport index","wp disambig","disambiguation cleanup","airport"+k,"biology"+k,"call sign"+k,"caselaw"+k,"chinese title"+k,"genus"+k,"hospital"+k,"lake index","letter"+k,"letter-number combination"+k,"mathematical"+k,"military unit"+k,"mountainindex","number"+k,"phonetics"+k,"place name"+k,"portal"+k,"road"+k,"school"+k,"species latin name abbreviation"+k,"species latin name"+k,"station"+k,"synagogue"+k,"taxonomic authority"+k,"taxonomy"+k].reduce((e,t)=>(e[t]=!0,e),{});const w=new RegExp(". \\(("+f.disambig_titles.join("|")+")\\)$","i"),y=f.disambig_templates.reduce((e,t)=>(e[t]=!0,e),{});var $=function(e){if(e.templates().find(e=>b.hasOwnProperty(e.template)||y.hasOwnProperty(e.template)))return!0;let t=e.title();if(t&&!0===w.test(t))return!0;let i=e.sentences()[0];if(i){let e=i.text();if(null!==e&&e[0]&&!0===/. may refer to\b/i.test(e))return!0}return!1};const x={caption:!0,alt:!0,links:!0,thumb:!0,url:!0};var v=function(e,t){t=d(t,x);let i={file:e.file()};return!1!==t.thumb&&(i.thumb=e.thumbnail()),!1!==t.url&&(i.url=e.url()),!1!==t.caption&&e.data.caption&&(i.caption=e.caption(),!1!==t.links&&e.data.caption.links()&&(i.links=e.links())),!1!==t.alt&&e.data.alt&&(i.alt=e.alt()),i};const j=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},_={file(){return this.data.file||""},alt(){let e=this.data.alt||this.data.file||"";return e=e.replace(/^(file|image):/i,""),e=e.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),e.replace(/_/g," ")},caption(){return this.data.caption?this.data.caption.text():""},links(){return this.data.caption?this.data.caption.links():[]},url(){let e=function(e){let t=function(e){let t=e.replace(/^(image|file?)\:/i,"");return t=t.charAt(0).toUpperCase()+t.substring(1),t=t.trim().replace(/ /g,"_"),t}(e);return t=encodeURIComponent(t),t}(this.file());return`https://${this.data.domain||"wikipedia.org"}/wiki/Special:Redirect/file/${e}`},thumbnail(e){return e=e||300,this.url()+"?width="+e},format(){let e=this.file().split(".");return e[e.length-1]?e[e.length-1].toLowerCase():null},json:function(e){return v(this,e=e||{})},text:function(){return""}};Object.keys(_).forEach(e=>{j.prototype[e]=_[e]}),j.prototype.src=j.prototype.url,j.prototype.thumb=j.prototype.thumbnail;var z=j,E={aa:"Afar",ab:"Аҧсуа",af:"Afrikaans",ak:"Akana",als:"Alemannisch",am:"አማርኛ",an:"Aragonés",ang:"Englisc",ar:"العربية",arc:"ܣܘܪܬ",as:"অসমীয়া",ast:"Asturianu",av:"Авар",ay:"Aymar",az:"Azərbaycanca",ba:"Башҡорт",bar:"Boarisch","bat-smg":"Žemaitėška",bcl:"Bikol",be:"Беларуская","be-x-old":"ltr",bg:"Български",bh:"भोजपुरी",bi:"Bislama",bm:"Bamanankan",bn:"বাংলা",bo:"བོད་ཡིག",bpy:"ltr",br:"Brezhoneg",bs:"Bosanski",bug:"ᨅᨔ",bxr:"ltr",ca:"Català",cdo:"Chinese",ce:"Нохчийн",ceb:"Sinugboanong",ch:"Chamoru",cho:"Choctaw",chr:"ᏣᎳᎩ",chy:"Tsetsêhestâhese",co:"Corsu",cr:"Nehiyaw",cs:"Česky",csb:"Kaszëbsczi",cu:"Slavonic",cv:"Чăваш",cy:"Cymraeg",da:"Dansk",de:"Deutsch",diq:"Zazaki",dsb:"ltr",dv:"ދިވެހިބަސް",dz:"ཇོང་ཁ",ee:"Ɛʋɛ",far:"فارسی",el:"Ελληνικά",en:"English",eo:"Esperanto",es:"Español",et:"Eesti",eu:"Euskara",ext:"Estremeñu",ff:"Fulfulde",fi:"Suomi","fiu-vro":"Võro",fj:"Na",fo:"Føroyskt",fr:"Français",frp:"Arpitan",fur:"Furlan",fy:"ltr",ga:"Gaeilge",gan:"ltr",gd:"ltr",gil:"Taetae",gl:"Galego",gn:"Avañe'ẽ",got:"gutisk",gu:"ગુજરાતી",gv:"Gaelg",ha:"هَوُسَ",hak:"ltr",haw:"Hawai`i",he:"עברית",hi:"हिन्दी",ho:"ltr",hr:"Hrvatski",ht:"Krèyol",hu:"Magyar",hy:"Հայերեն",hz:"Otsiherero",ia:"Interlingua",id:"Bahasa",ie:"Interlingue",ig:"Igbo",ii:"ltr",ik:"Iñupiak",ilo:"Ilokano",io:"Ido",is:"Íslenska",it:"Italiano",iu:"ᐃᓄᒃᑎᑐᑦ",ja:"日本語",jbo:"Lojban",jv:"Basa",ka:"ქართული",kg:"KiKongo",ki:"Gĩkũyũ",kj:"Kuanyama",kk:"Қазақша",kl:"Kalaallisut",km:"ភាសាខ្មែរ",kn:"ಕನ್ನಡ",khw:"کھوار",ko:"한국어",kr:"Kanuri",ks:"कश्मीरी",ksh:"Ripoarisch",ku:"Kurdî",kv:"Коми",kw:"Kernewek",ky:"Kırgızca",la:"Latina",lad:"Dzhudezmo",lan:"Leb",lb:"Lëtzebuergesch",lg:"Luganda",li:"Limburgs",lij:"Líguru",lmo:"Lumbaart",ln:"Lingála",lo:"ລາວ",lt:"Lietuvių",lv:"Latviešu","map-bms":"Basa",mg:"Malagasy",man:"官話",mh:"Kajin",mi:"Māori",min:"Minangkabau",mk:"Македонски",ml:"മലയാളം",mn:"Монгол",mo:"Moldovenească",mr:"मराठी",ms:"Bahasa",mt:"bil-Malti",mus:"Muskogee",my:"Myanmasa",na:"Dorerin",nah:"Nahuatl",nap:"Nnapulitano",nd:"ltr",nds:"Plattdüütsch","nds-nl":"Saxon",ne:"नेपाली",new:"नेपालभाषा",ng:"Oshiwambo",nl:"Nederlands",nn:"ltr",no:"Norsk",nr:"ltr",nso:"ltr",nrm:"Nouormand",nv:"Diné",ny:"Chi-Chewa",oc:"Occitan",oj:"ᐊᓂᔑᓈᐯᒧᐎᓐ",om:"Oromoo",or:"ଓଡ଼ିଆ",os:"Иронау",pa:"ਪੰਜਾਬੀ",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamentu",pdc:"ltr",pi:"Pāli",pih:"Norfuk",pl:"Polski",pms:"Piemontèis",ps:"پښتو",pt:"Português",qu:"Runa",rm:"ltr",rmy:"Romani",rn:"Kirundi",ro:"Română","roa-rup":"Armâneashti",ru:"Русский",rw:"Kinyarwandi",sa:"संस्कृतम्",sc:"Sardu",scn:"Sicilianu",sco:"Scots",sd:"सिनधि",se:"ltr",sg:"Sängö",sh:"Srpskohrvatski",si:"සිංහල",simple:"ltr",sk:"Slovenčina",sl:"Slovenščina",sm:"Gagana",sn:"chiShona",so:"Soomaaliga",sq:"Shqip",sr:"Српски",ss:"SiSwati",st:"ltr",su:"Basa",sv:"Svenska",sw:"Kiswahili",ta:"தமிழ்",te:"తెలుగు",tet:"Tetun",tg:"Тоҷикӣ",th:"ไทย",ti:"ትግርኛ",tk:"Туркмен",tl:"Tagalog",tlh:"tlhIngan-Hol",tn:"Setswana",to:"Lea",tpi:"ltr",tr:"Türkçe",ts:"Xitsonga",tt:"Tatarça",tum:"chiTumbuka",tw:"Twi",ty:"Reo",udm:"Удмурт",ug:"Uyƣurqə",uk:"Українська",ur:"اردو",uz:"Ўзбек",ve:"Tshivenḓa",vi:"Việtnam",vec:"Vèneto",vls:"ltr",vo:"Volapük",wa:"Walon",war:"Winaray",wo:"Wollof",xal:"Хальмг",xh:"isiXhosa",yi:"ייִדיש",yo:"Yorùbá",za:"Cuengh",zh:"中文","zh-classical":"ltr","zh-min-nan":"Bân-lâm-gú","zh-yue":"粵語",zu:"isiZulu"};const O=".wikipedia.org/wiki/$1",C=".wikimedia.org/wiki/$1",S="www.";var N={acronym:S+"acronymfinder.com/$1.html",advisory:"advisory"+C,advogato:S+"advogato.org/$1",aew:"wiki.arabeyes.org/$1",appropedia:S+"appropedia.org/$1",aquariumwiki:S+"theaquariumwiki.com/$1",arborwiki:"localwiki.org/ann-arbor/$1",arxiv:"arxiv.org/abs/$1",atmwiki:S+"otterstedt.de/wiki/index.php/$1",baden:S+"stadtwiki-baden-baden.de/wiki/$1/",battlestarwiki:"en.battlestarwiki.org/wiki/$1",bcnbio:"historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1",beacha:S+"beachapedia.org/$1",betawiki:"translatewiki.net/wiki/$1",bibcode:"adsabs.harvard.edu/abs/$1",bibliowiki:"wikilivres.org/wiki/$1",bluwiki:"bluwiki.com/go/$1",blw:"britainloves"+O,botwiki:"botwiki.sno.cc/wiki/$1",boxrec:S+"boxrec.com/media/index.php?$1",brickwiki:S+"brickwiki.info/wiki/$1",bugzilla:"bugzilla.wikimedia.org/show_bug.cgi?id=$1",bulba:"bulbapedia.bulbagarden.net/wiki/$1",c:"commons"+C,c2:"c2.com/cgi/wiki?$1",c2find:"c2.com/cgi/wiki?FindPage&value=$1",cache:S+"google.com/search?q=cache:$1","ĉej":"esperanto.blahus.cz/cxej/vikio/index.php/$1",cellwiki:"cell.wikia.com/wiki/$1",centralwikia:"community.wikia.com/wiki/$1",chej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",choralwiki:S+"cpdl.org/wiki/index.php/$1",citizendium:"en.citizendium.org/wiki/$1",ckwiss:S+"ck-wissen.de/ckwiki/index.php?title=$1",comixpedia:S+"comixpedia.org/index.php?title=$1",commons:"commons"+C,communityscheme:"community.schemewiki.org/?c=s&key=$1",communitywiki:"communitywiki.org/$1",comune:"rete.comuni-italiani.it/wiki/$1",creativecommons:"creativecommons.org/licenses/$1",creativecommonswiki:"wiki.creativecommons.org/$1",cxej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",dcc:S+"dccwiki.com/$1",dcdatabase:"dc.wikia.com/$1",dcma:"christian-morgenstern.de/dcma/index.php?title=$1",debian:"wiki.debian.org/$1",delicious:S+"delicious.com/tag/$1",devmo:"developer.mozilla.org/en/docs/$1",dictionary:S+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",dict:S+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",disinfopedia:"sourcewatch.org/index.php/$1",distributedproofreaders:S+"pgdp.net/wiki/$1",distributedproofreadersca:S+"pgdpcanada.net/wiki/index.php/$1",dmoz:"curlie.org/$1",dmozs:"curlie.org/search?q=$1",doi:"doi.org/$1",donate:"donate"+C,doom_wiki:"doom.wikia.com/wiki/$1",download:"releases.wikimedia.org/$1",dbdump:"dumps.wikimedia.org/$1/latest/",dpd:"lema.rae.es/dpd/?key=$1",drae:"dle.rae.es/?w=$1",dreamhost:"wiki.dreamhost.com/index.php/$1",drumcorpswiki:S+"drumcorpswiki.com/index.php/$1",dwjwiki:S+"suberic.net/cgi-bin/dwj/wiki.cgi?$1","eĉei":S+"ikso.net/cgi-bin/wiki.pl?$1",ecoreality:S+"EcoReality.org/wiki/$1",ecxei:S+"ikso.net/cgi-bin/wiki.pl?$1",elibre:"enciclopedia.us.es/index.php/$1",emacswiki:S+"emacswiki.org/emacs?$1",encyc:"encyc.org/wiki/$1",energiewiki:S+"netzwerk-energieberater.de/wiki/index.php/$1",englyphwiki:"en.glyphwiki.org/wiki/$1",enkol:"enkol.pl/$1",eokulturcentro:"esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1",esolang:"esolangs.org/wiki/$1",etherpad:"etherpad.wikimedia.org/$1",ethnologue:S+"ethnologue.com/language/$1",ethnologuefamily:S+"ethnologue.com/show_family.asp?subid=$1",evowiki:"wiki.cotch.net/index.php/$1",exotica:S+"exotica.org.uk/wiki/$1",fanimutationwiki:"wiki.animutationportal.com/index.php/$1",fedora:"fedoraproject.org/wiki/$1",finalfantasy:"finalfantasy.wikia.com/wiki/$1",finnix:S+"finnix.org/$1",flickruser:S+"flickr.com/people/$1",flickrphoto:S+"flickr.com/photo.gne?id=$1",floralwiki:S+"floralwiki.co.uk/wiki/$1",foldoc:"foldoc.org/$1",foundation:"foundation"+C,foundationsite:"wikimediafoundation.org/$1",foxwiki:"fox.wikis.com/wc.dll?Wiki~$1",freebio:"freebiology.org/wiki/$1",freebsdman:S+"FreeBSD.org/cgi/man.cgi?apropos=1&query=$1",freeculturewiki:"wiki.freeculture.org/index.php/$1",freedomdefined:"freedomdefined.org/$1",freefeel:"freefeel.org/wiki/$1",freekiwiki:"wiki.freegeek.org/index.php/$1",freesoft:"directory.fsf.org/wiki/$1",ganfyd:"ganfyd.org/index.php?title=$1",gardenology:S+"gardenology.org/wiki/$1",gausswiki:"gauss.ffii.org/$1",gentoo:"wiki.gentoo.org/wiki/$1",genwiki:"wiki.genealogy.net/index.php/$1",gerrit:"gerrit.wikimedia.org/r/$1",git:"gerrit.wikimedia.org/g/$1",google:S+"google.com/search?q=$1",googledefine:S+"google.com/search?q=define:$1",googlegroups:"groups.google.com/groups?q=$1",guildwarswiki:"wiki.guildwars.com/wiki/$1",guildwiki:"guildwars.wikia.com/wiki/$1",guc:"tools.wmflabs.org/guc/?user=$1",gucprefix:"tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1",gutenberg:S+"gutenberg.org/etext/$1",gutenbergwiki:S+"gutenberg.org/wiki/$1",hackerspaces:"hackerspaces.org/wiki/$1",h2wiki:"halowiki.net/p/$1",hammondwiki:S+"dairiki.org/HammondWiki/index.php3?$1",hdl:"hdl.handle.net/$1",heraldik:"heraldik-wiki.de/wiki/$1",heroeswiki:"heroeswiki.com/$1",horizonlabs:"horizon.wikimedia.org/$1",hrwiki:S+"hrwiki.org/index.php/$1",hrfwiki:"fanstuff.hrwiki.org/index.php/$1",hupwiki:"wiki.hup.hu/index.php/$1",iarchive:"archive.org/details/$1",imdbname:S+"imdb.com/name/nm$1/",imdbtitle:S+"imdb.com/title/tt$1/",imdbcompany:S+"imdb.com/company/co$1/",imdbcharacter:S+"imdb.com/character/ch$1/",incubator:"incubator"+C,infosecpedia:"infosecpedia.org/wiki/$1",infosphere:"theinfosphere.org/$1","iso639-3":"iso639-3.sil.org/code/$1",issn:S+"worldcat.org/issn/$1",iuridictum:"iuridictum.pecina.cz/w/$1",jaglyphwiki:"glyphwiki.org/wiki/$1",jefo:"esperanto-jeunes.org/wiki/$1",jerseydatabase:"jerseydatabase.com/wiki.php?id=$1",jira:"jira.toolserver.org/browse/$1",jspwiki:S+"ecyrd.com/JSPWiki/Wiki.jsp?page=$1",jstor:S+"jstor.org/journals/$1",kamelo:"kamelopedia.mormo.org/index.php/$1",karlsruhe:"ka.stadtwiki.net/$1",kinowiki:"kino.skripov.com/index.php/$1",komicawiki:"wiki.komica.org/?$1",kontuwiki:"kontu.wiki/$1",wikitech:"wikitech"+C,libreplanet:"libreplanet.org/wiki/$1",linguistlist:"linguistlist.org/forms/langs/LLDescription.cfm?code=$1",linuxwiki:S+"linuxwiki.de/$1",linuxwikide:S+"linuxwiki.de/$1",liswiki:"liswiki.org/wiki/$1",literateprograms:"en.literateprograms.org/$1",livepedia:S+"livepedia.gr/index.php?title=$1",localwiki:"localwiki.org/$1",lojban:"mw.lojban.org/papri/$1",lostpedia:"lostpedia.wikia.com/wiki/$1",lqwiki:"wiki.linuxquestions.org/wiki/$1",luxo:"tools.wmflabs.org/guc/?user=$1",mail:"lists.wikimedia.org/mailman/listinfo/$1",mailarchive:"lists.wikimedia.org/pipermail/$1",mariowiki:S+"mariowiki.com/$1",marveldatabase:S+"marveldatabase.com/wiki/index.php/$1",meatball:"meatballwiki.org/wiki/$1",mw:S+"mediawiki.org/wiki/$1",mediazilla:"bugzilla.wikimedia.org/$1",memoryalpha:"memory-alpha.fandom.com/wiki/$1",metawiki:"meta"+C,metawikimedia:"meta"+C,metawikipedia:"meta"+C,mineralienatlas:S+"mineralienatlas.de/lexikon/index.php/$1",moinmoin:"moinmo.in/$1",monstropedia:S+"monstropedia.org/?title=$1",mosapedia:"mosapedia.de/wiki/index.php/$1",mozcom:"mozilla.wikia.com/wiki/$1",mozillawiki:"wiki.mozilla.org/$1",mozillazinekb:"kb.mozillazine.org/$1",musicbrainz:"musicbrainz.org/doc/$1",mediawikiwiki:S+"mediawiki.org/wiki/$1",mwod:S+"merriam-webster.com/dictionary/$1",mwot:S+"merriam-webster.com/thesaurus/$1",nkcells:S+"nkcells.info/index.php?title=$1",nara:"catalog.archives.gov/id/$1",nosmoke:"no-smok.net/nsmk/$1",nost:"nostalgia."+O,nostalgia:"nostalgia."+O,oeis:"oeis.org/$1",oldwikisource:"wikisource.org/wiki/$1",olpc:"wiki.laptop.org/go/$1",omegawiki:S+"omegawiki.org/Expression:$1",onelook:S+"onelook.com/?ls=b&w=$1",openlibrary:"openlibrary.org/$1",openstreetmap:"wiki.openstreetmap.org/wiki/$1",openwetware:"openwetware.org/wiki/$1",opera7wiki:"operawiki.info/$1",organicdesign:S+"organicdesign.co.nz/$1",orthodoxwiki:"orthodoxwiki.org/$1",osmwiki:"wiki.openstreetmap.org/wiki/$1",otrs:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1",otrswiki:"otrs-wiki"+C,ourmedia:S+"socialtext.net/ourmedia/index.cgi?$1",outreach:"outreach"+C,outreachwiki:"outreach"+C,owasp:S+"owasp.org/index.php/$1",panawiki:"wiki.alairelibre.net/index.php?title=$1",patwiki:"gauss.ffii.org/$1",personaltelco:"personaltelco.net/wiki/$1",petscan:"petscan.wmflabs.org/?psid=$1",phab:"phabricator.wikimedia.org/$1",phabricator:"phabricator.wikimedia.org/$1",phwiki:S+"pocketheaven.com/ph/wiki/index.php?title=$1",phpwiki:"phpwiki.sourceforge.net/phpwiki/index.php?$1",planetmath:"planetmath.org/node/$1",pmeg:S+"bertilow.com/pmeg/$1",pmid:S+"ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract",pokewiki:"pokewiki.de/$1","pokéwiki":"pokewiki.de/$1",policy:"policy.wikimedia.org/$1",proofwiki:S+"proofwiki.org/wiki/$1",pyrev:S+"mediawiki.org/wiki/Special:Code/pywikipedia/$1",pythoninfo:"wiki.python.org/moin/$1",pythonwiki:S+"pythonwiki.de/$1",pywiki:"c2.com/cgi/wiki?$1",psycle:"psycle.sourceforge.net/wiki/$1",quality:"quality"+C,quarry:"quarry.wmflabs.org/$1",regiowiki:"regiowiki.at/wiki/$1",rev:S+"mediawiki.org/wiki/Special:Code/MediaWiki/$1",revo:"purl.org/NET/voko/revo/art/$1.html",rfc:"tools.ietf.org/html/rfc$1",rheinneckar:"rhein-neckar-wiki.de/$1",robowiki:"robowiki.net/?$1",rodovid:"en.rodovid.org/wk/$1",reuterswiki:"glossary.reuters.com/index.php/$1",rowiki:"wiki.rennkuckuck.de/index.php/$1",rt:"rt.wikimedia.org/Ticket/Display.html?id=$1",s23wiki:"s23.org/wiki/$1",scholar:"scholar.google.com/scholar?q=$1",schoolswp:"schools-"+O,scores:"imslp.org/wiki/$1",scoutwiki:"en.scoutwiki.org/$1",scramble:S+"scramble.nl/wiki/index.php?title=$1",seapig:S+"seapig.org/$1",seattlewiki:"seattle.wikia.com/wiki/$1",slwiki:"wiki.secondlife.com/wiki/$1","semantic-mw":S+"semantic-mediawiki.org/wiki/$1",senseislibrary:"senseis.xmp.net/?$1",sharemap:"sharemap.org/$1",silcode:S+"sil.org/iso639-3/documentation.asp?id=$1",slashdot:"slashdot.org/article.pl?sid=$1",sourceforge:"sourceforge.net/$1",spcom:"spcom"+C,species:"species"+C,squeak:"wiki.squeak.org/squeak/$1",stats:"stats.wikimedia.org/$1",stewardry:"tools.wmflabs.org/meta/stewardry/?wiki=$1",strategy:"strategy"+C,strategywiki:"strategywiki.org/wiki/$1",sulutil:"meta.wikimedia.org/wiki/Special:CentralAuth/$1",swtrain:"train.spottingworld.com/$1",svn:"svn.wikimedia.org/viewvc/mediawiki/$1?view=log",swinbrain:"swinbrain.ict.swin.edu.au/wiki/$1",tabwiki:S+"tabwiki.com/index.php/$1",tclerswiki:"wiki.tcl.tk/$1",technorati:S+"technorati.com/search/$1",tenwiki:"ten."+O,testwiki:"test."+O,testwikidata:"test.wikidata.org/wiki/$1",test2wiki:"test2."+O,tfwiki:"tfwiki.net/wiki/$1",thelemapedia:S+"thelemapedia.org/index.php/$1",theopedia:S+"theopedia.com/$1",thinkwiki:S+"thinkwiki.org/wiki/$1",ticket:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1",tmbw:"tmbw.net/wiki/$1",tmnet:S+"technomanifestos.net/?$1",tmwiki:S+"EasyTopicMaps.com/?page=$1",toolforge:"tools.wmflabs.org/$1",toollabs:"tools.wmflabs.org/$1",tools:"toolserver.org/$1",tswiki:S+"mediawiki.org/wiki/Toolserver:$1",translatewiki:"translatewiki.net/wiki/$1",tviv:"tviv.org/wiki/$1",tvtropes:S+"tvtropes.org/pmwiki/pmwiki.php/Main/$1",twiki:"twiki.org/cgi-bin/view/$1",tyvawiki:S+"tyvawiki.org/wiki/$1",umap:"umap.openstreetmap.fr/$1",uncyclopedia:"en.uncyclopedia.co/wiki/$1",unihan:S+"unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1",unreal:"wiki.beyondunreal.com/wiki/$1",urbandict:S+"urbandictionary.com/define.php?term=$1",usej:S+"tejo.org/usej/$1",usemod:S+"usemod.com/cgi-bin/wiki.pl?$1",usability:"usability"+C,utrs:"utrs.wmflabs.org/appeal.php?id=$1",vikidia:"fr.vikidia.org/wiki/$1",vlos:"tusach.thuvienkhoahoc.com/wiki/$1",vkol:"kol.coldfront.net/thekolwiki/index.php/$1",voipinfo:S+"voip-info.org/wiki/view/$1",votewiki:"vote"+C,werelate:S+"werelate.org/wiki/$1",wg:"wg-en."+O,wikia:S+"wikia.com/wiki/w:c:$1",wikiasite:S+"wikia.com/wiki/w:c:$1",wikiapiary:"wikiapiary.com/wiki/$1",wikibooks:"en.wikibooks.org/wiki/$1",wikichristian:S+"wikichristian.org/index.php?title=$1",wikicities:S+"wikia.com/wiki/w:$1",wikicity:S+"wikia.com/wiki/w:c:$1",wikiconference:"wikiconference.org/wiki/$1",wikidata:S+"wikidata.org/wiki/$1",wikif1:S+"wikif1.org/$1",wikifur:"en.wikifur.com/wiki/$1",wikihow:S+"wikihow.com/$1",wikiindex:"wikiindex.org/$1",wikilemon:"wiki.illemonati.com/$1",wikilivres:"wikilivres.org/wiki/$1",wikilivresru:"wikilivres.ru/$1","wikimac-de":"apfelwiki.de/wiki/Main/$1",wikimedia:"foundation"+C,wikinews:"en.wikinews.org/wiki/$1",wikinfo:"wikinfo.org/w/index.php/$1",wikinvest:"meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest",wikiotics:"wikiotics.org/$1",wikipapers:"wikipapers.referata.com/wiki/$1",wikipedia:"en."+O,wikipediawikipedia:"en.wikipedia.org/wiki/Wikipedia:$1",wikiquote:"en.wikiquote.org/wiki/$1",wikisophia:"wikisophia.org/index.php?title=$1",wikisource:"en.wikisource.org/wiki/$1",wikispecies:"species"+C,wikispot:"wikispot.org/?action=gotowikipage&v=$1",wikiskripta:S+"wikiskripta.eu/index.php/$1",labsconsole:"wikitech"+C,wikiti:"wikiti.denglend.net/index.php?title=$1",wikiversity:"en.wikiversity.org/wiki/$1",wikivoyage:"en.wikivoyage.org/wiki/$1",betawikiversity:"beta.wikiversity.org/wiki/$1",wikiwikiweb:"c2.com/cgi/wiki?$1",wiktionary:"en.wiktionary.org/wiki/$1",wipipedia:"wipipedia.org/index.php/$1",wlug:S+"wlug.org.nz/$1",wmam:"am"+C,wmar:S+"wikimedia.org.ar/wiki/$1",wmat:"mitglieder.wikimedia.at/$1",wmau:"wikimedia.org.au/wiki/$1",wmbd:"bd"+C,wmbe:"be"+C,wmbr:"br"+C,wmca:"ca"+C,wmch:S+"wikimedia.ch/$1",wmcl:S+"wikimediachile.cl/index.php?title=$1",wmcn:"cn"+C,wmco:"co"+C,wmcz:S+"wikimedia.cz/web/$1",wmdc:"wikimediadc.org/wiki/$1",securewikidc:"secure.wikidc.org/$1",wmde:"wikimedia.de/wiki/$1",wmdk:"dk"+C,wmee:"ee"+C,wmec:"ec"+C,wmes:S+"wikimedia.es/wiki/$1",wmet:"ee"+C,wmfdashboard:"outreachdashboard.wmflabs.org/$1",wmfi:"fi"+C,wmfr:"wikimedia.fr/$1",wmge:"ge"+C,wmhi:"hi"+C,wmhk:"meta.wikimedia.org/wiki/Wikimedia_Hong_Kong",wmhu:"wikimedia.hu/wiki/$1",wmid:"id"+C,wmil:S+"wikimedia.org.il/$1",wmin:"wiki.wikimedia.in/$1",wmit:"wiki.wikimedia.it/wiki/$1",wmke:"meta.wikimedia.org/wiki/Wikimedia_Kenya",wmmk:"mk"+C,wmmx:"mx"+C,wmnl:"nl"+C,wmnyc:"nyc"+C,wmno:"no"+C,"wmpa-us":"pa-us"+C,wmph:"meta.wikimedia.org/wiki/Wikimedia_Philippines",wmpl:"pl"+C,wmpt:"pt"+C,wmpunjabi:"punjabi"+C,wmromd:"romd"+C,wmrs:"rs"+C,wmru:"ru"+C,wmse:"se"+C,wmsk:"wikimedia.sk/$1",wmtr:"tr"+C,wmtw:"wikimedia.tw/wiki/index.php5/$1",wmua:"ua"+C,wmuk:"wikimedia.org.uk/wiki/$1",wmve:"wikimedia.org.ve/wiki/$1",wmza:"wikimedia.org.za/wiki/$1",wm2005:"wikimania2005"+C,wm2006:"wikimania2006"+C,wm2007:"wikimania2007"+C,wm2008:"wikimania2008"+C,wm2009:"wikimania2009"+C,wm2010:"wikimania2010"+C,wm2011:"wikimania2011"+C,wm2012:"wikimania2012"+C,wm2013:"wikimania2013"+C,wm2014:"wikimania2014"+C,wm2015:"wikimania2015"+C,wm2016:"wikimania2016"+C,wm2017:"wikimania2017"+C,wm2018:"wikimania2018"+C,wmania:"wikimania"+C,wikimania:"wikimania"+C,wmteam:"wikimaniateam"+C,wmf:"foundation"+C,wmfblog:"blog.wikimedia.org/$1",wmdeblog:"blog.wikimedia.de/$1",wookieepedia:"starwars.wikia.com/wiki/$1",wowwiki:S+"wowwiki.com/$1",wqy:"wqy.sourceforge.net/cgi-bin/index.cgi?$1",wurmpedia:"wurmpedia.com/index.php/$1",viaf:"viaf.org/viaf/$1",zrhwiki:S+"zrhwiki.ch/wiki/$1",zum:"wiki.zum.de/$1",zwiki:S+"zwiki.org/$1",m:"meta"+C,meta:"meta"+C,sep11:"sep11."+O,d:S+"wikidata.org/wiki/$1",minnan:"zh-min-nan."+O,nb:"no."+O,"zh-cfr":"zh-min-nan."+O,"zh-cn":"zh."+O,"zh-tw":"zh."+O,nan:"zh-min-nan."+O,vro:"fiu-vro."+O,cmn:"zh."+O,lzh:"zh-classical."+O,rup:"roa-rup."+O,gsw:"als."+O,"be-tarask":"be-x-old."+O,sgs:"bat-smg."+O,egl:"eml."+O,w:"en."+O,wikt:"en.wiktionary.org/wiki/$1",q:"en.wikiquote.org/wiki/$1",b:"en.wikibooks.org/wiki/$1",n:"en.wikinews.org/wiki/$1",s:"en.wikisource.org/wiki/$1",chapter:"en"+C,v:"en.wikiversity.org/wiki/$1",voy:"en.wikivoyage.org/wiki/$1"};Object.keys(E).forEach(e=>{N[e]=e+".wikipedia.org/wiki/$1"});var q=function(e){let t=e.page||"";if(-1!==t.indexOf(":")){let i=t.match(/^(.*):(.*)/);if(null===i)return e;let a=i[1]||"";if(a=a.toLowerCase(),-1!==a.indexOf(":")){let[,t,i]=a.match(/^:?(.*):(.*)/);if(N.hasOwnProperty(t)&&!1===E.hasOwnProperty(i))return e;e.wiki={wiki:t,lang:i}}else{if(!1===N.hasOwnProperty(a))return e;e.wiki=a}e.page=i[2]}return e};const L=/^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i,A=/\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g,T=/\[\[(.{0,160}?)\]\]([a-z]+)?/gi;var P=function(e){let t=[];if(t=function(e,t){return t.replace(A,(function(t,i,a,n){return n=n||"",e.push({type:"external",site:i+a,text:n.trim(),raw:t}),n})),e}(t,e),t=function(e,t){return t.replace(T,(function(t,i,a){let n=null,r=i;if(i.match(/\|/)&&(r=(i=i.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g,"$1$2")).replace(/(.{2,100})\|.{0,200}/,"$1"),n=i.replace(/.{2,100}?\|/,""),null===n&&r.match(/\|$/)&&(r=r.replace(/\|$/,""),n=r)),r.match(L))return i;let o={page:r,raw:t};return o.page=o.page.replace(/#(.*)/,(e,t)=>(o.anchor=t,"")),o=q(o),o.wiki&&(o.type="interwiki"),null!==n&&n!==o.page&&(o.text=n),a&&(o.text=o.text||o.page,o.text+=a.trim()),o.page&&!1===/^[A-Z]/.test(o.page)&&(o.text||(o.text=o.page),o.page=o.page),e.push(o),i})),e}(t,e),0!==t.length)return t};const D=new RegExp("^[ \n\t]*?#("+f.redirects.join("|")+") *?(\\[\\[.{2,180}?\\]\\])","i");var I=function(e){return!(!e||e.length>500)&&D.test(e)},R=function(e){let t=e.match(D);if(t&&t[2]){return(P(t[2])||[])[0]}return{}};const M=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],U=`< ?(${M.join("|")}) ?[^>]{0,200}?>`,B=`< ?/ ?(${M.join("|")}) ?>`,F=new RegExp(`${U}[\\s\\S]+?${B}`,"ig");var K=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(F," ")).replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%\.\-#:;'" ]{2,100}\/? ?> ?/g," ")).replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g," ")).replace(/(.*?)<\/i>/g,"''$1''")).replace(/(.*?)<\/b>/g,"'''$1'''")).replace(/(.*?)<\/sub>/g,"{{sub|$1}}")).replace(/(.*?)<\/sup>/g,"{{sup|$1}}")).replace(/ ?<[ \/]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ \/]?> ?/g," ")).replace(/ ?<[ \/]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ \/]?> ?/g," ")).replace(/ ?<[ \/]?h[0-9][ \/]?> ?/g," ")).replace(/ ?< ?br ?\/> ?/g,"\n")).trim()};var W=function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(//g,"")).replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi,"")).replace(/~~{1,3}/g,"")).replace(/\r/g,"")).replace(/\u3002/g,". ")).replace(/----/g,"")).replace(/\{\{\}\}/g," – ")).replace(/\{\{\\\}\}/g," / ")).replace(/ /g," "),e=(e=(e=K(e)).replace(/\([,;: ]+?\)/g,"")).replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,"")};const Y=/[\\\.$]/,Z=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")};var H=function(e={}){let t=Object.keys(e);for(let i=0;ie.json(t));a.length>0&&(i.paragraphs=a)}if(!0===t.images){let a=e.images().map(e=>e.json(t));a.length>0&&(i.images=a)}if(!0===t.tables){let a=e.tables().map(e=>e.json(t));a.length>0&&(i.tables=a)}if(!0===t.templates){let a=e.templates();a.length>0&&(i.templates=a,!0===t.encode&&i.templates.forEach(e=>H(e)))}if(!0===t.infoboxes){let a=e.infoboxes().map(e=>e.json(t));a.length>0&&(i.infoboxes=a)}if(!0===t.lists){let a=e.lists().map(e=>e.json(t));a.length>0&&(i.lists=a)}if(!0===t.references||!0===t.citations){let a=e.references().map(e=>e.json(t));a.length>0&&(i.references=a)}return!0===t.sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const J={type:"internal"},X=function(e){e=e||{},e=Object.assign({},J,e),Object.defineProperty(this,"data",{enumerable:!1,value:e})},Q={text:function(e){return void 0!==e&&(this.data.text=e),this.data.text||this.data.page||""},json:function(){let e={text:this.data.text,type:this.type()};"internal"===e.type?e.page=this.page():"interwiki"===e.type?e.wiki=this.wiki():e.site=this.site();let t=this.anchor();return t&&(e.anchor=t),e},page:function(e){return void 0!==e&&(this.data.page=e),this.data.page},anchor:function(e){return void 0!==e&&(this.data.anchor=e),this.data.anchor||""},wiki:function(e){return void 0!==e&&(this.data.wiki=e),this.data.wiki},type:function(e){return void 0!==e&&(this.data.type=e),this.data.type},site:function(e){return void 0!==e&&(this.data.site=e),this.data.site},href:function(){let e=this.type();if("external"===e)return this.site();let t=this.page();t=t.replace(/ /g,"_"),t=encodeURIComponent(t);let i="";if("interwiki"===e){let e=this.wiki();i="https://en.wikipedia.org/wiki/$1",N.hasOwnProperty(e)&&(i="http://"+N[this.wiki()]),i=i.replace(/\$1/g,t)}else i="./"+this.page();return this.anchor()&&(i+="#"+this.anchor()),i}};Object.keys(Q).forEach(e=>{X.prototype[e]=Q[e]});var ee=X;var te=function(e){let t=e.text,i=P(t)||[];e.links=i.map(e=>(t=t.replace(e.raw,e.text||e.page||""),delete e.raw,new ee(e))),t=t.replace(/\[\[File:(.{2,80}?)\|([^\]]+?)\]\](\w{0,5})/g,"$1"),e.text=t};var ie=function(e){let t=[],i=[],a=e.text||"";return a=a.replace(/'''''(.{0,200}?)'''''/g,(e,a)=>(t.push(a),i.push(a),a)),a=a.replace(/''''(.{0,200}?)''''/g,(e,i)=>(t.push(`'${i}'`),`'${i}'`)),a=a.replace(/'''(.{0,200}?)'''/g,(e,i)=>(t.push(i),i)),a=a.replace(/''(.{0,200}?)''/g,(e,t)=>(i.push(t),t)),e.text=a,t.length>0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e};const ae=/^[0-9,.]+$/,ne={text:!0,links:!0,formatting:!0,numbers:!0};var re=function(e,t){t=d(t,ne);let i={},a=e.text();if(!0===t.text&&(i.text=a),!0===t.numbers&&ae.test(a)){let e=Number(a.replace(/,/g,""));!1===isNaN(e)&&(i.number=e)}return t.links&&e.links().length>0&&(i.links=e.links().map(e=>e.json())),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i};const oe=function(e={}){Object.defineProperty(this,"data",{enumerable:!1,value:e})},se={links:function(e){let t=this.data.links||[];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page===e);return void 0===i?[]:[i]}return t},interwiki:function(){return this.links().filter(e=>void 0!==e.wiki)},bolds:function(){return this.data&&this.data.fmt&&this.data.fmt.bold&&this.data.fmt.bold||[]},italics:function(){return this.data&&this.data.fmt&&this.data.fmt.italic&&this.data.fmt.italic||[]},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return re(this,e)},isEmpty:function(){return""===this.data.text}};Object.keys(se).forEach(e=>{oe.prototype[e]=se[e]});const le={links:"link",bolds:"bold",italics:"italic"};Object.keys(le).forEach(e=>{oe.prototype[le[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}}),oe.prototype.plaintext=oe.prototype.text;var ce=oe;const ue=["ad","adj","adm","adv","al","alta","approx","apr","apt","arc","ariz","assn","asst","atty","aug","ave","ba","bc","bl","bldg","blvd","brig","bros","ca","cal","calif","capt","cca","cg","cl","cm","cmdr","co","col","colo","comdr","conn","corp","cpl","cres","ct","cyn","dak","dec","def","dept","det","dg","dist","dl","dm","dr","ea","eg","eng","esp","esq","est","etc","ex","exp","feb","fem","fig","fl oz","fl","fla","fm","fr","ft","fy","ga","gal","gb","gen","gov","hg","hon","hr","hrs","hwy","hz","ia","ida","ie","inc","inf","jan","jd","jr","jul","jun","kan","kans","kb","kg","km","kmph","lat","lb","lit","llb","lm","lng","lt","ltd","lx","ma","maj","mar","masc","mb","md","messrs","mg","mi","min","minn","misc","mister","ml","mlle","mm","mme","mph","mps","mr","mrs","ms","mstr","mt","neb","nebr","nee","no","nov","oct","okla","ont","op","ord","oz","pa","pd","penn","penna","phd","pl","pp","pref","prob","prof","pron","ps","psa","pseud","pt","pvt","qt","que","rb","rd","rep","reps","res","rev","sask","sec","sen","sens","sep","sept","sfc","sgt","sir","situ","sq ft","sq","sr","ss","st","supt","surg","tb","tbl","tbsp","tce","td","tel","temp","tenn","tex","tsp","univ","usafa","ut","va","vb","ver","vet","vitro","vivo","vol","vs","vt","wis","wisc","wr","wy","wyo","yb","µg"].concat("[^]][^]]"),pe=new RegExp("(^| |')("+ue.join("|")+")[.!?] ?$","i"),me=new RegExp("[ |.|'|[][A-Z].? *?$","i"),de=new RegExp("\\.\\.\\.* +?$"),he=/ c\. $/,ge=new RegExp("[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]","iu");var fe=function(e){let t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;let a=function(e){let t=e.split(/(\n+)/);return t=t.filter(e=>e.match(/\S/)),t=t.map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s+|$)/g)})),function(e){let t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t)}(e);for(let e=0;ei.length)return!1;const a=e.match(/"/g);return!(a&&a.length%2!=0&&e.length<900)}(n))?i[e+1]=i[e]+(i[e+1]||""):i[e]&&i[e].length>0&&(t.push(i[e]),i[e]="");var n;return 0===t.length?[e]:t};function ke(e){let t={text:e};var i;return te(t),t.text=(i=(i=(i=t.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(i=r.trim_whitespace(i)).replace(/ +\.$/,".")),t=ie(t),new ce(t)}var be=ke,we=function(e){let t=fe(e.wiki);t=t.map(ke),t[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t};var ye=function(e){return e=(e=e.replace(/^{{/,"")).replace(/}}$/,"")};var $e=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")};var xe=function(e){let t=e.split(/\n?\|/);t.forEach((e,i)=>{null!==e&&(/\[\[[^\]]+$/.test(e)||/{{[^}]+$/.test(e)||e.split("{{").length!==e.split("}}").length||e.split("[[").length!==e.split("]]").length)&&(t[i+1]=t[i]+"|"+t[i+1],t[i]=null)}),t=t.filter(e=>null!==e),t=t.map(e=>(e||"").trim());for(let e=t.length-1;e>=0;e-=1){""===t[e]&&t.pop();break}return t};const ve=/^[a-z0-9\u00C0-\u00FF\u4e00-\u9faf\._\- '()œ]+=/iu,je={template:!0,list:!0,prototype:!0};var _e=function(e,t){let i=0;return e.reduce((e,a="")=>{if(a=a.trim(),!0===ve.test(a)){let t=function(e){let t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();let a=t.slice(1).join("=");return je.hasOwnProperty(i)&&(i="_"+i),{key:i,val:a.trim()}}(a);if(t.key)return e[t.key]=t.val,e}if(t&&t[i]){e[t[i]]=a}else e.list=e.list||[],e.list.push(a);return i+=1,e},{})};const ze={classname:!0,style:!0,align:!0,margin:!0,left:!0,break:!0,boxsize:!0,framestyle:!0,item_style:!0,collapsible:!0,list_style_type:!0,"list-style-type":!0,colwidth:!0};var Ee=function(e){return Object.keys(e).forEach(t=>{!0===ze[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]}),e};const Oe=be,Ce=function(e,t){let i=Oe(e);return"json"===t?i.json():"raw"===t?i:i.text()};var Se=function(e,t=[],i){e=ye(e||"");let a=xe(e),n=a.shift(),r=_e(a,t);return r=Ee(r),r[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach(e=>{r[e]="list"!==e?Ce(r[e],i):r[e].map(e=>Ce(e,i))}),n&&(r.template=$e(n)),r};const Ne=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},qe={title:function(){let e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){let t=[];if("number"==typeof e)return t[e];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},text:function(){return""},json:function(e={}){let t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=H(t)),t}};Object.keys(qe).forEach(e=>{Ne.prototype[e]=qe[e]});var Le=Ne;const Ae=be,Te=function(e){return/^ *?\{\{ *?(cite|citation)/i.test(e)&&/\}\} *?$/.test(e)&&!1===/citation needed/i.test(e)},Pe=function(e){let t=Se(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},De=function(e){return{template:"citation",type:"inline",data:{},inline:Ae(e)||{}}};var Ie=function(e){let t=[],i=e._wiki;i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Te(a)){let e=Pe(a);e&&t.push(e),i=i.replace(a,"")}else t.push(De(a));return" "})),i=i.replace(/ ?]{0,200}?\/> ?/gi," "),i=i.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Te(a)){let e=Pe(a);e&&t.push(e),i=i.replace(a,"")}else t.push(De(a));return" "})),i=i.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g," "),e._references=t.map(e=>new Le(e)),e._wiki=i};const{trim_whitespace:Re}=r,Me=be,Ue=/^(={1,5})(.{1,200}?)={1,5}$/;var Be=function(e,t){let i=t.match(Ue);if(!i)return e.title="",e.depth=0,e;let a=i[2]||"";a=Me(a).text(),a=a.replace(/\{\{.+?\}\}/,"");let n={_wiki:a};Ie(n),a=n._wiki,a=Re(a);let r=0;return i[1]&&(r=i[1].length-2),e.title=a,e.depth=r,e};var Fe=function(e){let t=[],i=[];e=function(e){return e=e.filter(e=>e&&!0!==/^\|\+/.test(e)),!0===/^{\|/.test(e[0])&&e.shift(),!0===/^\|}/.test(e[e.length-1])&&e.pop(),!0===/^\|-/.test(e[0])&&e.shift(),e}(e);for(let a=0;a0&&(t.push(i),i=[]):(n=n.split(/(?:\|\||!!)/),!n[0]&&n[1]&&n.shift(),n.forEach(e=>{e=(e=e.replace(/^\| */,"")).trim(),i.push(e)}))}return i.length>0&&t.push(i),t};const Ke=/.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/,We=/.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/;var Ye=function(e){return e=function(e){return e.forEach((t,i)=>{t.forEach((a,n)=>{let r=a.match(Ke);if(null!==r){let o=parseInt(r[1],10);a=a.replace(Ke,""),t[n]=a;for(let t=i+1;t{e.forEach((t,i)=>{let a=t.match(We);if(null!==a){let n=parseInt(a[1],10);e[i]=t.replace(We,"");for(let t=1;te.length>0)}(e))};const Ze=be,He=/^!/,Ge={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},Ve=function(e){return(e=Ze(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},Je=function(e){if(e.length<=3)return[];let t=e[0].slice(0);t=t.map(e=>(e=e.replace(/^\! */,""),e=Ze(e).text(),e=(e=Ve(e)).toLowerCase()));for(let i=0;ie.trim()),i=Fe(t);if(i=i.filter(e=>e),0===i.length)return[];i=function(e){return e.filter(e=>1!==e.length||!e[0]||!He.test(e[0])||!1!==/rowspan/i.test(e[0]))}(i),i=Ye(i);let a=function(e=[]){let t=[];var i;(i=(i=e[0])||[]).length-i.filter(e=>e).length>3&&e.shift();let a=e[0];return a&&a[0]&&a[1]&&(/^!/.test(a[0])||/^!/.test(a[1]))&&(t=a.map(e=>(e=e.replace(/^\! */,""),Ve(e))),e.shift()),a=e[0],a&&a[0]&&a[1]&&/^!/.test(a[0])&&/^!/.test(a[1])&&(a.forEach((e,i)=>{e=e.replace(/^\! */,""),e=Ve(e),!0===Boolean(e)&&(t[i]=e)}),e.shift()),t}(i);if(!a||a.length<=1){a=Je(i);let e=i[i.length-1]||[];a.length<=1&&e.length>2&&(a=Je(i.slice(1)),a.length>0&&(i=i.slice(2)))}return i.map(e=>function(e,t){let i={};return e.forEach((e,a)=>{let n=t[a]||"col"+(a+1),r=Ze(e);r.text(Ve(r.text())),i[n]=r}),i}(e,a))};var Qe=function(e,t){return e.map(e=>{let i={};return Object.keys(e).forEach(t=>{i[t]=e[t].json()}),!0===t.encode&&(i=H(i)),i})};const et={},tt=function(e=""){return e=(e=(e=(e=e.toLowerCase()).replace(/[_-]/g," ")).replace(/\(.*?\)/,"")).trim()},it=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},at={links(e){let t=[];if(this.data.forEach(e=>{Object.keys(e).forEach(i=>{t=t.concat(e[i].links())})}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},get(e){if("string"==typeof e){let t=tt(e);return this.data.map(e=>e[t]?e[t].text():null)}return e=e.map(tt),this.data.map(t=>e.reduce((e,i)=>(t[i]&&(e[i]=t[i].text()),e),{}))},keyValue(e){let t=this.json(e);return t.forEach(e=>{Object.keys(e).forEach(t=>{e[t]=e[t].text})}),t},json(e){return e=d(e,et),Qe(this.data,e)},text:()=>""};at.keyvalue=at.keyValue,at.keyval=at.keyValue,Object.keys(at).forEach(e=>{it.prototype[e]=at[e]});var nt=it;const rt=/^\s*{\|/,ot=/^\s*\|}/;var st=function(e){let t=[],i=e._wiki,a=i.split("\n"),n=[];for(let e=0;e0&&(n[n.length-1]+="\n"+a[e]);else{n[n.length-1]+="\n"+a[e];let i=n.pop();t.push(i)}else n.push(a[e]);let r=[];t.forEach(e=>{if(e){i=i.replace(e+"\n",""),i=i.replace(e,"");let t=Xe(e);t&&t.length>0&&r.push(new nt(t))}}),r.length>0&&(e._tables=r),e._wiki=i};const lt={sentences:!0};var ct=function(e,t){let i={};return!0===(t=d(t,lt)).sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const ut={sentences:!0,lists:!0,images:!0},pt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},mt={sentences:function(){return this.data.sentences||[]},references:function(){return this.data.references},lists:function(){return this.data.lists},images(){return this.data.images||[]},links:function(e){let t=[];if(this.sentences().forEach(i=>{t=t.concat(i.links(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},interwiki(){let e=[];return this.sentences().forEach(t=>{e=e.concat(t.interwiki())}),e||[]},text:function(e){e=d(e,ut);let t=this.sentences().map(t=>t.text(e)).join(" ");return this.lists().forEach(e=>{t+="\n"+e.text()}),t},json:function(e){return e=d(e,ut),ct(this,e)}};mt.citations=mt.references,Object.keys(mt).forEach(e=>{pt.prototype[e]=mt[e]});const dt={sentences:"sentence",references:"reference",citation:"citations",lists:"list",images:"image",links:"link"};Object.keys(dt).forEach(e=>{pt.prototype[dt[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}});var ht=pt;var gt=function(e){let t=[],i=[];const a=e.split("");let n=0;for(let r=0;r0){let e=0,a=0;for(let t=0;ta&&i.push("]"),t.push(i.join("")),i=[]}}return t};const ft=be,kt=new RegExp("("+f.images.join("|")+"):","i");let bt=`(${f.images.join("|")})`;const wt=new RegExp(bt+":(.+?)[\\||\\]]","iu"),yt={thumb:!0,thumbnail:!0,border:!0,right:!0,left:!0,center:!0,top:!0,bottom:!0,none:!0,upright:!0,baseline:!0,middle:!0,sub:!0,super:!0};var $t=function(e,t){let i=e.wiki;gt(i).forEach((function(a){if(!0===kt.test(a)){e.images=e.images||[];let n=function(e,t){let i=e.match(wt);if(null===i||!i[2])return null;let a=`${i[1]}:${i[2]||""}`;a=a.trim();let n=a.charAt(0).toUpperCase()+a.substring(1);if(n=n.replace(/ /g,"_"),n){let i={file:a,lang:t._lang,domain:t._domain};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");let n=Se(e),r=n.list||[];return n.alt&&(i.alt=n.alt),r=r.filter(e=>!1===yt.hasOwnProperty(e)),r[r.length-1]&&(i.caption=ft(r[r.length-1])),new z(i)}return null}(a,t);n&&e.images.push(n),i=i.replace(a,"")}})),e.wiki=i};const xt={},vt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},jt={lines(){return this.data},links(e){let t=[];if(this.lines().forEach(e=>{t=t.concat(e.links())}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},json(e){return e=d(e,xt),this.lines().map(t=>t.json(e))},text(){return((e,t)=>e.map(e=>" * "+e.text(t)).join("\n"))(this.data)}};Object.keys(jt).forEach(e=>{vt.prototype[e]=jt[e]});var _t=vt;const zt=be,Et=/^[#\*:;\|]+/,Ot=/^\*+[^:,\|]{4}/,Ct=/^ ?\#[^:,\|]{4}/,St=/[a-z_0-9\]\}]/i,Nt=function(e){return Et.test(e)||Ot.test(e)||Ct.test(e)},qt=function(e,t){let i=[];for(let a=t;ae&&St.test(e)),i=function(e){let t=1;e=e.filter(e=>e);for(let i=0;i0&&(i.push(a),e+=a.length-1)}else a.push(t[e]);e.lists=i.map(e=>new _t(e)),e.wiki=a.join("\n")}};var Pt=function(e,t){let i=e._wiki,a=i.split(At);a=a.filter(e=>e&&e.trim().length>0),a=a.map(e=>{let i={wiki:e,lists:[],sentences:[],images:[]};return Tt.list(i),Tt.image(i,t),Lt(i),new ht(i)}),e._wiki=i,e._paragraphs=a};const Dt="{";var It=function(e){let t=0,i=[],a=[];for(let n=e.indexOf(Dt);-1!==n&&n0?n++:n=e.indexOf(Dt,n+1)){let r=e[n];if(r===Dt&&(t+=1),t>0){if("}"===r&&(t-=1,0===t)){a.push(r);let e=a.join("");a=[],/\{\{/.test(e)&&/\}\}/.test(e)&&i.push(e);continue}if(1===t&&r!==Dt&&"}"!==r){t=0,a=[];continue}a.push(r)}}return i};var Rt=function(e){let t=null;return t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+?)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1],t&&(t=t.replace(/:.*/,""),t=$e(t)),t||null};const Mt=/\{\{/,Ut=function(e){return{body:e=e.replace(/#invoke:/,""),name:Rt(e),children:[]}},Bt=function(e){let t=e.body.substr(2);return t=t.replace(/\}\}$/,""),e.children=It(t),e.children=e.children.map(Ut),0===e.children.length||e.children.forEach(e=>{let t=e.body.substr(2);return Mt.test(t)?Bt(e):null}),e};var Ft=function(e){let t=It(e);return t=t.map(Ut),t=t.map(Bt),t};var Kt=["anchor","defaultsort","use list-defined references","void","pp","pp-move-indef","pp-semi-indef","pp-vandalism","r","#tag","div col","pope list end","shipwreck list end","starbox end","end box","end","s-end"].reduce((e,t)=>(e[t]=!0,e),{}),Wt={"gnf protein box":!0,"automatic taxobox":!0,"chembox ":!0,editnotice:!0,geobox:!0,hybridbox:!0,ichnobox:!0,infraspeciesbox:!0,mycomorphbox:!0,oobox:!0,"paraphyletic group":!0,speciesbox:!0,subspeciesbox:!0,"starbox short":!0,taxobox:!0,nhlteamseason:!0,"asian games bid":!0,"canadian federal election results":!0,"dc thomson comic strip":!0,"daytona 24 races":!0,edencharacter:!0,"moldova national football team results":!0,samurai:!0,protein:!0,"sheet authority":!0,"order-of-approx":!0,"bacterial labs":!0,"medical resources":!0,ordination:!0,"hockey team coach":!0,"hockey team gm":!0,"pro hockey team":!0,"hockey team player":!0,"hockey team start":!0,mlbbioret:!0};const Yt=new RegExp("^(subst.)?("+f.infoboxes.join("|")+")[: \n]","i"),Zt=/^infobox /i,Ht=/ infobox$/i,Gt=/$Year in [A-Z]/i;var Vt=function(e){return!0===Wt.hasOwnProperty(e)||(!!Yt.test(e)||(!(!Zt.test(e)&&!Ht.test(e))||!!Gt.test(e)))},Jt=function(e={}){let t=e.template.match(Yt),i=e.template;t&&t[0]&&(i=i.replace(t[0],"")),i=i.trim();let a={template:"infobox",type:i,data:e};return delete a.data.template,delete a.data.list,a};let Xt={imdb:"imdb name","imdb episodess":"imdb episode",localday:"currentday",localdayname:"currentdayname",localyear:"currentyear","birth date based on age at death":"birth based on age as of date","bare anchored list":"anchored list",cvt:"convert",cricon:"flagicon",sfrac:"frac",sqrt:"radic",cite:"citation","unreferenced section":"unreferenced",redir:"redirect",sisterlinks:"sister project links","main article":"main"},Qt={flagcountry:["cr","cr-rt"],trunc:["str left","str crop"],percentage:["pct","percentage"],rnd:["rndfrac","rndnear"],abbr:["tooltip","abbrv","define"],sfn:["sfnref","harvid","harvnb"],"birth date and age":["death date and age","bda"],currentmonth:["localmonth","currentmonthname","currentmonthabbrev"],currency:["monnaie","unité","nombre","nb","iso4217"],coord:["coor","coor title dms","coor title dec","coor dms","coor dm","coor dec"],"columns-list":["cmn","col-list","columnslist","collist"],nihongo:["nihongo2","nihongo3","nihongo-s","nihongo foot"],plainlist:["flatlist","ublist","plain list"],"winning percentage":["winpct","winperc"],"collapsible list":["unbulleted list","ubl"],"election box begin":["election box begin no change","election box begin no party","election box begin no party no change","election box inline begin","election box inline begin no change"],"election box candidate":["election box candidate for alliance","election box candidate minor party","election box candidate no party link no change","election box candidate with party link","election box candidate with party link coalition 1918","election box candidate with party link no change","election box inline candidate","election box inline candidate no change","election box inline candidate with party link","election box inline candidate with party link no change","election box inline incumbent"],"4teambracket":["2teambracket","4team2elimbracket","8teambracket","16teambracket","32teambracket","4roundbracket-byes","cwsbracket","nhlbracket","nhlbracket-reseed","4teambracket-nhl","4teambracket-ncaa","4teambracket-mma","4teambracket-mlb","16teambracket-two-reseeds","8teambracket-nhl","8teambracket-mlb","8teambracket-ncaa","8teambracket-afc","8teambracket-afl","8teambracket-tennis3","8teambracket-tennis5","16teambracket-nhl","16teambracket-nhl divisional","16teambracket-nhl-reseed","16teambracket-nba","16teambracket-swtc","16teambracket-afc","16teambracket-tennis3","16teambracket-tennis5"],start:["end","birth","death","start date","end date","birth date","death date","start date and age","end date and age","dob"],"start-date":["end-date","birth-date","death-date","birth-date and age","birth-date and given age","death-date and age","death-date and given age"],tl:["lts","t","tfd links","tiw","tltt","tetl","tsetl","ti","tic","tiw","tlt","ttl","twlh","tl2","tlu","demo","hatnote","xpd","para","elc","xtag","mli","mlix","#invoke","url"]};Object.keys(E).forEach(e=>{Xt["ipa-"+e]="ipa",Xt["ipac-"+e]="ipac"}),Object.keys(Qt).forEach(e=>{Qt[e].forEach(t=>{Xt[t]=e})});var ei=Xt;let ti={p1:0,p2:1,p3:2,resize:1,lang:1,"rtl-lang":1,l:2,h:1,sort:1};["defn","lino","finedetail","nobold","noitalic","nocaps","vanchor","rnd","date","taste","monthname","baseball secondary style","lang-de","nowrap","nobr","big","cquote","pull quote","small","smaller","midsize","larger","big","kbd","bigger","large","mono","strongbad","stronggood","huge","xt","xt2","!xt","xtn","xtd","dc","dcr","mxt","!mxt","mxtn","mxtd","bxt","!bxt","bxtn","bxtd","delink","pre","var","mvar","pre2","code"].forEach(e=>{ti[e]=0}),Object.keys(E).forEach(e=>{ti["lang-"+e]=0});var ii=ti;var ai={titlecase:e=>e.charAt(0).toUpperCase()+e.substring(1),sisterProjects:{wikt:"wiktionary",commons:"commons",c:"commons",commonscat:"commonscat",n:"wikinews",q:"wikiquote",s:"wikisource",a:"wikiauthor",b:"wikibooks",voy:"wikivoyage",v:"wikiversity",d:"wikidata",species:"wikispecies",m:"meta",mw:"mediawiki"},getLang:function(e){let t=e.match(/ipac?-(.+)/);return null!==t?!0===E.hasOwnProperty(t[1])?E[t[1]].english_title:t[1]:null},percentage:function(e){if(!e.numerator&&!e.denominator)return null;let t=Number(e.numerator)/Number(e.denominator);t*=100;let i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},toNumber:function(e=""){if("number"==typeof e)return e;e=(e=e.replace(/,/g,"")).replace(/−/g,"-");let t=Number(e);return isNaN(t)?e:t}},ni={ra:e=>{let t=Se(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:e=>(Se(e,["degrees"]).degrees||"")+"°",hms2deg:e=>{let t=Se(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:e=>{let t=Se(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},sortname:e=>{let t=Se(e,["first","last","target","sort"]),i=`${t.first||""} ${t.last||""}`;return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=` (${t.dab})`,t.target&&(t.target+=` (${t.dab})`)),t.target?`[[${t.target}|${i}]]`:`[[${i}]]`)},"first word":e=>{let t=Se(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:e=>{let t=Se(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":e=>{let t=Se(e,["str","start","end"]),i=parseInt(t.start,10)-1,a=parseInt(t.end,10);return t.str.substr(i,a)},reign:e=>{let t=Se(e,["start","end"]);return`(r. ${t.start} – ${t.end})`},circa:e=>"c. "+Se(e,["year"]).year,"decade link":e=>{let t=Se(e,["year"]);return`${t.year}|${t.year}s`},decade:e=>{let t=Se(e,["year"]),i=Number(t.year);return i=10*parseInt(i/10,10),i+"s"},century:e=>{let t=Se(e,["year"]),i=Number(t.year);return i=parseInt(i/100,10)+1,""+i},radic:e=>{let t=Se(e,["after","before"]);return`${t.before||""}√${t.after||""}`},"medical cases chart/row":e=>e,oldstyledate:e=>{let t=Se(e,["date","year"]);return t.year?t.date+" "+t.year:t.date},braces:e=>{let t=Se(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},hlist:e=>{let t=Se(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:e=>(Se(e).list||[]).join(", "),catlist:e=>(Se(e).list||[]).join(", "),"br separated entries":e=>(Se(e).list||[]).join("\n\n"),"comma separated entries":e=>(Se(e).list||[]).join(", "),"anchored list":e=>{let t=Se(e).list||[];return t=t.map((e,t)=>`${t+1}. ${e}`),t.join("\n\n")},"bulleted list":e=>{let t=Se(e).list||[];return t=t.filter(e=>e),t=t.map(e=>"• "+e),t.join("\n\n")},plainlist:e=>{let t=(e=ye(e)).split("|").slice(1);return t=t.join("|").split(/\n ?\* ?/),t=t.filter(e=>e),t.join("\n\n")},term:e=>Se(e,["term"]).term+":",linum:e=>{let t=Se(e,["num","text"]);return`${t.num}. ${t.text}`},"block indent":e=>{let t=Se(e);return t[1]?"\n"+t[1]+"\n":""},lbs:e=>{let t=Se(e,["text"]);return`[[${t.text} Lifeboat Station|${t.text}]]`},lbc:e=>{let t=Se(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}-class]]`},lbb:e=>{let t=Se(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}]]`},"#dateformat":e=>(e=e.replace(/:/,"|"),Se(e,["date","format"]).date),lc:e=>(e=e.replace(/:/,"|"),(Se(e,["text"]).text||"").toLowerCase()),uc:e=>(e=e.replace(/:/,"|"),(Se(e,["text"]).text||"").toUpperCase()),lcfirst:e=>{e=e.replace(/:/,"|");let t=Se(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},ucfirst:e=>{e=e.replace(/:/,"|");let t=Se(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:e=>{e=e.replace(/:/,"|");let t=Se(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:e=>{e=e.replace(/:/,"|");let t=Se(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbrlink:e=>{let t=Se(e,["abbr","page"]);return t.page?`[[${t.page}|${t.abbr}]]`:`[[${t.abbr}]]`},own:e=>{let t=Se(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},formatnum:e=>{e=e.replace(/:/,"|");let t=Se(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},frac:e=>{let t=Se(e,["a","b","c"]);return t.c?`${t.a} ${t.b}/${t.c}`:t.b?`${t.a}/${t.b}`:"1/"+t.b},convert:e=>{let t=Se(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?`${t.num} ${t.two} ${t.three} ${t.four}`:`${t.num} ${t.two} ${t.three}`:`${t.num} ${t.two}`},tl:e=>{let t=Se(e,["first","second"]);return t.second||t.first},won:e=>{let t=Se(e,["text"]);return t.place||t.text||ai.titlecase(t.template)},tag:e=>{let t=Se(e,["tag","open"]);const i={span:!0,div:!0,p:!0};return t.open&&"pair"!==t.open?"":i[t.tag]?t.content||"":`<${t.tag} ${t.attribs||""}>${t.content||""}`},plural:e=>{e=e.replace(/plural:/,"plural|");let t=Se(e,["num","word"]),i=Number(t.num),a=t.word;return 1!==i&&(/.y$/.test(a)?a=a.replace(/y$/,"ies"):a+="s"),i+" "+a},dec:e=>{let t=Se(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:e=>{let t=Se(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());let a=i||"";return t.p&&(a=t.p+a),t.s&&(a=t.s+a),(t.u||t.ul||t.upl)&&(a=a+" "+(t.u||t.ul||t.upl)),a},percentage:e=>{let t=Se(e,["numerator","denominator","decimals"]),i=ai.percentage(t);return null===i?"":i+"%"},"percent-done":e=>{let t=Se(e,["done","total","digits"]),i=ai.percentage({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":`${t.done} (${i}%) done`}},ri=[["🇦🇩","and","andorra"],["🇦🇪","are","united arab emirates"],["🇦🇫","afg","afghanistan"],["🇦🇬","atg","antigua and barbuda"],["🇦🇮","aia","anguilla"],["🇦🇱","alb","albania"],["🇦🇲","arm","armenia"],["🇦🇴","ago","angola"],["🇦🇶","ata","antarctica"],["🇦🇷","arg","argentina"],["🇦🇸","asm","american samoa"],["🇦🇹","aut","austria"],["🇦🇺","aus","australia"],["🇦🇼","abw","aruba"],["🇦🇽","ala","åland islands"],["🇦🇿","aze","azerbaijan"],["🇧🇦","bih","bosnia and herzegovina"],["🇧🇧","brb","barbados"],["🇧🇩","bgd","bangladesh"],["🇧🇪","bel","belgium"],["🇧🇫","bfa","burkina faso"],["🇧🇬","bgr","bulgaria"],["🇧🇬","bul","bulgaria"],["🇧🇭","bhr","bahrain"],["🇧🇮","bdi","burundi"],["🇧🇯","ben","benin"],["🇧🇱","blm","saint barthélemy"],["🇧🇲","bmu","bermuda"],["🇧🇳","brn","brunei darussalam"],["🇧🇴","bol","bolivia"],["🇧🇶","bes","bonaire, sint eustatius and saba"],["🇧🇷","bra","brazil"],["🇧🇸","bhs","bahamas"],["🇧🇹","btn","bhutan"],["🇧🇻","bvt","bouvet island"],["🇧🇼","bwa","botswana"],["🇧🇾","blr","belarus"],["🇧🇿","blz","belize"],["🇨🇦","can","canada"],["🇨🇨","cck","cocos (keeling) islands"],["🇨🇩","cod","congo"],["🇨🇫","caf","central african republic"],["🇨🇬","cog","congo"],["🇨🇭","che","switzerland"],["🇨🇮","civ","côte d'ivoire"],["🇨🇰","cok","cook islands"],["🇨🇱","chl","chile"],["🇨🇲","cmr","cameroon"],["🇨🇳","chn","china"],["🇨🇴","col","colombia"],["🇨🇷","cri","costa rica"],["🇨🇺","cub","cuba"],["🇨🇻","cpv","cape verde"],["🇨🇼","cuw","curaçao"],["🇨🇽","cxr","christmas island"],["🇨🇾","cyp","cyprus"],["🇨🇿","cze","czech republic"],["🇩🇪","deu","germany"],["🇩🇪","ger","germany"],["🇩🇯","dji","djibouti"],["🇩🇰","dnk","denmark"],["🇩🇲","dma","dominica"],["🇩🇴","dom","dominican republic"],["🇩🇿","dza","algeria"],["🇪🇨","ecu","ecuador"],["🇪🇪","est","estonia"],["🇪🇬","egy","egypt"],["🇪🇭","esh","western sahara"],["🇪🇷","eri","eritrea"],["🇪🇸","esp","spain"],["🇪🇹","eth","ethiopia"],["🇫🇮","fin","finland"],["🇫🇯","fji","fiji"],["🇫🇰","flk","falkland islands (malvinas)"],["🇫🇲","fsm","micronesia"],["🇫🇴","fro","faroe islands"],["🇫🇷","fra","france"],["🇬🇦","gab","gabon"],["🇬🇧","gbr","united kingdom"],["🇬🇩","grd","grenada"],["🇬🇫","guf","french guiana"],["🇬🇬","ggy","guernsey"],["🇬🇭","gha","ghana"],["🇬🇮","gib","gibraltar"],["🇬🇱","grl","greenland"],["🇬🇲","gmb","gambia"],["🇬🇳","gin","guinea"],["🇬🇵","glp","guadeloupe"],["🇬🇶","gnq","equatorial guinea"],["🇬🇷","grc","greece"],["🇬🇸","sgs","south georgia"],["🇬🇹","gtm","guatemala"],["🇬🇺","gum","guam"],["🇬🇼","gnb","guinea-bissau"],["🇬🇾","guy","guyana"],["🇭🇰","hkg","hong kong"],["🇭🇲","hmd","heard island and mcdonald islands"],["🇭🇳","hnd","honduras"],["🇭🇷","hrv","croatia"],["🇭🇹","hti","haiti"],["🇭🇺","hun","hungary"],["🇮🇩","idn","indonesia"],["🇮🇪","irl","ireland"],["🇮🇱","isr","israel"],["🇮🇲","imn","isle of man"],["🇮🇳","ind","india"],["🇮🇴","iot","british indian ocean territory"],["🇮🇶","irq","iraq"],["🇮🇷","irn","iran"],["🇮🇸","isl","iceland"],["🇮🇹","ita","italy"],["🇯🇪","jey","jersey"],["🇯🇲","jam","jamaica"],["🇯🇴","jor","jordan"],["🇯🇵","jpn","japan"],["🇰🇪","ken","kenya"],["🇰🇬","kgz","kyrgyzstan"],["🇰🇭","khm","cambodia"],["🇰🇮","kir","kiribati"],["🇰🇲","com","comoros"],["🇰🇳","kna","saint kitts and nevis"],["🇰🇵","prk","north korea"],["🇰🇷","kor","south korea"],["🇰🇼","kwt","kuwait"],["🇰🇾","cym","cayman islands"],["🇰🇿","kaz","kazakhstan"],["🇱🇦","lao","lao people's democratic republic"],["🇱🇧","lbn","lebanon"],["🇱🇨","lca","saint lucia"],["🇱🇮","lie","liechtenstein"],["🇱🇰","lka","sri lanka"],["🇱🇷","lbr","liberia"],["🇱🇸","lso","lesotho"],["🇱🇹","ltu","lithuania"],["🇱🇺","lux","luxembourg"],["🇱🇻","lva","latvia"],["🇱🇾","lby","libya"],["🇲🇦","mar","morocco"],["🇲🇨","mco","monaco"],["🇲🇩","mda","moldova"],["🇲🇪","mne","montenegro"],["🇲🇫","maf","saint martin (french part)"],["🇲🇬","mdg","madagascar"],["🇲🇭","mhl","marshall islands"],["🇲🇰","mkd","macedonia"],["🇲🇱","mli","mali"],["🇲🇲","mmr","myanmar"],["🇲🇳","mng","mongolia"],["🇲🇴","mac","macao"],["🇲🇵","mnp","northern mariana islands"],["🇲🇶","mtq","martinique"],["🇲🇷","mrt","mauritania"],["🇲🇸","msr","montserrat"],["🇲🇹","mlt","malta"],["🇲🇺","mus","mauritius"],["🇲🇻","mdv","maldives"],["🇲🇼","mwi","malawi"],["🇲🇽","mex","mexico"],["🇲🇾","mys","malaysia"],["🇲🇿","moz","mozambique"],["🇳🇦","nam","namibia"],["🇳🇨","ncl","new caledonia"],["🇳🇪","ner","niger"],["🇳🇫","nfk","norfolk island"],["🇳🇬","nga","nigeria"],["🇳🇮","nic","nicaragua"],["🇳🇱","nld","netherlands"],["🇳🇴","nor","norway"],["🇳🇵","npl","nepal"],["🇳🇷","nru","nauru"],["🇳🇺","niu","niue"],["🇳🇿","nzl","new zealand"],["🇴🇲","omn","oman"],["🇵🇦","pan","panama"],["🇵🇪","per","peru"],["🇵🇫","pyf","french polynesia"],["🇵🇬","png","papua new guinea"],["🇵🇭","phl","philippines"],["🇵🇰","pak","pakistan"],["🇵🇱","pol","poland"],["🇵🇲","spm","saint pierre and miquelon"],["🇵🇳","pcn","pitcairn"],["🇵🇷","pri","puerto rico"],["🇵🇸","pse","palestinian territory"],["🇵🇹","prt","portugal"],["🇵🇼","plw","palau"],["🇵🇾","pry","paraguay"],["🇶🇦","qat","qatar"],["🇷🇪","reu","réunion"],["🇷🇴","rou","romania"],["🇷🇸","srb","serbia"],["🇷🇺","rus","russia"],["🇷🇼","rwa","rwanda"],["🇸🇦","sau","saudi arabia"],["🇸🇧","slb","solomon islands"],["🇸🇨","syc","seychelles"],["🇸🇩","sdn","sudan"],["🇸🇪","swe","sweden"],["🇸🇬","sgp","singapore"],["🇸🇭","shn","saint helena, ascension and tristan da cunha"],["🇸🇮","svn","slovenia"],["🇸🇯","sjm","svalbard and jan mayen"],["🇸🇰","svk","slovakia"],["🇸🇱","sle","sierra leone"],["🇸🇲","smr","san marino"],["🇸🇳","sen","senegal"],["🇸🇴","som","somalia"],["🇸🇷","sur","suriname"],["🇸🇸","ssd","south sudan"],["🇸🇹","stp","sao tome and principe"],["🇸🇻","slv","el salvador"],["🇸🇽","sxm","sint maarten (dutch part)"],["🇸🇾","syr","syrian arab republic"],["🇸🇿","swz","swaziland"],["🇹🇨","tca","turks and caicos islands"],["🇹🇩","tcd","chad"],["🇹🇫","atf","french southern territories"],["🇹🇬","tgo","togo"],["🇹🇭","tha","thailand"],["🇹🇯","tjk","tajikistan"],["🇹🇰","tkl","tokelau"],["🇹🇱","tls","timor-leste"],["🇹🇲","tkm","turkmenistan"],["🇹🇳","tun","tunisia"],["🇹🇴","ton","tonga"],["🇹🇷","tur","turkey"],["🇹🇹","tto","trinidad and tobago"],["🇹🇻","tuv","tuvalu"],["🇹🇼","twn","taiwan"],["🇹🇿","tza","tanzania"],["🇺🇦","ukr","ukraine"],["🇺🇬","uga","uganda"],["🇺🇲","umi","united states minor outlying islands"],["🇺🇸","us","united states"],["🇺🇸","usa","united states"],["🇺🇾","ury","uruguay"],["🇺🇿","uzb","uzbekistan"],["🇻🇦","vat","vatican city"],["🇻🇨","vct","saint vincent and the grenadines"],["🇻🇪","ven","venezuela"],["🇻🇬","vgb","virgin islands, british"],["🇻🇮","vir","virgin islands, u.s."],["🇻🇳","vnm","viet nam"],["🇻🇺","vut","vanuatu"],["🇼🇫","wlf","wallis and futuna"],["🇼🇸","wsm","samoa"],["🇾🇪","yem","yemen"],["🇾🇹","myt","mayotte"],["🇿🇦","zaf","south africa"],["🇿🇲","zmb","zambia"],["🇿🇼 ","zwe","zimbabwe"],["🇺🇳","un","united nations"],["🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿","eng","england"],["🏴󠁧󠁢󠁳󠁣󠁴󠁿","sct","scotland"],["🏴󠁧󠁢󠁷󠁬󠁳󠁿","wal","wales"],["🇪🇺","eu","european union"]];let oi={flag:e=>{let t=Se(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();let a=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${a[0]||""} [[${a[2]}|${i}]]`},flagcountry:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} [[${i[2]}]]`},flagcu:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} ${i[2]}`},flagicon:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`[[${i[2]}|${i[0]}]]`:""},flagdeco:e=>{let t=Se(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(ri.find(e=>t.flag===e[1]||t.flag===e[2])||[])[0]||""},fb:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${i[2]} national football team|${i[2]}]]`:""},fbicon:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?` [[${i[2]} national football team|${i[0]}]]`:""},flagathlete:e=>{let t=Se(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${t.name||""}]] (${i[1].toUpperCase()})`:`[[${t.name||""}]]`}};ri.forEach(e=>{oi[e[1]]=()=>e[0]});var si=oi;const li=ai.titlecase;let ci={};["rh","rh2","yes","no","maybe","eliminated","lost","safe","active","site active","coming soon","good","won","nom","sho","longlisted","tba","success","operational","failure","partial","regional","maybecheck","partial success","partial failure","okay","yes-no","some","nonpartisan","pending","unofficial","unofficial2","usually","rarely","sometimes","any","varies","black","non-album single","unreleased","unknown","perhaps","depends","included","dropped","terminated","beta","table-experimental","free","proprietary","nonfree","needs","nightly","release-candidate","planned","scheduled","incorrect","no result","cmain","calso starring","crecurring","cguest","not yet","optional"].forEach(e=>{ci[e]=e=>{let t=Se(e,["text"]);return t.text||li(t.template)}});[["active fire","Active"],["site active","Active"],["site inactive","Inactive"],["yes2",""],["no2",""],["ya","✅"],["na","❌"],["nom","Nominated"],["sho","Shortlisted"],["tba","TBA"],["maybecheck","✔️"],["okay","Neutral"],["n/a","N/A"],["sdash","—"],["dunno","?"],["draw",""],["cnone",""],["nocontest",""]].forEach(e=>{ci[e[0]]=t=>Se(t,["text"]).text||e[1]});var ui=ci,pi=Object.assign({},{"·":"·",dot:"·",middot:"·","•":" • ",",":",","1/2":"1⁄2","1/3":"1⁄3","2/3":"2⁄3","1/4":"1⁄4","3/4":"3⁄4","–":"–",ndash:"–","en dash":"–","spaced ndash":" – ","—":"—",mdash:"—","em dash":"—","number sign":"#",ibeam:"I","&":"&",";":";",ampersand:"&",snds:" – ",snd:" – ","^":" ","!":"|","\\":" /","`":"`","=":"=",bracket:"[","[":"[","*":"*",asterisk:"*","long dash":"———",clear:"\n\n","h.":"ḥ"},ii,ni,si,ui);let mi={};["goodreads author","twitter","facebook","instagram","tumblr","pinterest","espn nfl","espn nhl","espn fc","hockeydb","fifa player","worldcat","worldcat id","nfl player","ted speaker","playmate"].forEach(e=>{mi[e]=["id","name"]});var di=mi;let hi={};["imdb title","imdb name","imdb episode","imdb event","afi film","allmovie title","allgame","tcmdb title","discogs artist","discogs label","discogs release","discogs master","librivox author","musicbrainz artist","musicbrainz label","musicbrainz recording","musicbrainz release","musicbrainz work","youtube","goodreads book","dmoz"].forEach(e=>{hi[e]=["id","title","description","section"]});var gi=hi,fi={ipa:(e,t)=>{let i=Se(e,["transcription","lang","audio"]);return i.lang=ai.getLang(i.template),i.template="ipa",t.push(i),""},ipac:(e,t)=>{let i=Se(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=ai.getLang(i.template),i.template="ipac",t.push(i),""},quote:(e,t)=>{let i=Se(e,["text","author"]);if(t.push(i),i.text){let e=`"${i.text}"`;return i.author&&(e+="\n\n",e+=" - "+i.author),e+"\n"}return""},"cite gnis":(e,t)=>{let i=Se(e,["id","name","type"]);return i.type="gnis",i.template="citation",t.push(i),""},"spoken wikipedia":(e,t)=>{let i=Se(e,["file","date"]);return i.template="audio",t.push(i),""},yel:(e,t)=>{let i=Se(e,["min"]);return t.push(i),i.min?`yellow: ${i.min||""}'`:""},subon:(e,t)=>{let i=Se(e,["min"]);return t.push(i),i.min?`sub on: ${i.min||""}'`:""},suboff:(e,t)=>{let i=Se(e,["min"]);return t.push(i),i.min?`sub off: ${i.min||""}'`:""},sfn:(e,t,i,a)=>{let n=Se(e,["author","year","location"]);return a&&(n.name=n.template,n.teplate=a),t.push(n),""},redirect:(e,t)=>{let i=Se(e,["redirect"]),a=i.list||[],n=[];for(let e=0;e{let i=Se(e),a={};Object.keys(ai.sisterProjects).forEach(e=>{!0===i.hasOwnProperty(e)&&(a[ai.sisterProjects[e]]=i[e])});let n={template:"sister project links",links:a};return t.push(n),""},"subject bar":(e,t)=>{let i=Se(e);Object.keys(i).forEach(e=>{ai.sisterProjects.hasOwnProperty(e)&&(i[ai.sisterProjects[e]]=i[e],delete i[e])});let a={template:"subject bar",links:i};return t.push(a),""},gallery:(e,t)=>{let i=Se(e),a=(i.list||[]).filter(e=>/^ *File ?:/.test(e));return a=a.map(e=>new z({file:e}).json()),i={template:"gallery",images:a},t.push(i),""},sky:(e,t)=>{let i=Se(e,["asc_hours","asc_minutes","asc_seconds","dec_sign","dec_degrees","dec_minutes","dec_seconds","distance"]),a={template:"sky",ascension:{hours:i.asc_hours,minutes:i.asc_minutes,seconds:i.asc_seconds},declination:{sign:i.dec_sign,degrees:i.dec_degrees,minutes:i.dec_minutes,seconds:i.dec_seconds},distance:i.distance};return t.push(a),""},"medical cases chart":(e,t)=>{let i=["date","deathsExpr","recoveriesExpr","casesExpr","4thExpr","5thExpr","col1","col1Change","col2","col2Change"],a=Se(e);a.data=a.data||"";let n=a.data.split("\n").map(e=>{let t=e.split(";"),a={options:new Map},n=0;for(let e=0;e{let i=Se(e);i.x&&(i.x=i.x.split(",").map(e=>e.trim())),i.y&&(i.y=i.y.split(",").map(e=>e.trim()));let a=1;for(;i["y"+a];)i["y"+a]=i["y"+a].split(",").map(e=>e.trim()),a+=1;return t.push(i),""},"historical populations":(e,t)=>{let i=Se(e);i.list=i.list||[];let a=[];for(let e=0;e{const i=/^jan /i,a=/^year /i;let n=Se(e);const r=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];let o={},s=Object.keys(n).filter(e=>i.test(e));s=s.map(e=>e.replace(i,"")),s.forEach(e=>{o[e]=[],r.forEach(t=>{let i=`${t} ${e}`;if(n.hasOwnProperty(i)){let t=ai.toNumber(n[i]);delete n[i],o[e].push(t)}})}),n.byMonth=o;let l={};return Object.keys(n).forEach(e=>{if(a.test(e)){let t=e.replace(a,"");l[t]=n[e],delete n[e]}}),n.byYear=l,t.push(n),""},"weather box/concise c":(e,t)=>{let i=Se(e);return i.list=i.list.map(e=>ai.toNumber(e)),i.byMonth={"high c":i.list.slice(0,12),"low c":i.list.slice(12,24),"rain mm":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"weather box/concise f":(e,t)=>{let i=Se(e);return i.list=i.list.map(e=>ai.toNumber(e)),i.byMonth={"high f":i.list.slice(0,12),"low f":i.list.slice(12,24),"rain inch":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"climate chart":(e,t)=>{let i=Se(e).list||[],a=i[0],n=i[38];i=i.slice(1),i=i.map(e=>(e&&"−"===e[0]&&(e=e.replace(/−/,"-")),e));let r=[];for(let e=0;e<36;e+=3)r.push({low:ai.toNumber(i[e]),high:ai.toNumber(i[e+1]),precip:ai.toNumber(i[e+2])});let o={template:"climate chart",data:{title:a,source:n,months:r}};return t.push(o),""}};let ki={"find a grave":["id","name","work","last","first","date","accessdate"],congbio:["id","name","date"],"hollywood walk of fame":["name"],"wide image":["file","width","caption"],audio:["file","text","type"],rp:["page"],"short description":["description"],"coord missing":["region"],unreferenced:["date"],uss:["ship","id"],"taxon info":["taxon","item"],"portuguese name":["first","second","suffix"],geo:["lat","lon","zoom"]};ki=Object.assign(ki,di,gi,fi);var bi=ki;var wi={math:(e,t)=>{let i=Se(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},isbn:(e,t)=>{let i=Se(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},"based on":(e,t)=>{let i=Se(e,["title","author"]);return t.push(i),`${i.title} by ${i.author||""}`},"bbl to t":(e,t)=>{let i=Se(e,["barrels"]);return t.push(i),"0"===i.barrels?i.barrels+" barrel":i.barrels+" barrels"},mpc:(e,t)=>{let i=Se(e,["number","text"]);return t.push(i),`[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${i.text||i.number}]`},pengoal:(e,t)=>(t.push({template:"pengoal"}),"✅"),penmiss:(e,t)=>(t.push({template:"penmiss"}),"❌"),"ordered list":(e,t)=>{let i=Se(e);return t.push(i),i.list=i.list||[],i.list.map((e,t)=>`${t+1}. ${e}`).join("\n\n")},"title year":(e,t,i,a,n)=>{let r=Se(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b[0-9]{4}\b/);if(e)return e[0]}return r.nomatch||""},"title century":(e,t,i,a,n)=>{let r=Se(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)(st|nd|rd|th)\b/);if(e)return e[1]||""}return r.nomatch||""},"title decade":(e,t,i,a,n)=>{let r=Se(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)s\b/);if(e)return e[1]||""}return r.nomatch||""},nihongo:(e,t)=>{let i=Se(e,["english","kanji","romaji","extra"]);t.push(i);let a=i.english||i.romaji||"";return i.kanji&&(a+=` (${i.kanji})`),a},marriage:(e,t)=>{let i=Se(e,["spouse","from","to","end"]);t.push(i);let a=i.spouse||"";return i.from&&(i.to?a+=` (m. ${i.from}-${i.to})`:a+=` (m. ${i.from})`),a},"sent off":(e,t)=>{let i=Se(e,["cards"]),a={template:"sent off",cards:i.cards,minutes:i.list||[]};return t.push(a),"sent off: "+a.minutes.map(e=>e+"'").join(", ")},transl:(e,t)=>{let i=Se(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""},"collapsible list":(e,t)=>{let i=Se(e);t.push(i);let a="";if(i.title&&(a+=`'''${i.title}'''\n\n`),!i.list){i.list=[];for(let e=1;e<10;e+=1)i[e]&&(i.list.push(i[e]),delete i[e])}return i.list=i.list.filter(e=>e),a+=i.list.join("\n\n"),a},"columns-list":(e,t)=>{let i=((Se(e).list||[])[0]||"").split(/\n/).filter(e=>e);return i=i.map(e=>e.replace(/\*/,"")),t.push({template:"columns-list",list:i}),i=i.map(e=>"• "+e),i.join("\n\n")},height:(e,t)=>{let i=Se(e);t.push(i);let a=[];return["m","cm","ft","in"].forEach(e=>{!0===i.hasOwnProperty(e)&&a.push(i[e]+e)}),a.join(" ")},sic:(e,t)=>{let i=Se(e,["one","two","three"]),a=(i.one||"")+(i.two||"");return"?"===i.one&&(a=(i.two||"")+(i.three||"")),t.push({template:"sic",word:a}),"y"===i.nolink?a:a+" [sic]"},inrconvert:(e,t)=>{let i=Se(e,["rupee_value","currency_formatting"]);t.push(i);const a={k:1e3,m:1e6,b:1e9,t:1e12,l:1e5,c:1e7,lc:1e12};if(i.currency_formatting){let e=a[i.currency_formatting]||1;i.rupee_value=i.rupee_value*e}return"inr "+(i.rupee_value||"")},frac:(e,t)=>{let i=Se(e,["a","b","c"]),a={template:"sfrac"};return i.c?(a.integer=i.a,a.numerator=i.b,a.denominator=i.c):i.b?(a.numerator=i.a,a.denominator=i.b):(a.numerator=1,a.denominator=i.a),t.push(a),a.integer?`${a.integer} ${a.numerator}⁄${a.denominator}`:`${a.numerator}⁄${a.denominator}`},"winning percentage":(e,t)=>{let i=Se(e,["wins","losses","ties"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=Number(i.ties)||0,o=a+n+r;"y"===i.ignore_ties&&(r=0),r&&(a+=r/2);let s=ai.percentage({numerator:a,denominator:o,decimals:1});return null===s?"":"."+10*s},winlosspct:(e,t)=>{let i=Se(e,["wins","losses"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=ai.percentage({numerator:a,denominator:a+n,decimals:1});return null===r?"":(r="."+10*r,`${a||0} || ${n||0} || ${r||"-"}`)},"video game release":(e,t)=>{let i=["region","date","region2","date2","region3","date3","region4","date4"],a=Se(e,i),n={template:"video game release",releases:[]};for(let e=0;e`${e.region}: ${e.date||""}`).join("\n\n")+"\n"}};const yi={"£":"GB£","¥":"¥","৳":"৳","₩":"₩","€":"€","₱":"₱","₹":"₹","₽":"₽","cn¥":"CN¥","gb£":"GB£","india rs":"₹","indian rupee symbol":"₹","indian rupee":"₹","indian rupees":"₹","philippine peso":"₱","russian ruble":"₽","SK won":"₩","turkish lira":"TRY",a$:"A$",au$:"A$",aud:"A$",bdt:"BDT",brl:"BRL",ca$:"CA$",cad:"CA$",chf:"CHF",cny:"CN¥",czk:"czk",dkk:"dkk",dkk2:"dkk",euro:"€",gbp:"GB£",hk$:"HK$",hkd:"HK$",ils:"ILS",inr:"₹",jpy:"¥",myr:"MYR",nis:"ILS",nok:"NOK",nok2:"NOK",nz$:"NZ$",nzd:"NZ$",peso:"peso",pkr:"₨",r$:"BRL",rmb:"CN¥",rub:"₽",ruble:"₽",rupee:"₹",s$:"sgd",sek:"SEK",sek2:"SEK",sfr:"CHF",sgd:"sgd",shekel:"ILS",sheqel:"ILS",ttd:"TTD",us$:"US$",usd:"US$",yen:"¥",zar:"R"},$i=(e,t)=>{let i=Se(e,["amount","code"]);t.push(i);let a=i.template||"";"currency"===a?(a=i.code,a||(i.code=a="usd")):""!==a&&"monnaie"!==a&&"unité"!==a&&"nombre"!==a&&"nb"!==a||(a=i.code),a=(a||"").toLowerCase(),"us"===a?i.code=a="usd":"uk"===a&&(i.code=a="gbp");let n=`${yi[a]||""}${i.amount||""}`;return i.code&&!yi[i.code.toLowerCase()]&&(n+=" "+i.code),n};let xi={currency:$i};Object.keys(yi).forEach(e=>{xi[e]=$i});var vi=xi;const ji=864e5,_i=30*ji,zi=365*ji,Ei=function(e){return new Date(`${e.year}-${e.month||0}-${e.date||1}`).getTime()};var Oi={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],timeSince:function(e){let t=new Date(e);if(isNaN(t.getTime()))return"";let i=(new Date).getTime()-t.getTime(),a="ago";i<0&&(a="from now",i=Math.abs(i));let n=i/1e3/60/60/24;return n<365?parseInt(n,10)+" days "+a:parseInt(n/365,10)+" years "+a},delta:function(e,t){e=Ei(e);let i=(t=Ei(t))-e,a={},n=Math.floor(i/zi,10);n>0&&(a.years=n,i-=a.years*zi);let r=Math.floor(i/_i,10);r>0&&(a.months=r,i-=a.months*_i);let o=Math.floor(i/ji,10);return o>0&&(a.days=o),a},toOrdinal:function(e){let t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"}};const Ci=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],Si=Ci.reduce((e,t,i)=>(0===i||(e[t.toLowerCase()]=i),e),{}),Ni=function(e){return e<10?"0"+e:String(e)};var qi=function(e){let t=String(e.year||"");if(void 0!==e.month&&!0===Ci.hasOwnProperty(e.month))if(void 0===e.date)t=`${Ci[e.month]} ${e.year}`;else{if(t=`${Ci[e.month]} ${e.date}, ${e.year}`,void 0!==e.hour&&void 0!==e.minute){let i=`${Ni(e.hour)}:${Ni(e.minute)}`;void 0!==e.second&&(i=i+":"+Ni(e.second)),t=i+", "+t}e.tz&&(t+=` (${e.tz})`)}return t},Li=function(e){let t={},i=["year","month","date","hour","minute","second"];for(let a=0;a{let i=Se(e,["year","month","date","hour","minute","second","timezone"]),a=Li([i.year,i.month,i.date||i.day]);return i.text=qi(a),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=` (${i.timezone})`),i.hour&&i.minute&&(i.second?i.text=`${i.hour}:${i.minute}:${i.second}, `+i.text:i.text=`${i.hour}:${i.minute}, `+i.text),i.text&&t.push(Ti(i)),i.text},natural_date:(e,t)=>{let i=Se(e,["text"]).text||"",a={};if(/^[0-9]{4}$/.test(i))a.year=parseInt(i,10);else{let e=i.replace(/[a-z]+\/[a-z]+/i,"");e=e.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");let t=new Date(e);!1===isNaN(t.getTime())&&(a.year=t.getFullYear(),a.month=t.getMonth()+1,a.date=t.getDate())}return t.push(Ti(a)),i.trim()},one_year:(e,t)=>{let i=Se(e,["year"]),a=Number(i.year);return t.push(Ti({year:a})),String(a)},two_dates:(e,t)=>{let i=Se(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){let e=Li([i.birth_year,i.birth_month,i.birth_date]);return t.push(Ti(e)),qi(e)}let a=Li([i.death_year,i.death_month,i.death_date]);return t.push(Ti(a)),qi(a)},age:e=>{let t=Pi(e);return Ai(t.from,t.to).years||0},"diff-y":e=>{let t=Pi(e),i=Ai(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":e=>{let t=Pi(e),i=Ai(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),a.join(", ")},"diff-ymd":e=>{let t=Pi(e),i=Ai(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-yd":e=>{let t=Pi(e),i=Ai(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-d":e=>{let t=Pi(e),i=Ai(t.from,t.to),a=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")}};const Ii=["January","February","March","April","May","June","July","August","September","October","November","December"];var Ri={currentday:()=>{let e=new Date;return String(e.getDate())},currentdayname:()=>{let e=new Date;return Oi.days[e.getDay()]},currentmonth:()=>{let e=new Date;return Ii[e.getMonth()]},currentyear:()=>{let e=new Date;return String(e.getFullYear())},monthyear:()=>{let e=new Date;return Ii[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":()=>{let e=new Date;return e.setMonth(e.getMonth()-1),Ii[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":()=>{let e=new Date;return e.setMonth(e.getMonth()+1),Ii[e.getMonth()]+" "+e.getFullYear()},"time ago":e=>{let t=Se(e,["date","fmt"]).date;return Oi.timeSince(t)},"birth date and age":(e,t)=>{let i=Se(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?Di.natural_date(e,t):(t.push(i),i=Li([i.year,i.month,i.day]),qi(i))},"birth year and age":(e,t)=>{let i=Se(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return Di.natural_date(e,t);t.push(i);let a=(new Date).getFullYear()-parseInt(i.birth_year,10);i=Li([i.birth_year,i.birth_month]);let n=qi(i);return a&&(n+=` (age ${a})`),n},"death year and age":(e,t)=>{let i=Se(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?Di.natural_date(e,t):(t.push(i),i=Li([i.death_year,i.death_month]),qi(i))},"birth date and age2":(e,t)=>{let i=Se(e,["at_year","at_month","at_day","birth_year","birth_month","birth_day"]);return t.push(i),i=Li([i.birth_year,i.birth_month,i.birth_day]),qi(i)},"birth based on age as of date":(e,t)=>{let i=Se(e,["age","year","month","day"]);t.push(i);let a=parseInt(i.age,10),n=parseInt(i.year,10)-a;return n&&a?`${n} (age ${i.age})`:`(age ${i.age})`},"death date and given age":(e,t)=>{let i=Se(e,["year","month","day","age"]);t.push(i),i=Li([i.year,i.month,i.day]);let a=qi(i);return i.age&&(a+=` (age ${i.age})`),a},dts:e=>{e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");let t=Se(e,["year","month","date","bc"]);return t.date&&t.month&&t.year?!0===/[a-z]/.test(t.month)?[t.month,t.date,t.year].join(" "):[t.year,t.month,t.date].join("-"):t.month&&t.year?[t.year,t.month].join("-"):t.year?(t.year<0&&(t.year=Math.abs(t.year)+" BC"),t.year):""},time:()=>{let e=new Date,t=Li([e.getFullYear(),e.getMonth(),e.getDate()]);return qi(t)},millennium:e=>{let t=Se(e,["year"]),i=Number(t.year);return i=parseInt(i/1e3,10)+1,t.abbr&&"y"===t.abbr?i<0?Oi.toOrdinal(Math.abs(i))+" BC":""+Oi.toOrdinal(i):Oi.toOrdinal(i)+" millennium"},start:Di.date,"start-date":Di.natural_date,birthdeathage:Di.two_dates,age:Di.age,"age nts":Di.age,"age in years":Di["diff-y"],"age in years and months":Di["diff-ym"],"age in years, months and days":Di["diff-ymd"],"age in years and days":Di["diff-yd"],"age in days":Di["diff-d"]};function Mi(e){let t=e.pop(),i=Number(e[0]||0),a=Number(e[1]||0),n=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;let r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+a/60+n/3600)}const Ui=function(e){if("number"!=typeof e)return e;let t=1e5;return Math.round(e*t)/t},Bi={s:!0,w:!0};var Fi=function(e){let t=Se(e);t=function(e){return e.list=e.list||[],e.list=e.list.map(t=>{let i=Number(t);if(!isNaN(i))return i;let a=t.split(/:/);return a.length>1?(e.props=e.props||{},e.props[a[0]]=a.slice(1).join(":"),null):t}),e.list=e.list.filter(e=>null!==e),e}(t);let i=function(e){const t=e.map(e=>typeof e).join("|");return 2===e.length&&"number|number"===t?{lat:e[0],lon:e[1]}:4===e.length&&"number|string|number|string"===t?(Bi[e[1].toLowerCase()]&&(e[0]*=-1),"w"===e[3].toLowerCase()&&(e[2]*=-1),{lat:e[0],lon:e[2]}):6===e.length?{lat:Mi(e.slice(0,3)),lon:Mi(e.slice(3))}:8===e.length?{lat:Mi(e.slice(0,4)),lon:Mi(e.slice(4))}:{}}(t.list);return t.lat=Ui(i.lat),t.lon=Ui(i.lon),t.template="coord",delete t.list,t};var Ki={coord:(e,t)=>{let i=Fi(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":`${i.lat||""}°N, ${i.lon||""}°W`}};const Wi=function(e,t,i,a){let n=Se(e);return a&&(n.name=n.template,n.template=a),t.push(n),""};var Yi={persondata:Wi,taxobox:Wi,citation:Wi,portal:Wi,reflist:Wi,"cite book":Wi,"cite journal":Wi,"cite web":Wi,"commons cat":Wi,"election box candidate":Wi,"election box begin":Wi,main:Wi};const Zi={adx:"adx",aim:"aim",amex:"amex",asx:"asx",athex:"athex",b3:"b3","B3 (stock exchange)":"B3 (stock exchange)",barbadosse:"barbadosse",bbv:"bbv",bcba:"bcba",bcs:"bcs",bhse:"bhse",bist:"bist",bit:"bit","bm&f bovespa":"b3","bm&f":"b3",bmad:"bmad",bmv:"bmv","bombay stock exchange":"bombay stock exchange","botswana stock exchange":"botswana stock exchange",bpse:"bpse",bse:"bse",bsx:"bsx",bvb:"bvb",bvc:"bvc",bvl:"bvl",bvpasa:"bvpasa",bwse:"bwse","canadian securities exchange":"canadian securities exchange",cse:"cse",darse:"darse",dfm:"dfm",dse:"dse",euronext:"euronext",euronextparis:"euronextparis",fse:"fse",fwb:"fwb",gse:"gse",gtsm:"gtsm",idx:"idx",ise:"ise",iseq:"iseq",isin:"isin",jasdaq:"jasdaq",jse:"jse",kase:"kase",kn:"kn",krx:"krx",lse:"lse",luxse:"luxse","malta stock exchange":"malta stock exchange",mai:"mai",mcx:"mcx",mutf:"mutf",myx:"myx",nag:"nag","nasdaq dubai":"nasdaq dubai",nasdaq:"nasdaq",neeq:"neeq",nepse:"nepse",nex:"nex",nse:"nse",newconnect:"newconnect","nyse arca":"nyse arca",nyse:"nyse",nzx:"nzx","omx baltic":"omx baltic",omx:"omx",ose:"ose","otc expert":"otc expert","otc grey":"otc grey","otc pink":"otc pink",otcqb:"otcqb",otcqx:"otcqx","pfts ukraine stock exchange":"pfts ukraine stock exchange","philippine stock exchange":"philippine stock exchange",prse:"prse",psx:"psx",karse:"karse",qe:"qe","saudi stock exchange":"saudi stock exchange",sehk:"sehk","Stock Exchange of Thailand":"Stock Exchange of Thailand",set:"set",sgx:"sgx",sse:"sse",swx:"swx",szse:"szse",tase:"tase","tsx-v":"tsx-v",tsx:"tsx",tsxv:"tsxv",ttse:"ttse",twse:"twse",tyo:"tyo",wbag:"wbag",wse:"wse","zagreb stock exchange":"zagreb stock exchange","zimbabwe stock exchange":"zimbabwe stock exchange",zse:"zse"},Hi=(e,t)=>{let i=Se(e,["ticketnumber","code"]);t.push(i);let a=i.template||"";""===a&&(a=i.code),a=(a||"").toLowerCase();let n=Zi[a]||"";return i.ticketnumber&&(n=`${n}: ${i.ticketnumber}`),i.code&&!Zi[i.code.toLowerCase()]&&(n+=" "+i.code),n},Gi={};Object.keys(Zi).forEach(e=>{Gi[e]=Hi});var Vi=Gi;const Ji=function(e){return 1===(e=String(e)).length&&(e="0"+e),e},Xi=function(e,t,i){e[`rd${t}-team${Ji(i)}`]&&(i=Ji(i));let a=e[`rd${t}-score${i}`],n=Number(a);return!1===isNaN(n)&&(a=n),{team:e[`rd${t}-team${i}`],score:a,seed:e[`rd${t}-seed${i}`]}};var Qi=function(e){let t=[],i=Se(e);for(let e=1;e<7;e+=1){let a=[];for(let t=1;t<16;t+=2){let n=`rd${e}-team`;if(!i[n+t]&&!i[n+Ji(t)])break;{let n=Xi(i,e,t),r=Xi(i,e,t+1);a.push([n,r])}}a.length>0&&t.push(a)}return{template:"playoffbracket",rounds:t}};var ea={"4teambracket":function(e,t){let i=Qi(e);return t.push(i),""},player:(e,t)=>{let i=Se(e,["number","country","name","dl"]);t.push(i);let a=`[[${i.name}]]`;if(i.country){let e=(i.country||"").toLowerCase(),t=ri.find(t=>e===t[1]||e===t[2])||[];t&&t[0]&&(a=t[0]+" "+a)}return i.number&&(a=i.number+" "+a),a},goal:(e,t)=>{let i={template:"goal",data:[]},a=Se(e).list||[];for(let e=0;e{let t=e.note;return t&&(t=` (${t})`),e.min+"'"+t}).join(", "),n},"sports table":(e,t)=>{let i=Se(e),a={};Object.keys(i).filter(e=>/^team[0-9]/.test(e)).map(e=>i[e].toLowerCase()).forEach(e=>{a[e]={name:i["name_"+e],win:Number(i["win_"+e])||0,loss:Number(i["loss_"+e])||0,tie:Number(i["tie_"+e])||0,otloss:Number(i["otloss_"+e])||0,goals_for:Number(i["gf_"+e])||0,goals_against:Number(i["ga_"+e])||0}});let n={date:i.update,header:i.table_header,teams:a};t.push(n)}},ta=Object.assign({},{mlbplayer:{props:["number","name","il"],out:"name"},syntaxhighlight:{props:[],out:"code"},samp:{props:["1"],out:"1"},sub:{props:["text"],out:"text"},sup:{props:["text"],out:"text"},chem2:{props:["equation"],out:"equation"},ill:{props:["text","lan1","text1","lan2","text2"],out:"text"},abbr:{props:["abbr","meaning","ipa"],out:"abbr"}},wi,vi,Ri,Ki,Yi,Vi,Qi,ea,Qi,ea);let ia=Object.assign({},pi,bi,ta);Object.keys(ei).forEach(e=>{ia[e]=ia[ei[e]]});var aa=ia;const{isArray:na,isObject:ra}=r,oa=["0","1","2","3","4","5","6","7","8","9"];var sa=function(e,t,i){let a=e.name;if(!0===Kt.hasOwnProperty(a))return"";if(!0===Vt(a)){let i=Se(e.body,[],"raw");return t.push(Jt(i)),""}if(!0===/^cite [a-z]/.test(a)){let i=Se(e.body);return i.type=i.template,i.template="citation",t.push(i),""}if(!0===aa.hasOwnProperty(a)){if("number"==typeof aa[a]){return Se(e.body,oa)[String(aa[a])]||""}if("string"==typeof aa[a])return aa[a];if(!0===na(aa[a])){let i=Se(e.body,aa[a]);return t.push(i),""}if(!0===ra(aa[a])){let i=Se(e.body,aa[a].props);return t.push(i),i[aa[a].out]}if("function"==typeof aa[a])return aa[a](e.body,t,Se,null,i)}let n=Se(e.body);return t&&Object.keys(n).length>0&&t.push(n),""};var la=function(e,t){let i=Object.keys(e.data).reduce((t,i)=>(e.data[i]&&(t[i]=e.data[i].json()),t),{});return!0===t.encode&&(i=H(i)),i};const{isArray:ca}=r,ua=(e="")=>(e=(e=e.toLowerCase()).replace(/[-_]/g," ")).trim(),pa=function(e){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data})},ma={type:function(){return this._type},links:function(e){let t=[];if(Object.keys(this.data).forEach(e=>{this.data[e].links().forEach(e=>t.push(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},image:function(){let e=this.data.image||this.data.image2||this.data.logo;if(!e)return null;let t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new z(t)},get:function(e){let t=Object.keys(this.data);if("string"==typeof e){let i=ua(e);for(let e=0;e{for(let i=0;i(this.data[t]&&(e[t]=this.data[t].text()),e),{})}};Object.keys(ma).forEach(e=>{pa.prototype[e]=ma[e]}),pa.prototype.data=pa.prototype.keyValue,pa.prototype.template=pa.prototype.type,pa.prototype.images=pa.prototype.image;var da=pa;const ha={text:function(){return""},json:function(){return this.data}},ga=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})};Object.keys(ha).forEach(e=>{ga.prototype[e]=ha[e]});var fa=ga;const ka=new RegExp("^(cite |citation)","i"),ba={citation:!0,refn:!0,harvnb:!0,source:!0};var wa=function(e,t){let i={infoboxes:[],templates:[],references:[]};return e.forEach(e=>{let a=e.template||e.type||e.name;if(!0!==ba[a]&&!0!==ka.test(a))return"infobox"===e.template&&"yes"!==e.subbox?(e.domain=t,e.data=e.data||{},void i.infoboxes.push(new da(e))):void i.templates.push(new fa(e));i.references.push(new Le(e))}),i};var ya=function(e,t){let{list:i,wiki:a}=function(e,t){let i=[],a=Ft(e);const n=function(a,r){a.parent=r,a.children&&a.children.length>0&&a.children.forEach(e=>n(e,a)),a.wiki=sa(a,i,t);const o=function(e,t,i){e.parent&&(e.parent.body=e.parent.body.replace(t,i),o(e.parent,t,i))};o(a,a.body,a.wiki),e=e.replace(a.body,a.wiki)};return a.forEach(e=>n(e,null)),a.forEach(t=>{e=e.replace(t.body,t.wiki)}),{list:i,wiki:e}}(e._wiki,t),n=t?t._domain:null,{infoboxes:r,references:o,templates:s}=wa(i,n);e._infoboxes=e._infoboxes||[],e._references=e._references||[],e._templates=e._templates||[],e._infoboxes=e._infoboxes.concat(r),e._references=e._references.concat(o),e._templates=e._templates.concat(s),e._wiki=a};const $a=be;var xa=function(e,t,i){e.text=e.text.replace(/]*?)>([\s\S]+?)<\/gallery>/g,(a,n,r)=>{let o=r.split(/\n/g);return o=o.filter(e=>e&&""!==e.trim()),o=o.map(e=>{let i=e.split(/\|/),a={file:i[0].trim(),lang:t.lang(),domain:t.domain()},n=new z(a).json(),r=i.slice(1).join("|");return""!==r&&(n.caption=$a(r)),n}),o.length>0&&e.templates.push({template:"gallery",images:o,pos:i.title}),""})};var va=function(e){e.text=e.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,t=>{let i={_wiki:t,_templates:[]};ya(i);let a=i._templates.map(e=>e.json()),n=a.find(e=>"election box"===e.template)||{},r=a.filter(e=>"election box candidate"===e.template),o=a.find(e=>"election box gain"===e.template||"election box hold"===e.template)||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:n.title,candidates:r,summary:o.data}),""})};const ja={coach:["team","year","g","w","l","w-l%","finish","pg","pw","pl","pw-l%"],player:["year","team","gp","gs","mpg","fg%","3p%","ft%","rpg","apg","spg","bpg","ppg"],roster:["player","gp","gs","mpg","fg%","3fg%","ft%","rpg","apg","spg","bpg","ppg"]};var _a=function(e){e.text=e.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,(t,i)=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();let a="! "+ja[i].join(" !! "),n=Xe("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"NBA "+i+" statistics",data:n}),""})};var za=function(e){e.text=e.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,t=>{let i=function(e){let t=["#","date","opponent","score","win","loss","save","attendance","record"];return!0===/\|stadium=y/i.test(e)&&t.splice(7,0,"stadium"),!0===/\|time=y/i.test(e)&&t.splice(7,0,"time"),!0===/\|box=y/i.test(e)&&t.push("box"),t}(t);t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{mlb game log (section|month) end\}\}/i,"");let a="! "+i.join(" !! "),n=Xe("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mlb game log section",data:n}),""})};let Ea=["res","record","opponent","method","event","date","round","time","location","notes"];var Oa=function(e){e.text=e.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,t=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");let i="! "+Ea.join(" !! "),a=Xe("{|\n"+i+"\n"+t+"\n|}");return a=a.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mma record start",data:a}),""})};const Ca=be;var Sa=function(e){e.text=e.text.replace(/]*?)>([\s\S]+?)<\/math>/g,(t,i,a)=>{let n=Ca(a).text();return e.templates.push({template:"math",formula:n,raw:a}),n&&n.length<12?n:""}),e.text=e.text.replace(/]*?)>([\s\S]+?)<\/chem>/g,(t,i,a)=>(e.templates.push({template:"chem",data:a}),""))};const Na={heading:Be,table:st,paragraphs:Pt,templates:ya,references:Ie,startEndTemplates:function(e,t){const i={templates:[],text:e._wiki};return va(i),xa(i,t,e),Sa(i),za(i),Oa(i),_a(i),i.templates=i.templates.map(e=>new fa(e)),i}},qa={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0};class La{constructor(e,t){let i={doc:t,title:e.title||"",depth:e.depth,wiki:e.wiki||"",templates:[],tables:[],infoboxes:[],references:[],paragraphs:[]};Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})});const a=Na.startEndTemplates(this,t);this._wiki=a.text,this._templates=this._templates.concat(a.templates),Na.references(this),Na.templates(this,t),Na.table(this),Na.paragraphs(this,t)}title(){return this._title||""}index(){if(!this._doc)return null;let e=this._doc.sections().indexOf(this);return-1===e?null:e}depth(){return this._depth}indentation(){return this.depth()}sentences(){return this.paragraphs().reduce((e,t)=>e.concat(t.sentences()),[])}paragraphs(){return this._paragraphs||[]}links(e){let t=[];if(this.infoboxes().forEach(e=>{t.push(e.links())}),this.sentences().forEach(e=>{t.push(e.links())}),this.tables().forEach(e=>{t.push(e.links())}),this.lists().forEach(e=>{t.push(e.links())}),t=t.reduce((e,t)=>e.concat(t),[]).filter(e=>void 0!==e),"string"==typeof e){let i=t.find(t=>t.page().toLowerCase()===e.toLowerCase());return void 0===i?[]:[i]}return t}tables(){return this._tables||[]}templates(e){let t=this._templates||[];return t=t.map(e=>e.json()),"string"==typeof e?(e=e.toLowerCase(),t.filter(t=>t.template===e||t.name===e)):t}infoboxes(e){let t=this._infoboxes||[];return"string"==typeof e?(e=(e=e.replace(/^infobox /i,"")).trim().toLowerCase(),t.filter(t=>t._type===e)):t}coordinates(){return[...this.templates("coord"),...this.templates("coor")]}lists(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.lists())}),e}interwiki(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.interwiki())}),e}images(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.images())}),e}references(){return this._references||[]}remove(){if(!this._doc)return null;let e={};e[this.title()]=!0,this.children().forEach(t=>e[t.title()]=!0);let t=this._doc.sections();return t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),this._doc._sections=t,this._doc}nextSibling(){if(!this._doc)return null;let e=this._doc.sections();for(let t=(this.index()||0)+1;tthis.depth())for(let e=i+1;ethis.depth();e+=1)a.push(t[e]);return"string"==typeof e?a.find(t=>t.title().toLowerCase()===e.toLowerCase()):a}sections(e){return this.children(e)}parent(){if(!this._doc)return null;let e=this._doc.sections();for(let t=this.index()||0;t>=0;t-=1)if(e[t]&&e[t].depth()t.text(e)).join("\n\n")}json(e){return e=d(e,qa),V(this,e)}}La.prototype.citations=La.prototype.references;const Aa={sentences:"sentence",paragraphs:"paragraph",links:"link",tables:"table",templates:"template",infoboxes:"infobox",coordinates:"coordinate",lists:"list",images:"image",references:"reference",citations:"citation"};Object.keys(Aa).forEach(e=>{let t=Aa[e];La.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}});var Ta=La;const Pa=new RegExp("^("+f.references.join("|")+"):?","i"),Da=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,Ia={heading:Be};var Ra=function(e){let t=[],i=e._wiki.split(Da);for(let a=0;a!0!==Pa.test(t.title())||t.paragraphs().length>0||t.templates().length>0||(e[i+1]&&e[i+1].depth()>t.depth()&&(e[i+1]._depth-=1),!1))}(t)};const Ma=new RegExp("\\[\\[:?("+f.categories.join("|")+"):(.{2,178}?)]](w{0,10})","ig"),Ua=new RegExp("^\\[\\[:?("+f.categories.join("|")+"):","ig");const Ba={section:Ra,categories:function(e){const t=[];let i=e.match(Ma);i&&i.forEach((function(e){(e=(e=(e=e.replace(Ua,"")).replace(/\|?[ \*]?\]\]$/i,"")).replace(/\|.*/,""))&&!e.match(/[\[\]]/)&&t.push(e.trim())}));const a=e.replace(Ma,"");return[t,a]}},Fa={tables:!0,lists:!0,paragraphs:!0};class Ka{constructor(e,t){let i={pageID:(t=t||{}).pageID||t.id||null,namespace:t.namespace||t.ns||null,lang:t.lang||t.language||null,domain:t.domain||null,title:t.title||null,type:"page",redirectTo:null,wikidata:t.wikidata||null,wiki:e||"",categories:[],sections:[],coordinates:[]};if(Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})}),!0===I(this._wiki)){this._type="redirect",this._redirectTo=R(this._wiki);const[e,t]=Ba.categories(this._wiki);return this._categories=e,void(this._wiki=t)}this._wiki=W(this._wiki);const[a,n]=Ba.categories(this._wiki);this._categories=a,this._wiki=n,this._sections=Ba.section(this)}title(e){if(void 0!==e)return this._title=e,e;if(this._title)return this._title;let t=null,i=this.sentence();return i&&(t=i.bold()),t}pageID(e){return void 0!==e&&(this._pageID=e),this._pageID||null}wikidata(e){return void 0!==e&&(this._wikidata=e),this._wikidata||null}domain(e){return void 0!==e&&(this._domain=e),this._domain||null}language(e){return void 0!==e&&(this._lang=e),this._lang||null}url(){let e=this.title();if(!e)return null;let t=this.language()||"en",i=this.domain()||"wikipedia.org";return e=e.replace(/ /g,"_"),e=encodeURIComponent(e),`https://${t}.${i}/wiki/${e}`}namespace(e){return void 0!==e&&(this._namespace=e),this._namespace||null}isRedirect(){return"redirect"===this._type}redirectTo(){return this._redirectTo}isDisambiguation(){return $(this)}categories(){return this._categories||[]}sections(e){let t=this._sections||[];if(t.forEach(e=>{e._doc=this}),"string"==typeof e){let i=e.toLowerCase().trim();return t.filter(e=>e.title().toLowerCase()===i)}return t}paragraphs(){let e=[];return this.sections().forEach(t=>{e=e.concat(t.paragraphs())}),e}sentences(){let e=[];return this.sections().forEach(t=>{e=e.concat(t.sentences())}),e}images(){let e=m(this,"images",null);return this.infoboxes().forEach(t=>{let i=t.image();i&&e.unshift(i)}),this.templates().forEach(t=>{"gallery"===t.template&&(t.images=t.images||[],t.images.forEach(t=>{t instanceof z||(t.language=this.language(),t.domain=this.domain(),t=new z(t)),e.push(t)}))}),e}links(e){return m(this,"links",e)}interwiki(e){return m(this,"interwiki",e)}lists(e){return m(this,"lists",e)}tables(e){return m(this,"tables",e)}templates(e){return m(this,"templates",e)}references(e){return m(this,"references",e)}citations(e){return this.references(e)}coordinates(e){return m(this,"coordinates",e)}infoboxes(e){let t=m(this,"infoboxes",e);return t=t.sort((e,t)=>Object.keys(e.data).length>Object.keys(t.data).length?-1:1),t}text(e){if(e=d(e,Fa),!0===this.isRedirect())return"";return this.sections().map(t=>t.text(e)).join("\n\n")}json(e){return e=d(e,Fa),g(this,e)}debug(){return console.log("\n"),this.sections().forEach(e=>{let t=" - ";for(let i=0;i{let t=Wa[e];Ka.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}}),Ka.prototype.lang=Ka.prototype.language,Ka.prototype.ns=Ka.prototype.namespace,Ka.prototype.plaintext=Ka.prototype.text,Ka.prototype.isDisambig=Ka.prototype.isDisambiguation,Ka.prototype.citations=Ka.prototype.references,Ka.prototype.redirectsTo=Ka.prototype.redirectTo,Ka.prototype.redirect=Ka.prototype.redirectTo,Ka.prototype.redirects=Ka.prototype.redirectTo;var Ya=Ka;var Za=function(e){let t=(e=e.filter(e=>e)).map(e=>new Ya(e.wiki,e.meta));return 0===t.length?null:1===t.length?t[0]:t};var Ha=function(e){let t,i=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return t=e.noOrigin?"":e.origin||e.Origin||"*",{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":i,"User-Agent":i,Origin:t},redirect:"follow"}};const Ga=/^https?:\/\//,Va={lang:"en",wiki:"wikipedia",domain:void 0,follow_redirects:!0,path:"api.php"};var Ja=function(e,t,i){"string"==typeof t&&(t={lang:t}),(t={...Va,...t}).title=e,"string"==typeof e&&Ga.test(e)&&(t={...t,...n(e)});const r=u(t),o=Ha(t);return a(r,o).then(e=>e.json()).then(e=>{let a=p(e,t);return a=Za(a),i&&i(null,a),a}).catch(e=>(console.error(e),i&&i(e,null),null))};const Xa=function(e,t){return new Ya(e,t)},Qa={Doc:Ya,Section:Ta,Paragraph:ht,Sentence:ce,Image:z,Infobox:da,Link:ee,List:_t,Reference:Le,Table:nt,Template:fa,http:function(e,t){return a(e,t).then((function(e){return e.json()}))},wtf:Xa};return Xa.fetch=function(e,t,i,a){return Ja(e,t,i)},Xa.plugin=Xa.extend=function(e){return e(Qa,aa,Wt),this},Xa.version="8.5.1",Xa})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).wtf=t()}(this,(function(){"use strict";var e=Object.freeze({__proto__:null,default:function(e,t){return t=t||{},new Promise((function(i,a){var n=new XMLHttpRequest,r=[],o=[],s={},l=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:l,headers:{keys:function(){return r},entries:function(){return o},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var c in n.open(t.method||"get",e,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,i){r.push(t=t.toLowerCase()),o.push([t,i]),s[t]=s[t]?s[t]+","+i:i})),i(l())},n.onerror=a,n.withCredentials="include"==t.credentials,t.headers)n.setRequestHeader(c,t.headers[c]);n.send(t.body||null)}))}});var t,i=(t=e)&&t.default||t,a=self.fetch||(self.fetch=i.default||i);var n=function(e){let t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};var r={capitalise:function(e){return e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):""},trim_whitespace:function(e){return e&&"string"==typeof e?e=(e=(e=(e=e.replace(/^\s\s*/,"")).replace(/\s\s*$/,"")).replace(/ {2}/," ")).replace(/\s, /,", "):""},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}};const{isArray:o}=r,s=/(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/,l={action:"query",prop:"revisions|pageprops",rvprop:"content",maxlag:5,rvslots:"main",origin:"*",format:"json",redirects:"true"},c=e=>e.replace(/ /g,"_").trim();var u=function(e){let t=Object.assign({},l),i="";if(e.domain){let t=s.test(e.domain)?"w/api.php":e.path;i=`https://${e.domain}/${t}?`}else{if(!e.lang||!e.wiki)return"";i=`https://${e.lang}.${e.wiki}.org/w/api.php?`}e.follow_redirects||delete t.redirects;let a=e.title;if("number"==typeof a)t.pageids=a;else if("string"==typeof a)t.titles=c(a);else if(void 0!==a&&o(a)&&"number"==typeof a[0])t.pageids=a.join("|");else{if(void 0===a||!0!==o(a)||"string"!=typeof a[0])return"";t.titles=a.map(c).join("|")}return`${i}${n=t,Object.entries(n).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}`;var n};var p=function(e,t={}){return Object.keys(e.query.pages).map(i=>{let a=e.query.pages[i]||{};if(a.hasOwnProperty("missing")||a.hasOwnProperty("invalid"))return null;let n=a.revisions[0]["*"];!n&&a.revisions[0].slots&&(n=a.revisions[0].slots.main["*"]),a.pageprops=a.pageprops||{};let r=t.domain;return!r&&t.wiki&&(r=t.wiki+".org"),{wiki:n,meta:Object.assign({},t,{title:a.title,pageID:a.pageid,namespace:a.ns,domain:r,wikidata:a.pageprops.wikibase_item,description:a.pageprops["wikibase-shortdesc"]})}})};var m=function(e,t,i){let a=[];return e.sections().forEach(e=>{let n=[];n="string"==typeof i?e[t](i):e[t](),n.forEach(e=>{a.push(e)})}),"number"==typeof i?void 0===a[i]?[]:[a[i]]:a};var d=function(e,t){return Object.assign({},t,e)};const h={title:!0,sections:!0,pageID:!0,categories:!0};var g=function(e,t){let i={};return(t=d(t,h)).title&&(i.title=e.title()),t.pageID&&(i.pageID=e.pageID()),t.categories&&(i.categories=e.categories()),t.sections&&(i.sections=e.sections().map(e=>e.json(t))),!0===e.isRedirect()&&(i.isRedirect=!0,i.redirectTo=e.redirectTo(),i.sections=[]),t.coordinates&&(i.coordinates=e.coordinates()),t.infoboxes&&(i.infoboxes=e.infoboxes().map(e=>e.json(t))),t.images&&(i.images=e.images().map(e=>e.json(t))),t.plaintext&&(i.plaintext=e.text(t)),(t.citations||t.references)&&(i.references=e.references()),i},f={categories:["category","abdeeling","bólkur","catagóir","categori","categoria","categoria","categoría","categorîa","categorìa","catégorie","categorie","catègorie","category","categuria","catigurìa","class","ẹ̀ka","flocc","flocc","flokkur","grup","jamii","kaarangay","kateggoría","kategooria","kategori","kategorî","kategoria","kategória","kategorie","kategoriija","kategorija","kategorio","kategoriya","kategoriýa","kategoriye","kategory","kategorya","kateqoriya","katiguriya","klad","luokka","ñemohenda","roinn","ronney","rummad","setensele","sokajy","sumut","thể","turkum","категорија","категория","категорія","катэгорыя","төркем","קטגוריה","تصنيف","تۈر","رده","श्रेणी","श्रेणी","বিষয়শ্রেণী","หมวดหมู่","분류","분류","分类"],disambig_templates:["dab","disamb","disambig","disambiguation","aðgreining","aimai","ałtsʼáʼáztiin","anlam ayrımı","anlam ayrımı","apartigilo","argipen","begriepskloorenge","begriffsklärung","begriffsklärung","begriffsklärung","begriffsklearung","bisongidila","bkl","bokokani","caddayn","clerheans","cudakirin","čvor","db","desambig","desambigación","desambiguação","desambiguació","desambiguación","desambiguáncia","desambiguasion","desambiguassiù","desambigui","dezambiguizare","dəqiqləşdirmə","disambigua","disambigua","disambigua","disambìgua","disambigua","disambiguasi","disambiguasi","discretiva","disheñvelout","disingkek","dixanbigua","dixebra","diżambigwazzjoni","doorverwijspagina","dp","dp","dubbelsinnig","dudalipen","dv","egyért","fleiri týdningar","fleirtyding","flertydig","förgrening","gì-ngiê","giklaro","gwahaniaethu","homonimo","homónimos","homonymie","huaʻōlelo puana like","idirdhealú","khu-pia̍t","kthjellim","kujekesa","maana","maneo bin","mehrdüdig begreep","menm non","muardüüdag artiikel","neibetsjuttings","nozīmju atdalīšana","nuorodinis","nyahkekaburan","omonimeye","omonimia","page dé frouque","paglilinaw","panangilawlawag","pansayod","pejy mitovy anarana","peker","razdvojba","razločitev","razvrstavanje","reddaghey","rozcestník","rozlišovacia stránka","sclerir noziun","selvendyssivu","soilleireachadh","suzmunski","täpsustuslehekülg","täsmennyssivu","telplänov","tlahtolmelahuacatlaliztli","trang định hướng","ujednoznacznienie","verdudeliking","wěcejwóznamowosć","wjacezmyslnosć","zambiguaçon","zeimeibu škiršona","αποσαφήνιση","айрық","аҵакырацәа","вишезначна одредница","ибҳомзудоӣ","кёб магъаналы","күп мәгънәләр","күп мәғәнәлелек","мъногосъмꙑслиѥ","неадназначнасць","неадназначнасьць","неоднозначность","олон удхатай","појаснување","пояснение","са шумуд манавал","салаа утгатай","суолталар","текмаанисиздик","цо магіна гуреб","чеперушка","чолхалла","шуко ончыктымаш-влак","მრავალმნიშვნელოვანი","բազմիմաստութիւն","բազմիմաստություն","באדייטן","פירושונים","ابهام‌زدایی","توضيح","توضيح","دقیقلشدیرمه","ڕوونکردنەوە","سلجهائپ","ضد ابہام","گجگجی بیری","نامبهمېدنه","መንታ","अस्पष्टता","बहुअर्थी","बहुविकल्पी शब्द","দ্ব্যর্থতা নিরসন","ਗੁੰਝਲ-ਖੋਲ੍ਹ","સંદિગ્ધ શીર્ષક","பக்கவழி நெறிப்படுத்தல்","అయోమయ నివృత్తి","ದ್ವಂದ್ವ ನಿವಾರಣೆ","വിവക്ഷകൾ","වක්‍රෝත්ති","แก้ความกำกวม","သံတူကြောင်းကွဲ","ណែនាំ","동음이의","扤清楚","搞清楚","曖昧さ回避","消歧义","釋義","gestion dj'omònim","sut'ichana qillqa"],disambig_titles:["disambiguation","homonymie","توضيح","desambiguação","Begriffsklärung","disambigua","曖昧さ回避","消歧義","搞清楚","значения","ابهام‌زدایی","د ابہام","동음이의","dubbelsinnig","այլ կիրառումներ","ujednoznacznienie"],images:["file","image","चित्र","archivo","attēls","berkas","bestand","datei","dosiero","dosya","fájl","fasciculus","fichier","fil","fitxategi","fitxer","gambar","imagem","imej","immagine","larawan","lêer","plik","restr","slika","wêne","wobraz","выява","податотека","слика","файл","სურათი","պատկեր","קובץ","پرونده","دوتنه","ملف","وێنە","चित्र","ไฟล์","파일","ファイル"],infoboxes:["infobox","anfo","anuāmapa","bilgi kutusu","bilgi","bilgiquti","boaty","boestkelaouiñ","bosca","capsa","diehtokássa","faktamall","ficha","generalni","gwybodlen3","info","infobokis","infoboks","infochascha","infokašćik","infokast","infokutija","infolentelė","infopolje","informkesto","infoskreine","infotaula","inligtingskas","inligtingskas3","inligtingskas4","kishtey","kotak","tertcita","tietolaatikko","yerleşim bilgi kutusu","ynfoboks","πλαίσιο","акарточка","аҥа","инфобокс","инфокутија","инфокутия","інфобокс","канадский","картка","карточка","карточка2","карточкарус","картуш","қуттӣ","ინფოდაფა","տեղեկաքարտ","אינפאקעסטל","תבנית","بطاقة","ڄاڻخانو","خانہ","لغة","ज्ञानसन्दूक","তথ্যছক","ਜਾਣਕਾਰੀਡੱਬਾ","సమాచారపెట్టె","තොරතුරුකොටුව","กล่องข้อมูล","ប្រអប់ព័ត៌មាន","정보상자","明細"],redirects:["adkas","aýdaw","doorverwijzing","ohjaus","patrz","přesměruj","redirección","redireccion","redirección","redirecionamento","redirect","redirection","redirection","rinvia","tilvísun","uudelleenohjaus","weiterleitung","weiterleitung","yönlendi̇r","yönlendirme","yönlendi̇rme","ανακατευθυνση","айдау","перанакіраваньне","перенаправлення","пренасочување","преусмери","преусмјери","تغییر_مسیر","تغییرمسیر","تغییرمسیر","เปลี่ยนทาง","ប្តូរទីតាំងទៅ","転送","重定向"],references:["references","reference","einzelnachweise","referencias","références","notes et références","脚注","referenser","bronnen","примечания"]};let k=" disambiguation";var b=["dab","dab","disamb","disambig","geodis","hndis","setindex","ship index","split dab","sport index","wp disambig","disambiguation cleanup","airport"+k,"biology"+k,"call sign"+k,"caselaw"+k,"chinese title"+k,"genus"+k,"hospital"+k,"lake index","letter"+k,"letter-number combination"+k,"mathematical"+k,"military unit"+k,"mountainindex","number"+k,"phonetics"+k,"place name"+k,"portal"+k,"road"+k,"school"+k,"species latin name abbreviation"+k,"species latin name"+k,"station"+k,"synagogue"+k,"taxonomic authority"+k,"taxonomy"+k].reduce((e,t)=>(e[t]=!0,e),{});const w=new RegExp(". \\(("+f.disambig_titles.join("|")+")\\)$","i"),y=f.disambig_templates.reduce((e,t)=>(e[t]=!0,e),{}),$=function(e){if(!e)return!1;let t=e.text();return!(null===t||!t[0]||!0!==/. may (also)? refer to\b/i.test(t))};var x=function(e){if(e.templates().map(e=>e.json()).find(e=>b.hasOwnProperty(e.template)||y.hasOwnProperty(e.template)))return!0;let t=e.title();return!(!t||!0!==w.test(t))||(!0===$(e.sentence(0))||!0===$(e.sentence(1)))};const v={caption:!0,alt:!0,links:!0,thumb:!0,url:!0};var j=function(e,t){t=d(t,v);let i={file:e.file()};return!1!==t.thumb&&(i.thumb=e.thumbnail()),!1!==t.url&&(i.url=e.url()),!1!==t.caption&&e.data.caption&&(i.caption=e.caption(),!1!==t.links&&e.data.caption.links()&&(i.links=e.links())),!1!==t.alt&&e.data.alt&&(i.alt=e.alt()),i};const _=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},z={file(){return this.data.file||""},alt(){let e=this.data.alt||this.data.file||"";return e=e.replace(/^(file|image):/i,""),e=e.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),e.replace(/_/g," ")},caption(){return this.data.caption?this.data.caption.text():""},links(){return this.data.caption?this.data.caption.links():[]},url(){let e=function(e){let t=function(e){let t=e.replace(/^(image|file?)\:/i,"");return t=t.charAt(0).toUpperCase()+t.substring(1),t=t.trim().replace(/ /g,"_"),t}(e);return t=encodeURIComponent(t),t}(this.file());return`https://${this.data.domain||"wikipedia.org"}/wiki/Special:Redirect/file/${e}`},thumbnail(e){return e=e||300,this.url()+"?width="+e},format(){let e=this.file().split(".");return e[e.length-1]?e[e.length-1].toLowerCase():null},json:function(e){return j(this,e=e||{})},text:function(){return""},wikitext:function(){return this.data.wiki||""}};Object.keys(z).forEach(e=>{_.prototype[e]=z[e]}),_.prototype.src=_.prototype.url,_.prototype.thumb=_.prototype.thumbnail;var O=_,E={aa:"Afar",ab:"Аҧсуа",af:"Afrikaans",ak:"Akana",als:"Alemannisch",am:"አማርኛ",an:"Aragonés",ang:"Englisc",ar:"العربية",arc:"ܣܘܪܬ",as:"অসমীয়া",ast:"Asturianu",av:"Авар",ay:"Aymar",az:"Azərbaycanca",ba:"Башҡорт",bar:"Boarisch","bat-smg":"Žemaitėška",bcl:"Bikol",be:"Беларуская","be-x-old":"ltr",bg:"Български",bh:"भोजपुरी",bi:"Bislama",bm:"Bamanankan",bn:"বাংলা",bo:"བོད་ཡིག",bpy:"ltr",br:"Brezhoneg",bs:"Bosanski",bug:"ᨅᨔ",bxr:"ltr",ca:"Català",cdo:"Chinese",ce:"Нохчийн",ceb:"Sinugboanong",ch:"Chamoru",cho:"Choctaw",chr:"ᏣᎳᎩ",chy:"Tsetsêhestâhese",co:"Corsu",cr:"Nehiyaw",cs:"Česky",csb:"Kaszëbsczi",cu:"Slavonic",cv:"Чăваш",cy:"Cymraeg",da:"Dansk",de:"Deutsch",diq:"Zazaki",dsb:"ltr",dv:"ދިވެހިބަސް",dz:"ཇོང་ཁ",ee:"Ɛʋɛ",far:"فارسی",el:"Ελληνικά",en:"English",eo:"Esperanto",es:"Español",et:"Eesti",eu:"Euskara",ext:"Estremeñu",ff:"Fulfulde",fi:"Suomi","fiu-vro":"Võro",fj:"Na",fo:"Føroyskt",fr:"Français",frp:"Arpitan",fur:"Furlan",fy:"ltr",ga:"Gaeilge",gan:"ltr",gd:"ltr",gil:"Taetae",gl:"Galego",gn:"Avañe'ẽ",got:"gutisk",gu:"ગુજરાતી",gv:"Gaelg",ha:"هَوُسَ",hak:"ltr",haw:"Hawai`i",he:"עברית",hi:"हिन्दी",ho:"ltr",hr:"Hrvatski",ht:"Krèyol",hu:"Magyar",hy:"Հայերեն",hz:"Otsiherero",ia:"Interlingua",id:"Bahasa",ie:"Interlingue",ig:"Igbo",ii:"ltr",ik:"Iñupiak",ilo:"Ilokano",io:"Ido",is:"Íslenska",it:"Italiano",iu:"ᐃᓄᒃᑎᑐᑦ",ja:"日本語",jbo:"Lojban",jv:"Basa",ka:"ქართული",kg:"KiKongo",ki:"Gĩkũyũ",kj:"Kuanyama",kk:"Қазақша",kl:"Kalaallisut",km:"ភាសាខ្មែរ",kn:"ಕನ್ನಡ",khw:"کھوار",ko:"한국어",kr:"Kanuri",ks:"कश्मीरी",ksh:"Ripoarisch",ku:"Kurdî",kv:"Коми",kw:"Kernewek",ky:"Kırgızca",la:"Latina",lad:"Dzhudezmo",lan:"Leb",lb:"Lëtzebuergesch",lg:"Luganda",li:"Limburgs",lij:"Líguru",lmo:"Lumbaart",ln:"Lingála",lo:"ລາວ",lt:"Lietuvių",lv:"Latviešu","map-bms":"Basa",mg:"Malagasy",man:"官話",mh:"Kajin",mi:"Māori",min:"Minangkabau",mk:"Македонски",ml:"മലയാളം",mn:"Монгол",mo:"Moldovenească",mr:"मराठी",ms:"Bahasa",mt:"bil-Malti",mus:"Muskogee",my:"Myanmasa",na:"Dorerin",nah:"Nahuatl",nap:"Nnapulitano",nd:"ltr",nds:"Plattdüütsch","nds-nl":"Saxon",ne:"नेपाली",new:"नेपालभाषा",ng:"Oshiwambo",nl:"Nederlands",nn:"ltr",no:"Norsk",nr:"ltr",nso:"ltr",nrm:"Nouormand",nv:"Diné",ny:"Chi-Chewa",oc:"Occitan",oj:"ᐊᓂᔑᓈᐯᒧᐎᓐ",om:"Oromoo",or:"ଓଡ଼ିଆ",os:"Иронау",pa:"ਪੰਜਾਬੀ",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamentu",pdc:"ltr",pi:"Pāli",pih:"Norfuk",pl:"Polski",pms:"Piemontèis",ps:"پښتو",pt:"Português",qu:"Runa",rm:"ltr",rmy:"Romani",rn:"Kirundi",ro:"Română","roa-rup":"Armâneashti",ru:"Русский",rw:"Kinyarwandi",sa:"संस्कृतम्",sc:"Sardu",scn:"Sicilianu",sco:"Scots",sd:"सिनधि",se:"ltr",sg:"Sängö",sh:"Srpskohrvatski",si:"සිංහල",simple:"ltr",sk:"Slovenčina",sl:"Slovenščina",sm:"Gagana",sn:"chiShona",so:"Soomaaliga",sq:"Shqip",sr:"Српски",ss:"SiSwati",st:"ltr",su:"Basa",sv:"Svenska",sw:"Kiswahili",ta:"தமிழ்",te:"తెలుగు",tet:"Tetun",tg:"Тоҷикӣ",th:"ไทย",ti:"ትግርኛ",tk:"Туркмен",tl:"Tagalog",tlh:"tlhIngan-Hol",tn:"Setswana",to:"Lea",tpi:"ltr",tr:"Türkçe",ts:"Xitsonga",tt:"Tatarça",tum:"chiTumbuka",tw:"Twi",ty:"Reo",udm:"Удмурт",ug:"Uyƣurqə",uk:"Українська",ur:"اردو",uz:"Ўзбек",ve:"Tshivenḓa",vi:"Việtnam",vec:"Vèneto",vls:"ltr",vo:"Volapük",wa:"Walon",war:"Winaray",wo:"Wollof",xal:"Хальмг",xh:"isiXhosa",yi:"ייִדיש",yo:"Yorùbá",za:"Cuengh",zh:"中文","zh-classical":"ltr","zh-min-nan":"Bân-lâm-gú","zh-yue":"粵語",zu:"isiZulu"};const C=".wikipedia.org/wiki/$1",S=".wikimedia.org/wiki/$1",N="www.";var q={acronym:N+"acronymfinder.com/$1.html",advisory:"advisory"+S,advogato:N+"advogato.org/$1",aew:"wiki.arabeyes.org/$1",appropedia:N+"appropedia.org/$1",aquariumwiki:N+"theaquariumwiki.com/$1",arborwiki:"localwiki.org/ann-arbor/$1",arxiv:"arxiv.org/abs/$1",atmwiki:N+"otterstedt.de/wiki/index.php/$1",baden:N+"stadtwiki-baden-baden.de/wiki/$1/",battlestarwiki:"en.battlestarwiki.org/wiki/$1",bcnbio:"historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1",beacha:N+"beachapedia.org/$1",betawiki:"translatewiki.net/wiki/$1",bibcode:"adsabs.harvard.edu/abs/$1",bibliowiki:"wikilivres.org/wiki/$1",bluwiki:"bluwiki.com/go/$1",blw:"britainloves"+C,botwiki:"botwiki.sno.cc/wiki/$1",boxrec:N+"boxrec.com/media/index.php?$1",brickwiki:N+"brickwiki.info/wiki/$1",bugzilla:"bugzilla.wikimedia.org/show_bug.cgi?id=$1",bulba:"bulbapedia.bulbagarden.net/wiki/$1",c:"commons"+S,c2:"c2.com/cgi/wiki?$1",c2find:"c2.com/cgi/wiki?FindPage&value=$1",cache:N+"google.com/search?q=cache:$1","ĉej":"esperanto.blahus.cz/cxej/vikio/index.php/$1",cellwiki:"cell.wikia.com/wiki/$1",centralwikia:"community.wikia.com/wiki/$1",chej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",choralwiki:N+"cpdl.org/wiki/index.php/$1",citizendium:"en.citizendium.org/wiki/$1",ckwiss:N+"ck-wissen.de/ckwiki/index.php?title=$1",comixpedia:N+"comixpedia.org/index.php?title=$1",commons:"commons"+S,communityscheme:"community.schemewiki.org/?c=s&key=$1",communitywiki:"communitywiki.org/$1",comune:"rete.comuni-italiani.it/wiki/$1",creativecommons:"creativecommons.org/licenses/$1",creativecommonswiki:"wiki.creativecommons.org/$1",cxej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",dcc:N+"dccwiki.com/$1",dcdatabase:"dc.wikia.com/$1",dcma:"christian-morgenstern.de/dcma/index.php?title=$1",debian:"wiki.debian.org/$1",delicious:N+"delicious.com/tag/$1",devmo:"developer.mozilla.org/en/docs/$1",dictionary:N+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",dict:N+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",disinfopedia:"sourcewatch.org/index.php/$1",distributedproofreaders:N+"pgdp.net/wiki/$1",distributedproofreadersca:N+"pgdpcanada.net/wiki/index.php/$1",dmoz:"curlie.org/$1",dmozs:"curlie.org/search?q=$1",doi:"doi.org/$1",donate:"donate"+S,doom_wiki:"doom.wikia.com/wiki/$1",download:"releases.wikimedia.org/$1",dbdump:"dumps.wikimedia.org/$1/latest/",dpd:"lema.rae.es/dpd/?key=$1",drae:"dle.rae.es/?w=$1",dreamhost:"wiki.dreamhost.com/index.php/$1",drumcorpswiki:N+"drumcorpswiki.com/index.php/$1",dwjwiki:N+"suberic.net/cgi-bin/dwj/wiki.cgi?$1","eĉei":N+"ikso.net/cgi-bin/wiki.pl?$1",ecoreality:N+"EcoReality.org/wiki/$1",ecxei:N+"ikso.net/cgi-bin/wiki.pl?$1",elibre:"enciclopedia.us.es/index.php/$1",emacswiki:N+"emacswiki.org/emacs?$1",encyc:"encyc.org/wiki/$1",energiewiki:N+"netzwerk-energieberater.de/wiki/index.php/$1",englyphwiki:"en.glyphwiki.org/wiki/$1",enkol:"enkol.pl/$1",eokulturcentro:"esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1",esolang:"esolangs.org/wiki/$1",etherpad:"etherpad.wikimedia.org/$1",ethnologue:N+"ethnologue.com/language/$1",ethnologuefamily:N+"ethnologue.com/show_family.asp?subid=$1",evowiki:"wiki.cotch.net/index.php/$1",exotica:N+"exotica.org.uk/wiki/$1",fanimutationwiki:"wiki.animutationportal.com/index.php/$1",fedora:"fedoraproject.org/wiki/$1",finalfantasy:"finalfantasy.wikia.com/wiki/$1",finnix:N+"finnix.org/$1",flickruser:N+"flickr.com/people/$1",flickrphoto:N+"flickr.com/photo.gne?id=$1",floralwiki:N+"floralwiki.co.uk/wiki/$1",foldoc:"foldoc.org/$1",foundation:"foundation"+S,foundationsite:"wikimediafoundation.org/$1",foxwiki:"fox.wikis.com/wc.dll?Wiki~$1",freebio:"freebiology.org/wiki/$1",freebsdman:N+"FreeBSD.org/cgi/man.cgi?apropos=1&query=$1",freeculturewiki:"wiki.freeculture.org/index.php/$1",freedomdefined:"freedomdefined.org/$1",freefeel:"freefeel.org/wiki/$1",freekiwiki:"wiki.freegeek.org/index.php/$1",freesoft:"directory.fsf.org/wiki/$1",ganfyd:"ganfyd.org/index.php?title=$1",gardenology:N+"gardenology.org/wiki/$1",gausswiki:"gauss.ffii.org/$1",gentoo:"wiki.gentoo.org/wiki/$1",genwiki:"wiki.genealogy.net/index.php/$1",gerrit:"gerrit.wikimedia.org/r/$1",git:"gerrit.wikimedia.org/g/$1",google:N+"google.com/search?q=$1",googledefine:N+"google.com/search?q=define:$1",googlegroups:"groups.google.com/groups?q=$1",guildwarswiki:"wiki.guildwars.com/wiki/$1",guildwiki:"guildwars.wikia.com/wiki/$1",guc:"tools.wmflabs.org/guc/?user=$1",gucprefix:"tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1",gutenberg:N+"gutenberg.org/etext/$1",gutenbergwiki:N+"gutenberg.org/wiki/$1",hackerspaces:"hackerspaces.org/wiki/$1",h2wiki:"halowiki.net/p/$1",hammondwiki:N+"dairiki.org/HammondWiki/index.php3?$1",hdl:"hdl.handle.net/$1",heraldik:"heraldik-wiki.de/wiki/$1",heroeswiki:"heroeswiki.com/$1",horizonlabs:"horizon.wikimedia.org/$1",hrwiki:N+"hrwiki.org/index.php/$1",hrfwiki:"fanstuff.hrwiki.org/index.php/$1",hupwiki:"wiki.hup.hu/index.php/$1",iarchive:"archive.org/details/$1",imdbname:N+"imdb.com/name/nm$1/",imdbtitle:N+"imdb.com/title/tt$1/",imdbcompany:N+"imdb.com/company/co$1/",imdbcharacter:N+"imdb.com/character/ch$1/",incubator:"incubator"+S,infosecpedia:"infosecpedia.org/wiki/$1",infosphere:"theinfosphere.org/$1","iso639-3":"iso639-3.sil.org/code/$1",issn:N+"worldcat.org/issn/$1",iuridictum:"iuridictum.pecina.cz/w/$1",jaglyphwiki:"glyphwiki.org/wiki/$1",jefo:"esperanto-jeunes.org/wiki/$1",jerseydatabase:"jerseydatabase.com/wiki.php?id=$1",jira:"jira.toolserver.org/browse/$1",jspwiki:N+"ecyrd.com/JSPWiki/Wiki.jsp?page=$1",jstor:N+"jstor.org/journals/$1",kamelo:"kamelopedia.mormo.org/index.php/$1",karlsruhe:"ka.stadtwiki.net/$1",kinowiki:"kino.skripov.com/index.php/$1",komicawiki:"wiki.komica.org/?$1",kontuwiki:"kontu.wiki/$1",wikitech:"wikitech"+S,libreplanet:"libreplanet.org/wiki/$1",linguistlist:"linguistlist.org/forms/langs/LLDescription.cfm?code=$1",linuxwiki:N+"linuxwiki.de/$1",linuxwikide:N+"linuxwiki.de/$1",liswiki:"liswiki.org/wiki/$1",literateprograms:"en.literateprograms.org/$1",livepedia:N+"livepedia.gr/index.php?title=$1",localwiki:"localwiki.org/$1",lojban:"mw.lojban.org/papri/$1",lostpedia:"lostpedia.wikia.com/wiki/$1",lqwiki:"wiki.linuxquestions.org/wiki/$1",luxo:"tools.wmflabs.org/guc/?user=$1",mail:"lists.wikimedia.org/mailman/listinfo/$1",mailarchive:"lists.wikimedia.org/pipermail/$1",mariowiki:N+"mariowiki.com/$1",marveldatabase:N+"marveldatabase.com/wiki/index.php/$1",meatball:"meatballwiki.org/wiki/$1",mw:N+"mediawiki.org/wiki/$1",mediazilla:"bugzilla.wikimedia.org/$1",memoryalpha:"memory-alpha.fandom.com/wiki/$1",metawiki:"meta"+S,metawikimedia:"meta"+S,metawikipedia:"meta"+S,mineralienatlas:N+"mineralienatlas.de/lexikon/index.php/$1",moinmoin:"moinmo.in/$1",monstropedia:N+"monstropedia.org/?title=$1",mosapedia:"mosapedia.de/wiki/index.php/$1",mozcom:"mozilla.wikia.com/wiki/$1",mozillawiki:"wiki.mozilla.org/$1",mozillazinekb:"kb.mozillazine.org/$1",musicbrainz:"musicbrainz.org/doc/$1",mediawikiwiki:N+"mediawiki.org/wiki/$1",mwod:N+"merriam-webster.com/dictionary/$1",mwot:N+"merriam-webster.com/thesaurus/$1",nkcells:N+"nkcells.info/index.php?title=$1",nara:"catalog.archives.gov/id/$1",nosmoke:"no-smok.net/nsmk/$1",nost:"nostalgia."+C,nostalgia:"nostalgia."+C,oeis:"oeis.org/$1",oldwikisource:"wikisource.org/wiki/$1",olpc:"wiki.laptop.org/go/$1",omegawiki:N+"omegawiki.org/Expression:$1",onelook:N+"onelook.com/?ls=b&w=$1",openlibrary:"openlibrary.org/$1",openstreetmap:"wiki.openstreetmap.org/wiki/$1",openwetware:"openwetware.org/wiki/$1",opera7wiki:"operawiki.info/$1",organicdesign:N+"organicdesign.co.nz/$1",orthodoxwiki:"orthodoxwiki.org/$1",osmwiki:"wiki.openstreetmap.org/wiki/$1",otrs:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1",otrswiki:"otrs-wiki"+S,ourmedia:N+"socialtext.net/ourmedia/index.cgi?$1",outreach:"outreach"+S,outreachwiki:"outreach"+S,owasp:N+"owasp.org/index.php/$1",panawiki:"wiki.alairelibre.net/index.php?title=$1",patwiki:"gauss.ffii.org/$1",personaltelco:"personaltelco.net/wiki/$1",petscan:"petscan.wmflabs.org/?psid=$1",phab:"phabricator.wikimedia.org/$1",phabricator:"phabricator.wikimedia.org/$1",phwiki:N+"pocketheaven.com/ph/wiki/index.php?title=$1",phpwiki:"phpwiki.sourceforge.net/phpwiki/index.php?$1",planetmath:"planetmath.org/node/$1",pmeg:N+"bertilow.com/pmeg/$1",pmid:N+"ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract",pokewiki:"pokewiki.de/$1","pokéwiki":"pokewiki.de/$1",policy:"policy.wikimedia.org/$1",proofwiki:N+"proofwiki.org/wiki/$1",pyrev:N+"mediawiki.org/wiki/Special:Code/pywikipedia/$1",pythoninfo:"wiki.python.org/moin/$1",pythonwiki:N+"pythonwiki.de/$1",pywiki:"c2.com/cgi/wiki?$1",psycle:"psycle.sourceforge.net/wiki/$1",quality:"quality"+S,quarry:"quarry.wmflabs.org/$1",regiowiki:"regiowiki.at/wiki/$1",rev:N+"mediawiki.org/wiki/Special:Code/MediaWiki/$1",revo:"purl.org/NET/voko/revo/art/$1.html",rfc:"tools.ietf.org/html/rfc$1",rheinneckar:"rhein-neckar-wiki.de/$1",robowiki:"robowiki.net/?$1",rodovid:"en.rodovid.org/wk/$1",reuterswiki:"glossary.reuters.com/index.php/$1",rowiki:"wiki.rennkuckuck.de/index.php/$1",rt:"rt.wikimedia.org/Ticket/Display.html?id=$1",s23wiki:"s23.org/wiki/$1",scholar:"scholar.google.com/scholar?q=$1",schoolswp:"schools-"+C,scores:"imslp.org/wiki/$1",scoutwiki:"en.scoutwiki.org/$1",scramble:N+"scramble.nl/wiki/index.php?title=$1",seapig:N+"seapig.org/$1",seattlewiki:"seattle.wikia.com/wiki/$1",slwiki:"wiki.secondlife.com/wiki/$1","semantic-mw":N+"semantic-mediawiki.org/wiki/$1",senseislibrary:"senseis.xmp.net/?$1",sharemap:"sharemap.org/$1",silcode:N+"sil.org/iso639-3/documentation.asp?id=$1",slashdot:"slashdot.org/article.pl?sid=$1",sourceforge:"sourceforge.net/$1",spcom:"spcom"+S,species:"species"+S,squeak:"wiki.squeak.org/squeak/$1",stats:"stats.wikimedia.org/$1",stewardry:"tools.wmflabs.org/meta/stewardry/?wiki=$1",strategy:"strategy"+S,strategywiki:"strategywiki.org/wiki/$1",sulutil:"meta.wikimedia.org/wiki/Special:CentralAuth/$1",swtrain:"train.spottingworld.com/$1",svn:"svn.wikimedia.org/viewvc/mediawiki/$1?view=log",swinbrain:"swinbrain.ict.swin.edu.au/wiki/$1",tabwiki:N+"tabwiki.com/index.php/$1",tclerswiki:"wiki.tcl.tk/$1",technorati:N+"technorati.com/search/$1",tenwiki:"ten."+C,testwiki:"test."+C,testwikidata:"test.wikidata.org/wiki/$1",test2wiki:"test2."+C,tfwiki:"tfwiki.net/wiki/$1",thelemapedia:N+"thelemapedia.org/index.php/$1",theopedia:N+"theopedia.com/$1",thinkwiki:N+"thinkwiki.org/wiki/$1",ticket:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1",tmbw:"tmbw.net/wiki/$1",tmnet:N+"technomanifestos.net/?$1",tmwiki:N+"EasyTopicMaps.com/?page=$1",toolforge:"tools.wmflabs.org/$1",toollabs:"tools.wmflabs.org/$1",tools:"toolserver.org/$1",tswiki:N+"mediawiki.org/wiki/Toolserver:$1",translatewiki:"translatewiki.net/wiki/$1",tviv:"tviv.org/wiki/$1",tvtropes:N+"tvtropes.org/pmwiki/pmwiki.php/Main/$1",twiki:"twiki.org/cgi-bin/view/$1",tyvawiki:N+"tyvawiki.org/wiki/$1",umap:"umap.openstreetmap.fr/$1",uncyclopedia:"en.uncyclopedia.co/wiki/$1",unihan:N+"unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1",unreal:"wiki.beyondunreal.com/wiki/$1",urbandict:N+"urbandictionary.com/define.php?term=$1",usej:N+"tejo.org/usej/$1",usemod:N+"usemod.com/cgi-bin/wiki.pl?$1",usability:"usability"+S,utrs:"utrs.wmflabs.org/appeal.php?id=$1",vikidia:"fr.vikidia.org/wiki/$1",vlos:"tusach.thuvienkhoahoc.com/wiki/$1",vkol:"kol.coldfront.net/thekolwiki/index.php/$1",voipinfo:N+"voip-info.org/wiki/view/$1",votewiki:"vote"+S,werelate:N+"werelate.org/wiki/$1",wg:"wg-en."+C,wikia:N+"wikia.com/wiki/w:c:$1",wikiasite:N+"wikia.com/wiki/w:c:$1",wikiapiary:"wikiapiary.com/wiki/$1",wikibooks:"en.wikibooks.org/wiki/$1",wikichristian:N+"wikichristian.org/index.php?title=$1",wikicities:N+"wikia.com/wiki/w:$1",wikicity:N+"wikia.com/wiki/w:c:$1",wikiconference:"wikiconference.org/wiki/$1",wikidata:N+"wikidata.org/wiki/$1",wikif1:N+"wikif1.org/$1",wikifur:"en.wikifur.com/wiki/$1",wikihow:N+"wikihow.com/$1",wikiindex:"wikiindex.org/$1",wikilemon:"wiki.illemonati.com/$1",wikilivres:"wikilivres.org/wiki/$1",wikilivresru:"wikilivres.ru/$1","wikimac-de":"apfelwiki.de/wiki/Main/$1",wikimedia:"foundation"+S,wikinews:"en.wikinews.org/wiki/$1",wikinfo:"wikinfo.org/w/index.php/$1",wikinvest:"meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest",wikiotics:"wikiotics.org/$1",wikipapers:"wikipapers.referata.com/wiki/$1",wikipedia:"en."+C,wikipediawikipedia:"en.wikipedia.org/wiki/Wikipedia:$1",wikiquote:"en.wikiquote.org/wiki/$1",wikisophia:"wikisophia.org/index.php?title=$1",wikisource:"en.wikisource.org/wiki/$1",wikispecies:"species"+S,wikispot:"wikispot.org/?action=gotowikipage&v=$1",wikiskripta:N+"wikiskripta.eu/index.php/$1",labsconsole:"wikitech"+S,wikiti:"wikiti.denglend.net/index.php?title=$1",wikiversity:"en.wikiversity.org/wiki/$1",wikivoyage:"en.wikivoyage.org/wiki/$1",betawikiversity:"beta.wikiversity.org/wiki/$1",wikiwikiweb:"c2.com/cgi/wiki?$1",wiktionary:"en.wiktionary.org/wiki/$1",wipipedia:"wipipedia.org/index.php/$1",wlug:N+"wlug.org.nz/$1",wmam:"am"+S,wmar:N+"wikimedia.org.ar/wiki/$1",wmat:"mitglieder.wikimedia.at/$1",wmau:"wikimedia.org.au/wiki/$1",wmbd:"bd"+S,wmbe:"be"+S,wmbr:"br"+S,wmca:"ca"+S,wmch:N+"wikimedia.ch/$1",wmcl:N+"wikimediachile.cl/index.php?title=$1",wmcn:"cn"+S,wmco:"co"+S,wmcz:N+"wikimedia.cz/web/$1",wmdc:"wikimediadc.org/wiki/$1",securewikidc:"secure.wikidc.org/$1",wmde:"wikimedia.de/wiki/$1",wmdk:"dk"+S,wmee:"ee"+S,wmec:"ec"+S,wmes:N+"wikimedia.es/wiki/$1",wmet:"ee"+S,wmfdashboard:"outreachdashboard.wmflabs.org/$1",wmfi:"fi"+S,wmfr:"wikimedia.fr/$1",wmge:"ge"+S,wmhi:"hi"+S,wmhk:"meta.wikimedia.org/wiki/Wikimedia_Hong_Kong",wmhu:"wikimedia.hu/wiki/$1",wmid:"id"+S,wmil:N+"wikimedia.org.il/$1",wmin:"wiki.wikimedia.in/$1",wmit:"wiki.wikimedia.it/wiki/$1",wmke:"meta.wikimedia.org/wiki/Wikimedia_Kenya",wmmk:"mk"+S,wmmx:"mx"+S,wmnl:"nl"+S,wmnyc:"nyc"+S,wmno:"no"+S,"wmpa-us":"pa-us"+S,wmph:"meta.wikimedia.org/wiki/Wikimedia_Philippines",wmpl:"pl"+S,wmpt:"pt"+S,wmpunjabi:"punjabi"+S,wmromd:"romd"+S,wmrs:"rs"+S,wmru:"ru"+S,wmse:"se"+S,wmsk:"wikimedia.sk/$1",wmtr:"tr"+S,wmtw:"wikimedia.tw/wiki/index.php5/$1",wmua:"ua"+S,wmuk:"wikimedia.org.uk/wiki/$1",wmve:"wikimedia.org.ve/wiki/$1",wmza:"wikimedia.org.za/wiki/$1",wm2005:"wikimania2005"+S,wm2006:"wikimania2006"+S,wm2007:"wikimania2007"+S,wm2008:"wikimania2008"+S,wm2009:"wikimania2009"+S,wm2010:"wikimania2010"+S,wm2011:"wikimania2011"+S,wm2012:"wikimania2012"+S,wm2013:"wikimania2013"+S,wm2014:"wikimania2014"+S,wm2015:"wikimania2015"+S,wm2016:"wikimania2016"+S,wm2017:"wikimania2017"+S,wm2018:"wikimania2018"+S,wmania:"wikimania"+S,wikimania:"wikimania"+S,wmteam:"wikimaniateam"+S,wmf:"foundation"+S,wmfblog:"blog.wikimedia.org/$1",wmdeblog:"blog.wikimedia.de/$1",wookieepedia:"starwars.wikia.com/wiki/$1",wowwiki:N+"wowwiki.com/$1",wqy:"wqy.sourceforge.net/cgi-bin/index.cgi?$1",wurmpedia:"wurmpedia.com/index.php/$1",viaf:"viaf.org/viaf/$1",zrhwiki:N+"zrhwiki.ch/wiki/$1",zum:"wiki.zum.de/$1",zwiki:N+"zwiki.org/$1",m:"meta"+S,meta:"meta"+S,sep11:"sep11."+C,d:N+"wikidata.org/wiki/$1",minnan:"zh-min-nan."+C,nb:"no."+C,"zh-cfr":"zh-min-nan."+C,"zh-cn":"zh."+C,"zh-tw":"zh."+C,nan:"zh-min-nan."+C,vro:"fiu-vro."+C,cmn:"zh."+C,lzh:"zh-classical."+C,rup:"roa-rup."+C,gsw:"als."+C,"be-tarask":"be-x-old."+C,sgs:"bat-smg."+C,egl:"eml."+C,w:"en."+C,wikt:"en.wiktionary.org/wiki/$1",q:"en.wikiquote.org/wiki/$1",b:"en.wikibooks.org/wiki/$1",n:"en.wikinews.org/wiki/$1",s:"en.wikisource.org/wiki/$1",chapter:"en"+S,v:"en.wikiversity.org/wiki/$1",voy:"en.wikivoyage.org/wiki/$1"};Object.keys(E).forEach(e=>{q[e]=e+".wikipedia.org/wiki/$1"});var L=function(e){let t=e.page||"";if(-1!==t.indexOf(":")){let i=t.match(/^(.*):(.*)/);if(null===i)return e;let a=i[1]||"";if(a=a.toLowerCase(),-1!==a.indexOf(":")){let[,t,i]=a.match(/^:?(.*):(.*)/);if(q.hasOwnProperty(t)&&!1===E.hasOwnProperty(i))return e;e.wiki={wiki:t,lang:i}}else{if(!1===q.hasOwnProperty(a))return e;e.wiki=a}e.page=i[2]}return e};const P=/^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i,A=/\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g,T=/\[\[(.{0,160}?)\]\]([a-z]+)?/gi;var D=function(e){let t=[];if(t=function(e,t){return t.replace(A,(function(t,i,a,n){return n=n||"",e.push({type:"external",site:i+a,text:n.trim(),raw:t}),n})),e}(t,e),t=function(e,t){return t.replace(T,(function(t,i,a){let n=null,r=i;if(i.match(/\|/)&&(r=(i=i.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g,"$1$2")).replace(/(.{2,100})\|.{0,200}/,"$1"),n=i.replace(/.{2,100}?\|/,""),null===n&&r.match(/\|$/)&&(r=r.replace(/\|$/,""),n=r)),r.match(P))return i;let o={page:r,raw:t};return o.page=o.page.replace(/#(.*)/,(e,t)=>(o.anchor=t,"")),o=L(o),o.wiki&&(o.type="interwiki"),null!==n&&n!==o.page&&(o.text=n),a&&(o.text=o.text||o.page,o.text+=a.trim()),o.page&&!1===/^[A-Z]/.test(o.page)&&(o.text||(o.text=o.page),o.page=o.page),e.push(o),i})),e}(t,e),0!==t.length)return t};const I=new RegExp("^[ \n\t]*?#("+f.redirects.join("|")+") *?(\\[\\[.{2,180}?\\]\\])","i");var M=function(e){return!(!e||e.length>500)&&I.test(e)},R=function(e){let t=e.match(I);if(t&&t[2]){return(D(t[2])||[])[0]}return{}};const U=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],B=`< ?(${U.join("|")}) ?[^>]{0,200}?>`,K=`< ?/ ?(${U.join("|")}) ?>`,F=new RegExp(`${B}[\\s\\S]+?${K}`,"ig");var W=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(F," ")).replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%\.\-#:;'" ]{2,100}\/? ?> ?/g," ")).replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g," ")).replace(/(.*?)<\/i>/g,"''$1''")).replace(/(.*?)<\/b>/g,"'''$1'''")).replace(/(.*?)<\/sub>/g,"{{sub|$1}}")).replace(/(.*?)<\/sup>/g,"{{sup|$1}}")).replace(/ ?<[ \/]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ \/]?> ?/g," ")).replace(/ ?<[ \/]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ \/]?> ?/g," ")).replace(/ ?<[ \/]?h[0-9][ \/]?> ?/g," ")).replace(/ ?< ?br ?\/> ?/g,"\n")).trim()};var Y=function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(//g,"")).replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi,"")).replace(/~~{1,3}/g,"")).replace(/\r/g,"")).replace(/\u3002/g,". ")).replace(/----/g,"")).replace(/\{\{\}\}/g," – ")).replace(/\{\{\\\}\}/g," / ")).replace(/ /g," "),e=(e=(e=W(e)).replace(/\([,;: ]+?\)/g,"")).replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,"")};const Z=/[\\\.$]/,H=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")};var G=function(e={}){let t=Object.keys(e);for(let i=0;ie.json(t));a.length>0&&(i.paragraphs=a)}if(!0===t.images){let a=e.images().map(e=>e.json(t));a.length>0&&(i.images=a)}if(!0===t.tables){let a=e.tables().map(e=>e.json(t));a.length>0&&(i.tables=a)}if(!0===t.templates){let a=e.templates().map(e=>e.json());a.length>0&&(i.templates=a,!0===t.encode&&i.templates.forEach(e=>G(e)))}if(!0===t.infoboxes){let a=e.infoboxes().map(e=>e.json(t));a.length>0&&(i.infoboxes=a)}if(!0===t.lists){let a=e.lists().map(e=>e.json(t));a.length>0&&(i.lists=a)}if(!0===t.references||!0===t.citations){let a=e.references().map(e=>e.json(t));a.length>0&&(i.references=a)}return!0===t.sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const X={type:"internal"},Q=function(e){e=e||{},e=Object.assign({},X,e),Object.defineProperty(this,"data",{enumerable:!1,value:e})},ee={text:function(e){void 0!==e&&(this.data.text=e);let t=this.data.text||this.data.page||"";return t=t.replace(/''+/g,""),t},json:function(){let e={text:this.data.text,type:this.type()};"internal"===e.type?e.page=this.page():"interwiki"===e.type?e.wiki=this.wiki():e.site=this.site();let t=this.anchor();return t&&(e.anchor=t),e},wikitext:function(){return this.data.raw||""},page:function(e){return void 0!==e&&(this.data.page=e),this.data.page},anchor:function(e){return void 0!==e&&(this.data.anchor=e),this.data.anchor||""},wiki:function(e){return void 0!==e&&(this.data.wiki=e),this.data.wiki},type:function(e){return void 0!==e&&(this.data.type=e),this.data.type},site:function(e){return void 0!==e&&(this.data.site=e),this.data.site},href:function(){let e=this.type();if("external"===e)return this.site();let t=this.page();t=t.replace(/ /g,"_"),t=encodeURIComponent(t);let i="";if("interwiki"===e){let e=this.wiki();i="https://en.wikipedia.org/wiki/$1",q.hasOwnProperty(e)&&(i="http://"+q[this.wiki()]),i=i.replace(/\$1/g,t)}else i="./"+this.page();return this.anchor()&&(i+="#"+this.anchor()),i}};Object.keys(ee).forEach(e=>{Q.prototype[e]=ee[e]});var te=Q;var ie=function(e){let t=e.text,i=D(t)||[];e.links=i.map(e=>(t=t.replace(e.raw,e.text||e.page||""),new te(e))),t=t.replace(/\[\[File:(.{2,80}?)\|([^\]]+?)\]\](\w{0,5})/g,"$1"),e.text=t};var ae=function(e){let t=[],i=[],a=e.text||"";return a=a.replace(/'''''(.{0,200}?)'''''/g,(e,a)=>(t.push(a),i.push(a),a)),a=a.replace(/''''(.{0,200}?)''''/g,(e,i)=>(t.push(`'${i}'`),`'${i}'`)),a=a.replace(/'''(.{0,200}?)'''/g,(e,i)=>(t.push(i),i)),a=a.replace(/''(.{0,200}?)''/g,(e,t)=>(i.push(t),t)),e.text=a,t.length>0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e};const ne=/^[0-9,.]+$/,re={text:!0,links:!0,formatting:!0,numbers:!0};var oe=function(e,t){t=d(t,re);let i={},a=e.text();if(!0===t.text&&(i.text=a),!0===t.numbers&&ne.test(a)){let e=Number(a.replace(/,/g,""));!1===isNaN(e)&&(i.number=e)}return t.links&&e.links().length>0&&(i.links=e.links().map(e=>e.json())),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i};const se=function(e={}){Object.defineProperty(this,"data",{enumerable:!1,value:e})},le={links:function(e){let t=this.data.links||[];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page===e);return void 0===i?[]:[i]}return t},interwiki:function(){return this.links().filter(e=>void 0!==e.wiki)},bolds:function(){return this.data&&this.data.fmt&&this.data.fmt.bold&&this.data.fmt.bold||[]},italics:function(){return this.data&&this.data.fmt&&this.data.fmt.italic&&this.data.fmt.italic||[]},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return oe(this,e)},wikitext:function(){return this.data.wiki||""},isEmpty:function(){return""===this.data.text}};Object.keys(le).forEach(e=>{se.prototype[e]=le[e]});const ce={links:"link",bolds:"bold",italics:"italic"};Object.keys(ce).forEach(e=>{se.prototype[ce[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}}),se.prototype.plaintext=se.prototype.text;var ue=se;const pe=["ad","adj","adm","adv","al","alta","approx","apr","apt","arc","ariz","assn","asst","atty","aug","ave","ba","bc","bl","bldg","blvd","brig","bros","ca","cal","calif","capt","cca","cg","cl","cm","cmdr","co","col","colo","comdr","conn","corp","cpl","cres","ct","cyn","dak","dec","def","dept","det","dg","dist","dl","dm","dr","ea","eg","eng","esp","esq","est","etc","ex","exp","feb","fem","fig","fl oz","fl","fla","fm","fr","ft","fy","ga","gal","gb","gen","gov","hg","hon","hr","hrs","hwy","hz","ia","ida","ie","inc","inf","jan","jd","jr","jul","jun","kan","kans","kb","kg","km","kmph","lat","lb","lit","llb","lm","lng","lt","ltd","lx","ma","maj","mar","masc","mb","md","messrs","mg","mi","min","minn","misc","mister","ml","mlle","mm","mme","mph","mps","mr","mrs","ms","mstr","mt","neb","nebr","nee","no","nov","oct","okla","ont","op","ord","oz","pa","pd","penn","penna","phd","pl","pp","pref","prob","prof","pron","ps","psa","pseud","pt","pvt","qt","que","rb","rd","rep","reps","res","rev","sask","sec","sen","sens","sep","sept","sfc","sgt","sir","situ","sq ft","sq","sr","ss","st","supt","surg","tb","tbl","tbsp","tce","td","tel","temp","tenn","tex","tsp","univ","usafa","ut","va","vb","ver","vet","vitro","vivo","vol","vs","vt","wis","wisc","wr","wy","wyo","yb","µg"].concat("[^]][^]]"),me=new RegExp("(^| |')("+pe.join("|")+")[.!?] ?$","i"),de=/[ .'][A-Z].? *?$/i,he=/\.\.\.* +?$/,ge=/ c\.\s$/,fe=/\p{Letter}/iu;var ke=function(e){let t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;let a=function(e){let t=e.split(/(\n+)/);return t=t.filter(e=>e.match(/\S/)),t=t.map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s+|$)/g)})),function(e){let t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t)}(e);for(let e=0;ei.length)return!1;const a=e.match(/"/g);return!(a&&a.length%2!=0&&e.length<900)}(n))?i[e+1]=i[e]+(i[e+1]||""):i[e]&&i[e].length>0&&(t.push(i[e]),i[e]="");var n;return 0===t.length?[e]:t};function be(e){let t={wiki:e,text:e};var i;return ie(t),t.text=(i=(i=(i=t.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(i=r.trim_whitespace(i)).replace(/ +\.$/,".")),t=ae(t),new ue(t)}var we=be,ye=function(e){let t=ke(e.wiki);t=t.map(be),t[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t};var $e=function(e){return e=(e=e.replace(/^{{/,"")).replace(/}}$/,"")};var xe=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")};var ve=function(e){let t=e.split(/\n?\|/);t.forEach((e,i)=>{null!==e&&(/\[\[[^\]]+$/.test(e)||/{{[^}]+$/.test(e)||e.split("{{").length!==e.split("}}").length||e.split("[[").length!==e.split("]]").length)&&(t[i+1]=t[i]+"|"+t[i+1],t[i]=null)}),t=t.filter(e=>null!==e),t=t.map(e=>(e||"").trim());for(let e=t.length-1;e>=0;e-=1){""===t[e]&&t.pop();break}return t};const je=/^[\p{Letter}0-9\._\- '()œ]+=/iu,_e={template:!0,list:!0,prototype:!0};var ze=function(e,t){let i=0;return e.reduce((e,a="")=>{if(a=a.trim(),!0===je.test(a)){let t=function(e){let t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();let a=t.slice(1).join("=");return _e.hasOwnProperty(i)&&(i="_"+i),{key:i,val:a.trim()}}(a);if(t.key)return e[t.key]=t.val,e}if(t&&t[i]){e[t[i]]=a}else e.list=e.list||[],e.list.push(a);return i+=1,e},{})};const Oe={classname:!0,style:!0,align:!0,margin:!0,left:!0,break:!0,boxsize:!0,framestyle:!0,item_style:!0,collapsible:!0,list_style_type:!0,"list-style-type":!0,colwidth:!0};var Ee=function(e){return Object.keys(e).forEach(t=>{!0===Oe[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]}),e};const Ce=we,Se=function(e,t){let i=Ce(e);return"json"===t?i.json():"raw"===t?i:i.text()};var Ne=function(e,t=[],i){e=$e(e||"");let a=ve(e),n=a.shift(),r=ze(a,t);return r=Ee(r),r[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach(e=>{r[e]="list"!==e?Se(r[e],i):r[e].map(e=>Se(e,i))}),n&&(r.template=xe(n)),r};const qe=function(e,t){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Le={title:function(){let e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){let t=[];if("number"==typeof e)return t[e];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},text:function(){return""},wikitext:function(){return this.wiki||""},json:function(e={}){let t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=G(t)),t}};Object.keys(Le).forEach(e=>{qe.prototype[e]=Le[e]});var Pe=qe;const Ae=we,Te=function(e){return/^ *?\{\{ *?(cite|citation)/i.test(e)&&/\}\} *?$/.test(e)&&!1===/citation needed/i.test(e)},De=function(e){let t=Ne(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},Ie=function(e){return{template:"citation",type:"inline",data:{},inline:Ae(e)||{}}};var Me=function(e){let t=[],i=e._wiki;i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Te(a)){let n=De(a);n&&t.push({json:n,wiki:e}),i=i.replace(a,"")}else t.push({json:Ie(a),wiki:e});return" "})),i=i.replace(/ ?]{0,200}?\/> ?/gi," "),i=i.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Te(a)){let e=De(a);e&&t.push({json:e,wiki:a}),i=i.replace(a,"")}else t.push({json:Ie(a),wiki:e});return" "})),i=i.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g," "),e._references=t.map(e=>new Pe(e.json,e.wiki)),e._wiki=i};const{trim_whitespace:Re}=r,Ue=we,Be=/^(={1,5})(.{1,200}?)={1,5}$/;var Ke=function(e,t){let i=t.match(Be);if(!i)return e.title="",e.depth=0,e;let a=i[2]||"";a=Ue(a).text(),a=a.replace(/\{\{.+?\}\}/,"");let n={_wiki:a};Me(n),a=n._wiki,a=Re(a);let r=0;return i[1]&&(r=i[1].length-2),e.title=a,e.depth=r,e};var Fe=function(e){let t=[],i=[];e=function(e){return e=e.filter(e=>e&&!0!==/^\|\+/.test(e)),!0===/^{\|/.test(e[0])&&e.shift(),!0===/^\|}/.test(e[e.length-1])&&e.pop(),!0===/^\|-/.test(e[0])&&e.shift(),e}(e);for(let a=0;a0&&(t.push(i),i=[]):(n=n.split(/(?:\|\||!!)/),!n[0]&&n[1]&&n.shift(),n.forEach(e=>{e=(e=e.replace(/^\| */,"")).trim(),i.push(e)}))}return i.length>0&&t.push(i),t};const We=/.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/,Ye=/.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/;var Ze=function(e){return e=function(e){return e.forEach((t,i)=>{t.forEach((a,n)=>{let r=a.match(We);if(null!==r){let o=parseInt(r[1],10);a=a.replace(We,""),t[n]=a;for(let t=i+1;t{e.forEach((t,i)=>{let a=t.match(Ye);if(null!==a){let n=parseInt(a[1],10);e[i]=t.replace(Ye,"");for(let t=1;te.length>0)}(e))};const He=we,Ge=/^!/,Ve={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},Je=function(e){return(e=He(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},Xe=function(e){if(e.length<=3)return[];let t=e[0].slice(0);t=t.map(e=>(e=e.replace(/^\! */,""),e=He(e).text(),e=(e=Je(e)).toLowerCase()));for(let i=0;ie.trim()),i=Fe(t);if(i=i.filter(e=>e),0===i.length)return[];i=function(e){return e.filter(e=>1!==e.length||!e[0]||!Ge.test(e[0])||!1!==/rowspan/i.test(e[0]))}(i),i=Ze(i);let a=function(e=[]){let t=[];var i;(i=(i=e[0])||[]).length-i.filter(e=>e).length>3&&e.shift();let a=e[0];return a&&a[0]&&a[1]&&(/^!/.test(a[0])||/^!/.test(a[1]))&&(t=a.map(e=>(e=e.replace(/^\! */,""),Je(e))),e.shift()),a=e[0],a&&a[0]&&a[1]&&/^!/.test(a[0])&&/^!/.test(a[1])&&(a.forEach((e,i)=>{e=e.replace(/^\! */,""),e=Je(e),!0===Boolean(e)&&(t[i]=e)}),e.shift()),t}(i);if(!a||a.length<=1){a=Xe(i);let e=i[i.length-1]||[];a.length<=1&&e.length>2&&(a=Xe(i.slice(1)),a.length>0&&(i=i.slice(2)))}return i.map(e=>function(e,t){let i={};return e.forEach((e,a)=>{let n=t[a]||"col"+(a+1),r=He(e);r.text(Je(r.text())),i[n]=r}),i}(e,a))};var et=function(e,t){return e.map(e=>{let i={};return Object.keys(e).forEach(t=>{i[t]=e[t].json()}),!0===t.encode&&(i=G(i)),i})};const tt={},it=function(e=""){return e=(e=(e=(e=e.toLowerCase()).replace(/[_-]/g," ")).replace(/\(.*?\)/,"")).trim()},at=function(e,t=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_wiki",{enumerable:!1,value:t})},nt={links(e){let t=[];if(this.data.forEach(e=>{Object.keys(e).forEach(i=>{t=t.concat(e[i].links())})}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},get(e){let t=this.data[0]||{},i=Object.keys(t).reduce((e,t)=>(e[it(t)]=t,e),{});if("string"==typeof e){let t=it(e);return t=i[t]||t,this.data.map(e=>e[t]?e[t].text():null)}return e=e.map(it).map(e=>i[e]||e),this.data.map(t=>e.reduce((e,i)=>(t[i]?e[i]=t[i].text():e[i]="",e),{}))},keyValue(e){let t=this.json(e);return t.forEach(e=>{Object.keys(e).forEach(t=>{e[t]=e[t].text})}),t},json(e){return e=d(e,tt),et(this.data,e)},text:()=>"",wikitext(){return this._wiki||""}};nt.keyvalue=nt.keyValue,nt.keyval=nt.keyValue,Object.keys(nt).forEach(e=>{at.prototype[e]=nt[e]});var rt=at;const ot=/^\s*{\|/,st=/^\s*\|}/;var lt=function(e){let t=[],i=e._wiki,a=i.split("\n"),n=[];for(let e=0;e0&&(n[n.length-1]+="\n"+a[e]);else{n[n.length-1]+="\n"+a[e];let i=n.pop();t.push(i)}else n.push(a[e]);let r=[];t.forEach(e=>{if(e){i=i.replace(e+"\n",""),i=i.replace(e,"");let t=Qe(e);t&&t.length>0&&r.push(new rt(t,e))}}),r.length>0&&(e._tables=r),e._wiki=i};const ct={sentences:!0};var ut=function(e,t){let i={};return!0===(t=d(t,ct)).sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const pt={sentences:!0,lists:!0,images:!0},mt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},dt={sentences:function(){return this.data.sentences||[]},references:function(){return this.data.references},lists:function(){return this.data.lists},images(){return this.data.images||[]},links:function(e){let t=[];if(this.sentences().forEach(i=>{t=t.concat(i.links(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},interwiki(){let e=[];return this.sentences().forEach(t=>{e=e.concat(t.interwiki())}),e||[]},text:function(e){e=d(e,pt);let t=this.sentences().map(t=>t.text(e)).join(" ");return this.lists().forEach(e=>{t+="\n"+e.text()}),t},json:function(e){return e=d(e,pt),ut(this,e)},wikitext:function(){return this.data.wiki}};dt.citations=dt.references,Object.keys(dt).forEach(e=>{mt.prototype[e]=dt[e]});const ht={sentences:"sentence",references:"reference",citation:"citations",lists:"list",images:"image",links:"link"};Object.keys(ht).forEach(e=>{mt.prototype[ht[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}});var gt=mt;var ft=function(e){let t=[],i=[];const a=e.split("");let n=0;for(let r=0;r0){let e=0,a=0;for(let t=0;ta&&i.push("]"),t.push(i.join("")),i=[]}}return t};const kt=we,bt=new RegExp("("+f.images.join("|")+"):","i");let wt=`(${f.images.join("|")})`;const yt=new RegExp(wt+":(.+?)[\\||\\]]","iu"),$t={thumb:!0,thumbnail:!0,border:!0,right:!0,left:!0,center:!0,top:!0,bottom:!0,none:!0,upright:!0,baseline:!0,middle:!0,sub:!0,super:!0};var xt=function(e,t){let i=e.wiki;ft(i).forEach((function(a){if(!0===bt.test(a)){e.images=e.images||[];let n=function(e,t){let i=e.match(yt);if(null===i||!i[2])return null;let a=`${i[1]}:${i[2]||""}`;a=a.trim();let n=a.charAt(0).toUpperCase()+a.substring(1);if(n=n.replace(/ /g,"_"),n){let i={file:a,lang:t._lang,domain:t._domain,wiki:e};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");let n=Ne(e),r=n.list||[];return n.alt&&(i.alt=n.alt),r=r.filter(e=>!1===$t.hasOwnProperty(e)),r[r.length-1]&&(i.caption=kt(r[r.length-1])),new O(i)}return null}(a,t);n&&e.images.push(n),i=i.replace(a,"")}})),e.wiki=i};const vt={},jt=function(e,t=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},_t={lines(){return this.data},links(e){let t=[];if(this.lines().forEach(e=>{t=t.concat(e.links())}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},json(e){return e=d(e,vt),this.lines().map(t=>t.json(e))},text(){return((e,t)=>e.map(e=>" * "+e.text(t)).join("\n"))(this.data)},wikitext(){return this.wiki||""}};Object.keys(_t).forEach(e=>{jt.prototype[e]=_t[e]});var zt=jt;const Ot=we,Et=/^[#\*:;\|]+/,Ct=/^\*+[^:,\|]{4}/,St=/^ ?\#[^:,\|]{4}/,Nt=/[a-z_0-9\]\}]/i,qt=function(e){return Et.test(e)||Ct.test(e)||St.test(e)},Lt=function(e,t){let i=[];for(let a=t;ae&&Nt.test(e)),i=function(e){let t=1;e=e.filter(e=>e);for(let i=0;i0&&(a.push(t),e+=t.length-1)}else n.push(i[e]);e.lists=a.map(e=>new zt(e,t)),e.wiki=n.join("\n")}};var Dt=function(e,t){let i=e._wiki,a=i.split(At);a=a.filter(e=>e&&e.trim().length>0),a=a.map(e=>{let i={wiki:e,lists:[],sentences:[],images:[]};return Tt.list(i),Tt.image(i,t),Pt(i),new gt(i)}),e._wiki=i,e._paragraphs=a};const It="{";var Mt=function(e){let t=0,i=[],a=[];for(let n=e.indexOf(It);-1!==n&&n0?n++:n=e.indexOf(It,n+1)){let r=e[n];if(r===It&&(t+=1),t>0){if("}"===r&&(t-=1,0===t)){a.push(r);let e=a.join("");a=[],/\{\{/.test(e)&&/\}\}/.test(e)&&i.push(e);continue}if(1===t&&r!==It&&"}"!==r){t=0,a=[];continue}a.push(r)}}return i};var Rt=function(e){let t=null;return t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+?)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1],t&&(t=t.replace(/:.*/,""),t=xe(t)),t||null};const Ut=/\{\{/,Bt=function(e){return{body:e=e.replace(/#invoke:/,""),name:Rt(e),children:[]}},Kt=function(e){let t=e.body.substr(2);return t=t.replace(/\}\}$/,""),e.children=Mt(t),e.children=e.children.map(Bt),0===e.children.length||e.children.forEach(e=>{let t=e.body.substr(2);return Ut.test(t)?Kt(e):null}),e};var Ft=function(e){let t=Mt(e);return t=t.map(Bt),t=t.map(Kt),t};var Wt=["anchor","defaultsort","use list-defined references","void","pp","pp-move-indef","pp-semi-indef","pp-vandalism","r","#tag","div col","pope list end","shipwreck list end","starbox end","end box","end","s-end"].reduce((e,t)=>(e[t]=!0,e),{}),Yt={"gnf protein box":!0,"automatic taxobox":!0,"chembox ":!0,editnotice:!0,geobox:!0,hybridbox:!0,ichnobox:!0,infraspeciesbox:!0,mycomorphbox:!0,oobox:!0,"paraphyletic group":!0,speciesbox:!0,subspeciesbox:!0,"starbox short":!0,taxobox:!0,nhlteamseason:!0,"asian games bid":!0,"canadian federal election results":!0,"dc thomson comic strip":!0,"daytona 24 races":!0,edencharacter:!0,"moldova national football team results":!0,samurai:!0,protein:!0,"sheet authority":!0,"order-of-approx":!0,"bacterial labs":!0,"medical resources":!0,ordination:!0,"hockey team coach":!0,"hockey team gm":!0,"pro hockey team":!0,"hockey team player":!0,"hockey team start":!0,mlbbioret:!0};const Zt=new RegExp("^(subst.)?("+f.infoboxes.join("|")+")[: \n]","i"),Ht=/^infobox /i,Gt=/ infobox$/i,Vt=/$Year in [A-Z]/i;var Jt=function(e){return!0===Yt.hasOwnProperty(e)||(!!Zt.test(e)||(!(!Ht.test(e)&&!Gt.test(e))||!!Vt.test(e)))},Xt=function(e={}){let t=e.template.match(Zt),i=e.template;t&&t[0]&&(i=i.replace(t[0],"")),i=i.trim();let a={template:"infobox",type:i,data:e};return delete a.data.template,delete a.data.list,a};let Qt={imdb:"imdb name","imdb episodess":"imdb episode",localday:"currentday",localdayname:"currentdayname",localyear:"currentyear","birth date based on age at death":"birth based on age as of date","bare anchored list":"anchored list",cvt:"convert",cricon:"flagicon",sfrac:"frac",sqrt:"radic","unreferenced section":"unreferenced",redir:"redirect",sisterlinks:"sister project links","main article":"main"},ei={date:["byline","dateline"],citation:["cite","source","source-pr","source-science"],flagcountry:["cr","cr-rt"],trunc:["str left","str crop"],percentage:["pct","percentage"],rnd:["rndfrac","rndnear"],abbr:["tooltip","abbrv","define"],sfn:["sfnref","harvid","harvnb"],"birth date and age":["death date and age","bda"],currentmonth:["localmonth","currentmonthname","currentmonthabbrev"],currency:["monnaie","unité","nombre","nb","iso4217"],coord:["coor","coor title dms","coor title dec","coor dms","coor dm","coor dec"],"columns-list":["cmn","col-list","columnslist","collist"],nihongo:["nihongo2","nihongo3","nihongo-s","nihongo foot"],plainlist:["flatlist","ublist","plain list"],"winning percentage":["winpct","winperc"],"collapsible list":["unbulleted list","ubl"],"election box begin":["election box begin no change","election box begin no party","election box begin no party no change","election box inline begin","election box inline begin no change"],"election box candidate":["election box candidate for alliance","election box candidate minor party","election box candidate no party link no change","election box candidate with party link","election box candidate with party link coalition 1918","election box candidate with party link no change","election box inline candidate","election box inline candidate no change","election box inline candidate with party link","election box inline candidate with party link no change","election box inline incumbent"],"4teambracket":["2teambracket","4team2elimbracket","8teambracket","16teambracket","32teambracket","4roundbracket-byes","cwsbracket","nhlbracket","nhlbracket-reseed","4teambracket-nhl","4teambracket-ncaa","4teambracket-mma","4teambracket-mlb","16teambracket-two-reseeds","8teambracket-nhl","8teambracket-mlb","8teambracket-ncaa","8teambracket-afc","8teambracket-afl","8teambracket-tennis3","8teambracket-tennis5","16teambracket-nhl","16teambracket-nhl divisional","16teambracket-nhl-reseed","16teambracket-nba","16teambracket-swtc","16teambracket-afc","16teambracket-tennis3","16teambracket-tennis5"],start:["end","birth","death","start date","end date","birth date","death date","start date and age","end date and age","dob"],"start-date":["end-date","birth-date","death-date","birth-date and age","birth-date and given age","death-date and age","death-date and given age"],tl:["lts","t","tfd links","tiw","tltt","tetl","tsetl","ti","tic","tiw","tlt","ttl","twlh","tl2","tlu","demo","hatnote","xpd","para","elc","xtag","mli","mlix","#invoke","url"]};Object.keys(E).forEach(e=>{Qt["ipa-"+e]="ipa",Qt["ipac-"+e]="ipac"}),Object.keys(ei).forEach(e=>{ei[e].forEach(t=>{Qt[t]=e})});var ti=Qt;let ii={p1:0,p2:1,p3:2,resize:1,lang:1,"rtl-lang":1,l:2,h:1,sort:1};["defn","lino","finedetail","nobold","noitalic","nocaps","vanchor","rnd","date","taste","monthname","baseball secondary style","lang-de","nowrap","nobr","big","cquote","pull quote","small","smaller","midsize","larger","big","kbd","bigger","large","mono","strongbad","stronggood","huge","xt","xt2","!xt","xtn","xtd","dc","dcr","mxt","!mxt","mxtn","mxtd","bxt","!bxt","bxtn","bxtd","delink","pre","var","mvar","pre2","code"].forEach(e=>{ii[e]=0}),Object.keys(E).forEach(e=>{ii["lang-"+e]=0});var ai=ii;var ni={titlecase:e=>e.charAt(0).toUpperCase()+e.substring(1),sisterProjects:{wikt:"wiktionary",commons:"commons",c:"commons",commonscat:"commonscat",n:"wikinews",q:"wikiquote",s:"wikisource",a:"wikiauthor",b:"wikibooks",voy:"wikivoyage",v:"wikiversity",d:"wikidata",species:"wikispecies",m:"meta",mw:"mediawiki"},getLang:function(e){let t=e.match(/ipac?-(.+)/);return null!==t?!0===E.hasOwnProperty(t[1])?E[t[1]].english_title:t[1]:null},percentage:function(e){if(!e.numerator&&!e.denominator)return null;let t=Number(e.numerator)/Number(e.denominator);t*=100;let i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},toNumber:function(e=""){if("number"==typeof e)return e;e=(e=e.replace(/,/g,"")).replace(/−/g,"-");let t=Number(e);return isNaN(t)?e:t}},ri={ra:e=>{let t=Ne(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:e=>(Ne(e,["degrees"]).degrees||"")+"°",hms2deg:e=>{let t=Ne(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:e=>{let t=Ne(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},sortname:e=>{let t=Ne(e,["first","last","target","sort"]),i=`${t.first||""} ${t.last||""}`;return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=` (${t.dab})`,t.target&&(t.target+=` (${t.dab})`)),t.target?`[[${t.target}|${i}]]`:`[[${i}]]`)},"first word":e=>{let t=Ne(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:e=>{let t=Ne(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":e=>{let t=Ne(e,["str","start","end"]),i=parseInt(t.start,10)-1,a=parseInt(t.end,10);return t.str.substr(i,a)},reign:e=>{let t=Ne(e,["start","end"]);return`(r. ${t.start} – ${t.end})`},circa:e=>"c. "+Ne(e,["year"]).year,"decade link":e=>{let t=Ne(e,["year"]);return`${t.year}|${t.year}s`},decade:e=>{let t=Ne(e,["year"]),i=Number(t.year);return i=10*parseInt(i/10,10),i+"s"},century:e=>{let t=Ne(e,["year"]),i=Number(t.year);return i=parseInt(i/100,10)+1,""+i},radic:e=>{let t=Ne(e,["after","before"]);return`${t.before||""}√${t.after||""}`},"medical cases chart/row":e=>e,oldstyledate:e=>{let t=Ne(e,["date","year"]);return t.year?t.date+" "+t.year:t.date},braces:e=>{let t=Ne(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},hlist:e=>{let t=Ne(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:e=>(Ne(e).list||[]).join(", "),catlist:e=>(Ne(e).list||[]).join(", "),"br separated entries":e=>(Ne(e).list||[]).join("\n\n"),"comma separated entries":e=>(Ne(e).list||[]).join(", "),"anchored list":e=>{let t=Ne(e).list||[];return t=t.map((e,t)=>`${t+1}. ${e}`),t.join("\n\n")},"bulleted list":e=>{let t=Ne(e).list||[];return t=t.filter(e=>e),t=t.map(e=>"• "+e),t.join("\n\n")},plainlist:e=>{let t=(e=$e(e)).split("|").slice(1);return t=t.join("|").split(/\n ?\* ?/),t=t.filter(e=>e),t.join("\n\n")},term:e=>Ne(e,["term"]).term+":",linum:e=>{let t=Ne(e,["num","text"]);return`${t.num}. ${t.text}`},"block indent":e=>{let t=Ne(e);return t[1]?"\n"+t[1]+"\n":""},lbs:e=>{let t=Ne(e,["text"]);return`[[${t.text} Lifeboat Station|${t.text}]]`},lbc:e=>{let t=Ne(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}-class]]`},lbb:e=>{let t=Ne(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}]]`},"#dateformat":e=>(e=e.replace(/:/,"|"),Ne(e,["date","format"]).date),lc:e=>(e=e.replace(/:/,"|"),(Ne(e,["text"]).text||"").toLowerCase()),uc:e=>(e=e.replace(/:/,"|"),(Ne(e,["text"]).text||"").toUpperCase()),lcfirst:e=>{e=e.replace(/:/,"|");let t=Ne(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},ucfirst:e=>{e=e.replace(/:/,"|");let t=Ne(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:e=>{e=e.replace(/:/,"|");let t=Ne(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:e=>{e=e.replace(/:/,"|");let t=Ne(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbrlink:e=>{let t=Ne(e,["abbr","page"]);return t.page?`[[${t.page}|${t.abbr}]]`:`[[${t.abbr}]]`},own:e=>{let t=Ne(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},formatnum:e=>{e=e.replace(/:/,"|");let t=Ne(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},frac:e=>{let t=Ne(e,["a","b","c"]);return t.c?`${t.a} ${t.b}/${t.c}`:t.b?`${t.a}/${t.b}`:"1/"+t.b},convert:e=>{let t=Ne(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?`${t.num} ${t.two} ${t.three} ${t.four}`:`${t.num} ${t.two} ${t.three}`:`${t.num} ${t.two}`},tl:e=>{let t=Ne(e,["first","second"]);return t.second||t.first},won:e=>{let t=Ne(e,["text"]);return t.place||t.text||ni.titlecase(t.template)},tag:e=>{let t=Ne(e,["tag","open"]);const i={span:!0,div:!0,p:!0};return t.open&&"pair"!==t.open?"":i[t.tag]?t.content||"":`<${t.tag} ${t.attribs||""}>${t.content||""}`},plural:e=>{e=e.replace(/plural:/,"plural|");let t=Ne(e,["num","word"]),i=Number(t.num),a=t.word;return 1!==i&&(/.y$/.test(a)?a=a.replace(/y$/,"ies"):a+="s"),i+" "+a},dec:e=>{let t=Ne(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:e=>{let t=Ne(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());let a=i||"";return t.p&&(a=t.p+a),t.s&&(a=t.s+a),(t.u||t.ul||t.upl)&&(a=a+" "+(t.u||t.ul||t.upl)),a},percentage:e=>{let t=Ne(e,["numerator","denominator","decimals"]),i=ni.percentage(t);return null===i?"":i+"%"},"percent-done":e=>{let t=Ne(e,["done","total","digits"]),i=ni.percentage({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":`${t.done} (${i}%) done`}},oi=[["🇦🇩","and","andorra"],["🇦🇪","are","united arab emirates"],["🇦🇫","afg","afghanistan"],["🇦🇬","atg","antigua and barbuda"],["🇦🇮","aia","anguilla"],["🇦🇱","alb","albania"],["🇦🇲","arm","armenia"],["🇦🇴","ago","angola"],["🇦🇶","ata","antarctica"],["🇦🇷","arg","argentina"],["🇦🇸","asm","american samoa"],["🇦🇹","aut","austria"],["🇦🇺","aus","australia"],["🇦🇼","abw","aruba"],["🇦🇽","ala","åland islands"],["🇦🇿","aze","azerbaijan"],["🇧🇦","bih","bosnia and herzegovina"],["🇧🇧","brb","barbados"],["🇧🇩","bgd","bangladesh"],["🇧🇪","bel","belgium"],["🇧🇫","bfa","burkina faso"],["🇧🇬","bgr","bulgaria"],["🇧🇬","bul","bulgaria"],["🇧🇭","bhr","bahrain"],["🇧🇮","bdi","burundi"],["🇧🇯","ben","benin"],["🇧🇱","blm","saint barthélemy"],["🇧🇲","bmu","bermuda"],["🇧🇳","brn","brunei darussalam"],["🇧🇴","bol","bolivia"],["🇧🇶","bes","bonaire, sint eustatius and saba"],["🇧🇷","bra","brazil"],["🇧🇸","bhs","bahamas"],["🇧🇹","btn","bhutan"],["🇧🇻","bvt","bouvet island"],["🇧🇼","bwa","botswana"],["🇧🇾","blr","belarus"],["🇧🇿","blz","belize"],["🇨🇦","can","canada"],["🇨🇨","cck","cocos (keeling) islands"],["🇨🇩","cod","congo"],["🇨🇫","caf","central african republic"],["🇨🇬","cog","congo"],["🇨🇭","che","switzerland"],["🇨🇮","civ","côte d'ivoire"],["🇨🇰","cok","cook islands"],["🇨🇱","chl","chile"],["🇨🇲","cmr","cameroon"],["🇨🇳","chn","china"],["🇨🇴","col","colombia"],["🇨🇷","cri","costa rica"],["🇨🇺","cub","cuba"],["🇨🇻","cpv","cape verde"],["🇨🇼","cuw","curaçao"],["🇨🇽","cxr","christmas island"],["🇨🇾","cyp","cyprus"],["🇨🇿","cze","czech republic"],["🇩🇪","deu","germany"],["🇩🇪","ger","germany"],["🇩🇯","dji","djibouti"],["🇩🇰","dnk","denmark"],["🇩🇲","dma","dominica"],["🇩🇴","dom","dominican republic"],["🇩🇿","dza","algeria"],["🇪🇨","ecu","ecuador"],["🇪🇪","est","estonia"],["🇪🇬","egy","egypt"],["🇪🇭","esh","western sahara"],["🇪🇷","eri","eritrea"],["🇪🇸","esp","spain"],["🇪🇹","eth","ethiopia"],["🇫🇮","fin","finland"],["🇫🇯","fji","fiji"],["🇫🇰","flk","falkland islands (malvinas)"],["🇫🇲","fsm","micronesia"],["🇫🇴","fro","faroe islands"],["🇫🇷","fra","france"],["🇬🇦","gab","gabon"],["🇬🇧","gbr","united kingdom"],["🇬🇩","grd","grenada"],["🇬🇫","guf","french guiana"],["🇬🇬","ggy","guernsey"],["🇬🇭","gha","ghana"],["🇬🇮","gib","gibraltar"],["🇬🇱","grl","greenland"],["🇬🇲","gmb","gambia"],["🇬🇳","gin","guinea"],["🇬🇵","glp","guadeloupe"],["🇬🇶","gnq","equatorial guinea"],["🇬🇷","grc","greece"],["🇬🇸","sgs","south georgia"],["🇬🇹","gtm","guatemala"],["🇬🇺","gum","guam"],["🇬🇼","gnb","guinea-bissau"],["🇬🇾","guy","guyana"],["🇭🇰","hkg","hong kong"],["🇭🇲","hmd","heard island and mcdonald islands"],["🇭🇳","hnd","honduras"],["🇭🇷","hrv","croatia"],["🇭🇹","hti","haiti"],["🇭🇺","hun","hungary"],["🇮🇩","idn","indonesia"],["🇮🇪","irl","ireland"],["🇮🇱","isr","israel"],["🇮🇲","imn","isle of man"],["🇮🇳","ind","india"],["🇮🇴","iot","british indian ocean territory"],["🇮🇶","irq","iraq"],["🇮🇷","irn","iran"],["🇮🇸","isl","iceland"],["🇮🇹","ita","italy"],["🇯🇪","jey","jersey"],["🇯🇲","jam","jamaica"],["🇯🇴","jor","jordan"],["🇯🇵","jpn","japan"],["🇰🇪","ken","kenya"],["🇰🇬","kgz","kyrgyzstan"],["🇰🇭","khm","cambodia"],["🇰🇮","kir","kiribati"],["🇰🇲","com","comoros"],["🇰🇳","kna","saint kitts and nevis"],["🇰🇵","prk","north korea"],["🇰🇷","kor","south korea"],["🇰🇼","kwt","kuwait"],["🇰🇾","cym","cayman islands"],["🇰🇿","kaz","kazakhstan"],["🇱🇦","lao","lao people's democratic republic"],["🇱🇧","lbn","lebanon"],["🇱🇨","lca","saint lucia"],["🇱🇮","lie","liechtenstein"],["🇱🇰","lka","sri lanka"],["🇱🇷","lbr","liberia"],["🇱🇸","lso","lesotho"],["🇱🇹","ltu","lithuania"],["🇱🇺","lux","luxembourg"],["🇱🇻","lva","latvia"],["🇱🇾","lby","libya"],["🇲🇦","mar","morocco"],["🇲🇨","mco","monaco"],["🇲🇩","mda","moldova"],["🇲🇪","mne","montenegro"],["🇲🇫","maf","saint martin (french part)"],["🇲🇬","mdg","madagascar"],["🇲🇭","mhl","marshall islands"],["🇲🇰","mkd","macedonia"],["🇲🇱","mli","mali"],["🇲🇲","mmr","myanmar"],["🇲🇳","mng","mongolia"],["🇲🇴","mac","macao"],["🇲🇵","mnp","northern mariana islands"],["🇲🇶","mtq","martinique"],["🇲🇷","mrt","mauritania"],["🇲🇸","msr","montserrat"],["🇲🇹","mlt","malta"],["🇲🇺","mus","mauritius"],["🇲🇻","mdv","maldives"],["🇲🇼","mwi","malawi"],["🇲🇽","mex","mexico"],["🇲🇾","mys","malaysia"],["🇲🇿","moz","mozambique"],["🇳🇦","nam","namibia"],["🇳🇨","ncl","new caledonia"],["🇳🇪","ner","niger"],["🇳🇫","nfk","norfolk island"],["🇳🇬","nga","nigeria"],["🇳🇮","nic","nicaragua"],["🇳🇱","nld","netherlands"],["🇳🇴","nor","norway"],["🇳🇵","npl","nepal"],["🇳🇷","nru","nauru"],["🇳🇺","niu","niue"],["🇳🇿","nzl","new zealand"],["🇴🇲","omn","oman"],["🇵🇦","pan","panama"],["🇵🇪","per","peru"],["🇵🇫","pyf","french polynesia"],["🇵🇬","png","papua new guinea"],["🇵🇭","phl","philippines"],["🇵🇰","pak","pakistan"],["🇵🇱","pol","poland"],["🇵🇲","spm","saint pierre and miquelon"],["🇵🇳","pcn","pitcairn"],["🇵🇷","pri","puerto rico"],["🇵🇸","pse","palestinian territory"],["🇵🇹","prt","portugal"],["🇵🇼","plw","palau"],["🇵🇾","pry","paraguay"],["🇶🇦","qat","qatar"],["🇷🇪","reu","réunion"],["🇷🇴","rou","romania"],["🇷🇸","srb","serbia"],["🇷🇺","rus","russia"],["🇷🇼","rwa","rwanda"],["🇸🇦","sau","saudi arabia"],["🇸🇧","slb","solomon islands"],["🇸🇨","syc","seychelles"],["🇸🇩","sdn","sudan"],["🇸🇪","swe","sweden"],["🇸🇬","sgp","singapore"],["🇸🇭","shn","saint helena, ascension and tristan da cunha"],["🇸🇮","svn","slovenia"],["🇸🇯","sjm","svalbard and jan mayen"],["🇸🇰","svk","slovakia"],["🇸🇱","sle","sierra leone"],["🇸🇲","smr","san marino"],["🇸🇳","sen","senegal"],["🇸🇴","som","somalia"],["🇸🇷","sur","suriname"],["🇸🇸","ssd","south sudan"],["🇸🇹","stp","sao tome and principe"],["🇸🇻","slv","el salvador"],["🇸🇽","sxm","sint maarten (dutch part)"],["🇸🇾","syr","syrian arab republic"],["🇸🇿","swz","swaziland"],["🇹🇨","tca","turks and caicos islands"],["🇹🇩","tcd","chad"],["🇹🇫","atf","french southern territories"],["🇹🇬","tgo","togo"],["🇹🇭","tha","thailand"],["🇹🇯","tjk","tajikistan"],["🇹🇰","tkl","tokelau"],["🇹🇱","tls","timor-leste"],["🇹🇲","tkm","turkmenistan"],["🇹🇳","tun","tunisia"],["🇹🇴","ton","tonga"],["🇹🇷","tur","turkey"],["🇹🇹","tto","trinidad and tobago"],["🇹🇻","tuv","tuvalu"],["🇹🇼","twn","taiwan"],["🇹🇿","tza","tanzania"],["🇺🇦","ukr","ukraine"],["🇺🇬","uga","uganda"],["🇺🇲","umi","united states minor outlying islands"],["🇺🇸","us","united states"],["🇺🇸","usa","united states"],["🇺🇾","ury","uruguay"],["🇺🇿","uzb","uzbekistan"],["🇻🇦","vat","vatican city"],["🇻🇨","vct","saint vincent and the grenadines"],["🇻🇪","ven","venezuela"],["🇻🇬","vgb","virgin islands, british"],["🇻🇮","vir","virgin islands, u.s."],["🇻🇳","vnm","viet nam"],["🇻🇺","vut","vanuatu"],["🇼🇫","wlf","wallis and futuna"],["🇼🇸","wsm","samoa"],["🇾🇪","yem","yemen"],["🇾🇹","myt","mayotte"],["🇿🇦","zaf","south africa"],["🇿🇲","zmb","zambia"],["🇿🇼 ","zwe","zimbabwe"],["🇺🇳","un","united nations"],["🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿","eng","england"],["🏴󠁧󠁢󠁳󠁣󠁴󠁿","sct","scotland"],["🏴󠁧󠁢󠁷󠁬󠁳󠁿","wal","wales"],["🇪🇺","eu","european union"]];let si={flag:e=>{let t=Ne(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();let a=oi.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${a[0]||""} [[${a[2]}|${i}]]`},flagcountry:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=oi.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} [[${i[2]}]]`},flagcu:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=oi.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} ${i[2]}`},flagicon:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=oi.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`[[${i[2]}|${i[0]}]]`:""},flagdeco:e=>{let t=Ne(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(oi.find(e=>t.flag===e[1]||t.flag===e[2])||[])[0]||""},fb:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=oi.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${i[2]} national football team|${i[2]}]]`:""},fbicon:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=oi.find(e=>t.flag===e[1]||t.flag===e[2]);return i?` [[${i[2]} national football team|${i[0]}]]`:""},flagathlete:e=>{let t=Ne(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=oi.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${t.name||""}]] (${i[1].toUpperCase()})`:`[[${t.name||""}]]`}};oi.forEach(e=>{si[e[1]]=()=>e[0]});var li=si;const ci=ni.titlecase;let ui={};["rh","rh2","yes","no","maybe","eliminated","lost","safe","active","site active","coming soon","good","won","nom","sho","longlisted","tba","success","operational","failure","partial","regional","maybecheck","partial success","partial failure","okay","yes-no","some","nonpartisan","pending","unofficial","unofficial2","usually","rarely","sometimes","any","varies","black","non-album single","unreleased","unknown","perhaps","depends","included","dropped","terminated","beta","table-experimental","free","proprietary","nonfree","needs","nightly","release-candidate","planned","scheduled","incorrect","no result","cmain","calso starring","crecurring","cguest","not yet","optional"].forEach(e=>{ui[e]=e=>{let t=Ne(e,["text"]);return t.text||ci(t.template)}});[["active fire","Active"],["site active","Active"],["site inactive","Inactive"],["yes2",""],["no2",""],["ya","✅"],["na","❌"],["nom","Nominated"],["sho","Shortlisted"],["tba","TBA"],["maybecheck","✔️"],["okay","Neutral"],["n/a","N/A"],["sdash","—"],["dunno","?"],["draw",""],["cnone",""],["nocontest",""]].forEach(e=>{ui[e[0]]=t=>Ne(t,["text"]).text||e[1]});var pi=ui,mi=Object.assign({},{"·":"·",dot:"·",middot:"·","•":" • ",",":",","1/2":"1⁄2","1/3":"1⁄3","2/3":"2⁄3","1/4":"1⁄4","3/4":"3⁄4","–":"–",ndash:"–","en dash":"–","spaced ndash":" – ","—":"—",mdash:"—","em dash":"—","number sign":"#",ibeam:"I","&":"&",";":";",ampersand:"&",snds:" – ",snd:" – ","^":" ","!":"|","\\":" /","`":"`","=":"=",bracket:"[","[":"[","*":"*",asterisk:"*","long dash":"———",clear:"\n\n","h.":"ḥ",profit:"▲",loss:"▼",gain:"▲"},ai,ri,li,pi);let di={};["goodreads author","twitter","facebook","instagram","tumblr","pinterest","espn nfl","espn nhl","espn fc","hockeydb","fifa player","worldcat","worldcat id","nfl player","ted speaker","playmate"].forEach(e=>{di[e]=["id","name"]});var hi=di;let gi={};["imdb title","imdb name","imdb episode","imdb event","afi film","allmovie title","allgame","tcmdb title","discogs artist","discogs label","discogs release","discogs master","librivox author","musicbrainz artist","musicbrainz label","musicbrainz recording","musicbrainz release","musicbrainz work","youtube","goodreads book","dmoz"].forEach(e=>{gi[e]=["id","title","description","section"]});var fi=gi,ki={ipa:(e,t)=>{let i=Ne(e,["transcription","lang","audio"]);return i.lang=ni.getLang(i.template),i.template="ipa",t.push(i),""},ipac:(e,t)=>{let i=Ne(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=ni.getLang(i.template),i.template="ipac",t.push(i),""},quote:(e,t)=>{let i=Ne(e,["text","author"]);if(t.push(i),i.text){let e=`"${i.text}"`;return i.author&&(e+="\n\n",e+=" - "+i.author),e+"\n"}return""},"cite gnis":(e,t)=>{let i=Ne(e,["id","name","type"]);return i.type="gnis",i.template="citation",t.push(i),""},"spoken wikipedia":(e,t)=>{let i=Ne(e,["file","date"]);return i.template="audio",t.push(i),""},yel:(e,t)=>{let i=Ne(e,["min"]);return t.push(i),i.min?`yellow: ${i.min||""}'`:""},subon:(e,t)=>{let i=Ne(e,["min"]);return t.push(i),i.min?`sub on: ${i.min||""}'`:""},suboff:(e,t)=>{let i=Ne(e,["min"]);return t.push(i),i.min?`sub off: ${i.min||""}'`:""},sfn:(e,t,i,a)=>{let n=Ne(e,["author","year","location"]);return a&&(n.name=n.template,n.teplate=a),t.push(n),""},redirect:(e,t)=>{let i=Ne(e,["redirect"]),a=i.list||[],n=[];for(let e=0;e{let i=Ne(e),a={};Object.keys(ni.sisterProjects).forEach(e=>{!0===i.hasOwnProperty(e)&&(a[ni.sisterProjects[e]]=i[e])});let n={template:"sister project links",links:a};return t.push(n),""},"subject bar":(e,t)=>{let i=Ne(e);Object.keys(i).forEach(e=>{ni.sisterProjects.hasOwnProperty(e)&&(i[ni.sisterProjects[e]]=i[e],delete i[e])});let a={template:"subject bar",links:i};return t.push(a),""},gallery:(e,t)=>{let i=Ne(e),a=(i.list||[]).filter(e=>/^ *File ?:/.test(e));return a=a.map(e=>new O({file:e}).json()),i={template:"gallery",images:a},t.push(i),""},sky:(e,t)=>{let i=Ne(e,["asc_hours","asc_minutes","asc_seconds","dec_sign","dec_degrees","dec_minutes","dec_seconds","distance"]),a={template:"sky",ascension:{hours:i.asc_hours,minutes:i.asc_minutes,seconds:i.asc_seconds},declination:{sign:i.dec_sign,degrees:i.dec_degrees,minutes:i.dec_minutes,seconds:i.dec_seconds},distance:i.distance};return t.push(a),""},"medical cases chart":(e,t)=>{let i=["date","deathsExpr","recoveriesExpr","casesExpr","4thExpr","5thExpr","col1","col1Change","col2","col2Change"],a=Ne(e);a.data=a.data||"";let n=a.data.split("\n").map(e=>{let t=e.split(";"),a={options:new Map},n=0;for(let e=0;e{let i=Ne(e);i.x&&(i.x=i.x.split(",").map(e=>e.trim())),i.y&&(i.y=i.y.split(",").map(e=>e.trim()));let a=1;for(;i["y"+a];)i["y"+a]=i["y"+a].split(",").map(e=>e.trim()),a+=1;return t.push(i),""},"historical populations":(e,t)=>{let i=Ne(e);i.list=i.list||[];let a=[];for(let e=0;e{const i=/^jan /i,a=/^year /i;let n=Ne(e);const r=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];let o={},s=Object.keys(n).filter(e=>i.test(e));s=s.map(e=>e.replace(i,"")),s.forEach(e=>{o[e]=[],r.forEach(t=>{let i=`${t} ${e}`;if(n.hasOwnProperty(i)){let t=ni.toNumber(n[i]);delete n[i],o[e].push(t)}})}),n.byMonth=o;let l={};return Object.keys(n).forEach(e=>{if(a.test(e)){let t=e.replace(a,"");l[t]=n[e],delete n[e]}}),n.byYear=l,t.push(n),""},"weather box/concise c":(e,t)=>{let i=Ne(e);return i.list=i.list.map(e=>ni.toNumber(e)),i.byMonth={"high c":i.list.slice(0,12),"low c":i.list.slice(12,24),"rain mm":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"weather box/concise f":(e,t)=>{let i=Ne(e);return i.list=i.list.map(e=>ni.toNumber(e)),i.byMonth={"high f":i.list.slice(0,12),"low f":i.list.slice(12,24),"rain inch":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"climate chart":(e,t)=>{let i=Ne(e).list||[],a=i[0],n=i[38];i=i.slice(1),i=i.map(e=>(e&&"−"===e[0]&&(e=e.replace(/−/,"-")),e));let r=[];for(let e=0;e<36;e+=3)r.push({low:ni.toNumber(i[e]),high:ni.toNumber(i[e+1]),precip:ni.toNumber(i[e+2])});let o={template:"climate chart",data:{title:a,source:n,months:r}};return t.push(o),""}};let bi={"find a grave":["id","name","work","last","first","date","accessdate"],congbio:["id","name","date"],"hollywood walk of fame":["name"],"wide image":["file","width","caption"],audio:["file","text","type"],rp:["page"],"short description":["description"],"coord missing":["region"],unreferenced:["date"],"taxon info":["taxon","item"],"portuguese name":["first","second","suffix"],geo:["lat","lon","zoom"]};bi=Object.assign(bi,hi,fi,ki);var wi=bi;var yi={math:(e,t)=>{let i=Ne(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},isbn:(e,t)=>{let i=Ne(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},"based on":(e,t)=>{let i=Ne(e,["title","author"]);return t.push(i),`${i.title} by ${i.author||""}`},"bbl to t":(e,t)=>{let i=Ne(e,["barrels"]);return t.push(i),"0"===i.barrels?i.barrels+" barrel":i.barrels+" barrels"},mpc:(e,t)=>{let i=Ne(e,["number","text"]);return t.push(i),`[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${i.text||i.number}]`},pengoal:(e,t)=>(t.push({template:"pengoal"}),"✅"),penmiss:(e,t)=>(t.push({template:"penmiss"}),"❌"),"ordered list":(e,t)=>{let i=Ne(e);return t.push(i),i.list=i.list||[],i.list.map((e,t)=>`${t+1}. ${e}`).join("\n\n")},"title year":(e,t,i,a,n)=>{let r=Ne(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b[0-9]{4}\b/);if(e)return e[0]}return r.nomatch||""},"title century":(e,t,i,a,n)=>{let r=Ne(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)(st|nd|rd|th)\b/);if(e)return e[1]||""}return r.nomatch||""},"title decade":(e,t,i,a,n)=>{let r=Ne(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)s\b/);if(e)return e[1]||""}return r.nomatch||""},nihongo:(e,t)=>{let i=Ne(e,["english","kanji","romaji","extra"]);t.push(i);let a=i.english||i.romaji||"";return i.kanji&&(a+=` (${i.kanji})`),a},marriage:(e,t)=>{let i=Ne(e,["spouse","from","to","end"]);t.push(i);let a=i.spouse||"";return i.from&&(i.to?a+=` (m. ${i.from}-${i.to})`:a+=` (m. ${i.from})`),a},"sent off":(e,t)=>{let i=Ne(e,["cards"]),a={template:"sent off",cards:i.cards,minutes:i.list||[]};return t.push(a),"sent off: "+a.minutes.map(e=>e+"'").join(", ")},transl:(e,t)=>{let i=Ne(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""},"collapsible list":(e,t)=>{let i=Ne(e);t.push(i);let a="";if(i.title&&(a+=`'''${i.title}'''\n\n`),!i.list){i.list=[];for(let e=1;e<10;e+=1)i[e]&&(i.list.push(i[e]),delete i[e])}return i.list=i.list.filter(e=>e),a+=i.list.join("\n\n"),a},"columns-list":(e,t)=>{let i=((Ne(e).list||[])[0]||"").split(/\n/).filter(e=>e);return i=i.map(e=>e.replace(/\*/,"")),t.push({template:"columns-list",list:i}),i=i.map(e=>"• "+e),i.join("\n\n")},height:(e,t)=>{let i=Ne(e);t.push(i);let a=[];return["m","cm","ft","in"].forEach(e=>{!0===i.hasOwnProperty(e)&&a.push(i[e]+e)}),a.join(" ")},sic:(e,t)=>{let i=Ne(e,["one","two","three"]),a=(i.one||"")+(i.two||"");return"?"===i.one&&(a=(i.two||"")+(i.three||"")),t.push({template:"sic",word:a}),"y"===i.nolink?a:a+" [sic]"},inrconvert:(e,t)=>{let i=Ne(e,["rupee_value","currency_formatting"]);t.push(i);const a={k:1e3,m:1e6,b:1e9,t:1e12,l:1e5,c:1e7,lc:1e12};if(i.currency_formatting){let e=a[i.currency_formatting]||1;i.rupee_value=i.rupee_value*e}return"inr "+(i.rupee_value||"")},frac:(e,t)=>{let i=Ne(e,["a","b","c"]),a={template:"sfrac"};return i.c?(a.integer=i.a,a.numerator=i.b,a.denominator=i.c):i.b?(a.numerator=i.a,a.denominator=i.b):(a.numerator=1,a.denominator=i.a),t.push(a),a.integer?`${a.integer} ${a.numerator}⁄${a.denominator}`:`${a.numerator}⁄${a.denominator}`},"winning percentage":(e,t)=>{let i=Ne(e,["wins","losses","ties"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=Number(i.ties)||0,o=a+n+r;"y"===i.ignore_ties&&(r=0),r&&(a+=r/2);let s=ni.percentage({numerator:a,denominator:o,decimals:1});return null===s?"":"."+10*s},winlosspct:(e,t)=>{let i=Ne(e,["wins","losses"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=ni.percentage({numerator:a,denominator:a+n,decimals:1});return null===r?"":(r="."+10*r,`${a||0} || ${n||0} || ${r||"-"}`)},"video game release":(e,t)=>{let i=["region","date","region2","date2","region3","date3","region4","date4"],a=Ne(e,i),n={template:"video game release",releases:[]};for(let e=0;e`${e.region}: ${e.date||""}`).join("\n\n")+"\n"},uss:(e,t)=>{let i=Ne(e,["name","id"]);return t.push(i),i.id?`[[USS ${i.name} (${i.id})|USS ''${i.name}'' (${i.id})]]`:`[[USS ${i.name}|USS ''${i.name}'']]`}};const $i={"£":"GB£","¥":"¥","৳":"৳","₩":"₩","€":"€","₱":"₱","₹":"₹","₽":"₽","cn¥":"CN¥","gb£":"GB£","india rs":"₹","indian rupee symbol":"₹","indian rupee":"₹","indian rupees":"₹","philippine peso":"₱","russian ruble":"₽","SK won":"₩","turkish lira":"TRY",a$:"A$",au$:"A$",aud:"A$",bdt:"BDT",brl:"BRL",ca$:"CA$",cad:"CA$",chf:"CHF",cny:"CN¥",czk:"czk",dkk:"dkk",dkk2:"dkk",euro:"€",gbp:"GB£",hk$:"HK$",hkd:"HK$",ils:"ILS",inr:"₹",jpy:"¥",myr:"MYR",nis:"ILS",nok:"NOK",nok2:"NOK",nz$:"NZ$",nzd:"NZ$",peso:"peso",pkr:"₨",r$:"BRL",rmb:"CN¥",rub:"₽",ruble:"₽",rupee:"₹",s$:"sgd",sek:"SEK",sek2:"SEK",sfr:"CHF",sgd:"sgd",shekel:"ILS",sheqel:"ILS",ttd:"TTD",us$:"US$",usd:"US$",yen:"¥",zar:"R"},xi=(e,t)=>{let i=Ne(e,["amount","code"]);t.push(i);let a=i.template||"";"currency"===a?(a=i.code,a||(i.code=a="usd")):""!==a&&"monnaie"!==a&&"unité"!==a&&"nombre"!==a&&"nb"!==a||(a=i.code),a=(a||"").toLowerCase(),"us"===a?i.code=a="usd":"uk"===a&&(i.code=a="gbp");let n=`${$i[a]||""}${i.amount||""}`;return i.code&&!$i[i.code.toLowerCase()]&&(n+=" "+i.code),n};let vi={currency:xi};Object.keys($i).forEach(e=>{vi[e]=xi});var ji=vi;const _i=864e5,zi=30*_i,Oi=365*_i,Ei=function(e){return new Date(`${e.year}-${e.month||0}-${e.date||1}`).getTime()};var Ci={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],timeSince:function(e){let t=new Date(e);if(isNaN(t.getTime()))return"";let i=(new Date).getTime()-t.getTime(),a="ago";i<0&&(a="from now",i=Math.abs(i));let n=i/1e3/60/60/24;return n<365?parseInt(n,10)+" days "+a:parseInt(n/365,10)+" years "+a},delta:function(e,t){e=Ei(e);let i=(t=Ei(t))-e,a={},n=Math.floor(i/Oi,10);n>0&&(a.years=n,i-=a.years*Oi);let r=Math.floor(i/zi,10);r>0&&(a.months=r,i-=a.months*zi);let o=Math.floor(i/_i,10);return o>0&&(a.days=o),a},toOrdinal:function(e){let t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"}};const Si=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],Ni=Si.reduce((e,t,i)=>(0===i||(e[t.toLowerCase()]=i),e),{}),qi=function(e){return e<10?"0"+e:String(e)};var Li=function(e){let t=String(e.year||"");if(void 0!==e.month&&!0===Si.hasOwnProperty(e.month))if(void 0===e.date)t=`${Si[e.month]} ${e.year}`;else{if(t=`${Si[e.month]} ${e.date}, ${e.year}`,void 0!==e.hour&&void 0!==e.minute){let i=`${qi(e.hour)}:${qi(e.minute)}`;void 0!==e.second&&(i=i+":"+qi(e.second)),t=i+", "+t}e.tz&&(t+=` (${e.tz})`)}return t},Pi=function(e){let t={},i=["year","month","date","hour","minute","second"];for(let a=0;a{let i=Ne(e,["year","month","date","hour","minute","second","timezone"]),a=Pi([i.year,i.month,i.date||i.day]);return i.text=Li(a),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=` (${i.timezone})`),i.hour&&i.minute&&(i.second?i.text=`${i.hour}:${i.minute}:${i.second}, `+i.text:i.text=`${i.hour}:${i.minute}, `+i.text),i.text&&t.push(Ti(i)),i.text},natural_date:(e,t)=>{let i=Ne(e,["text"]).text||"",a={};if(/^[0-9]{4}$/.test(i))a.year=parseInt(i,10);else{let e=i.replace(/[a-z]+\/[a-z]+/i,"");e=e.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");let t=new Date(e);!1===isNaN(t.getTime())&&(a.year=t.getFullYear(),a.month=t.getMonth()+1,a.date=t.getDate())}return t.push(Ti(a)),i.trim()},one_year:(e,t)=>{let i=Ne(e,["year"]),a=Number(i.year);return t.push(Ti({year:a})),String(a)},two_dates:(e,t)=>{let i=Ne(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){let e=Pi([i.birth_year,i.birth_month,i.birth_date]);return t.push(Ti(e)),Li(e)}let a=Pi([i.death_year,i.death_month,i.death_date]);return t.push(Ti(a)),Li(a)},age:e=>{let t=Di(e);return Ai(t.from,t.to).years||0},"diff-y":e=>{let t=Di(e),i=Ai(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":e=>{let t=Di(e),i=Ai(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),a.join(", ")},"diff-ymd":e=>{let t=Di(e),i=Ai(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-yd":e=>{let t=Di(e),i=Ai(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-d":e=>{let t=Di(e),i=Ai(t.from,t.to),a=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")}};const Mi=["January","February","March","April","May","June","July","August","September","October","November","December"];var Ri={currentday:()=>{let e=new Date;return String(e.getDate())},currentdayname:()=>{let e=new Date;return Ci.days[e.getDay()]},currentmonth:()=>{let e=new Date;return Mi[e.getMonth()]},currentyear:()=>{let e=new Date;return String(e.getFullYear())},monthyear:()=>{let e=new Date;return Mi[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":()=>{let e=new Date;return e.setMonth(e.getMonth()-1),Mi[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":()=>{let e=new Date;return e.setMonth(e.getMonth()+1),Mi[e.getMonth()]+" "+e.getFullYear()},"time ago":e=>{let t=Ne(e,["date","fmt"]).date;return Ci.timeSince(t)},"birth date and age":(e,t)=>{let i=Ne(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?Ii.natural_date(e,t):(t.push(i),i=Pi([i.year,i.month,i.day]),Li(i))},"birth year and age":(e,t)=>{let i=Ne(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return Ii.natural_date(e,t);t.push(i);let a=(new Date).getFullYear()-parseInt(i.birth_year,10);i=Pi([i.birth_year,i.birth_month]);let n=Li(i);return a&&(n+=` (age ${a})`),n},"death year and age":(e,t)=>{let i=Ne(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?Ii.natural_date(e,t):(t.push(i),i=Pi([i.death_year,i.death_month]),Li(i))},"birth date and age2":(e,t)=>{let i=Ne(e,["at_year","at_month","at_day","birth_year","birth_month","birth_day"]);return t.push(i),i=Pi([i.birth_year,i.birth_month,i.birth_day]),Li(i)},"birth based on age as of date":(e,t)=>{let i=Ne(e,["age","year","month","day"]);t.push(i);let a=parseInt(i.age,10),n=parseInt(i.year,10)-a;return n&&a?`${n} (age ${i.age})`:`(age ${i.age})`},"death date and given age":(e,t)=>{let i=Ne(e,["year","month","day","age"]);t.push(i),i=Pi([i.year,i.month,i.day]);let a=Li(i);return i.age&&(a+=` (age ${i.age})`),a},dts:e=>{e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");let t=Ne(e,["year","month","date","bc"]);return t.date&&t.month&&t.year?!0===/[a-z]/.test(t.month)?[t.month,t.date,t.year].join(" "):[t.year,t.month,t.date].join("-"):t.month&&t.year?[t.year,t.month].join("-"):t.year?(t.year<0&&(t.year=Math.abs(t.year)+" BC"),t.year):""},time:()=>{let e=new Date,t=Pi([e.getFullYear(),e.getMonth(),e.getDate()]);return Li(t)},millennium:e=>{let t=Ne(e,["year"]),i=Number(t.year);return i=parseInt(i/1e3,10)+1,t.abbr&&"y"===t.abbr?i<0?Ci.toOrdinal(Math.abs(i))+" BC":""+Ci.toOrdinal(i):Ci.toOrdinal(i)+" millennium"},start:Ii.date,"start-date":Ii.natural_date,birthdeathage:Ii.two_dates,age:Ii.age,"age nts":Ii.age,"age in years":Ii["diff-y"],"age in years and months":Ii["diff-ym"],"age in years, months and days":Ii["diff-ymd"],"age in years and days":Ii["diff-yd"],"age in days":Ii["diff-d"]};function Ui(e){let t=e.pop(),i=Number(e[0]||0),a=Number(e[1]||0),n=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;let r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+a/60+n/3600)}const Bi=function(e){if("number"!=typeof e)return e;let t=1e5;return Math.round(e*t)/t},Ki={s:!0,w:!0};var Fi=function(e){let t=Ne(e);t=function(e){return e.list=e.list||[],e.list=e.list.map(t=>{let i=Number(t);if(!isNaN(i))return i;let a=t.split(/:/);return a.length>1?(e.props=e.props||{},e.props[a[0]]=a.slice(1).join(":"),null):t}),e.list=e.list.filter(e=>null!==e),e}(t);let i=function(e){const t=e.map(e=>typeof e).join("|");return 2===e.length&&"number|number"===t?{lat:e[0],lon:e[1]}:4===e.length&&"number|string|number|string"===t?(Ki[e[1].toLowerCase()]&&(e[0]*=-1),"w"===e[3].toLowerCase()&&(e[2]*=-1),{lat:e[0],lon:e[2]}):6===e.length?{lat:Ui(e.slice(0,3)),lon:Ui(e.slice(3))}:8===e.length?{lat:Ui(e.slice(0,4)),lon:Ui(e.slice(4))}:{}}(t.list);return t.lat=Bi(i.lat),t.lon=Bi(i.lon),t.template="coord",delete t.list,t};var Wi={coord:(e,t)=>{let i=Fi(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":`${i.lat||""}°N, ${i.lon||""}°W`}};const Yi=function(e,t,i,a){let n=Ne(e);return a&&(n.name=n.template,n.template=a),t.push(n),""};var Zi={persondata:Yi,taxobox:Yi,citation:Yi,portal:Yi,reflist:Yi,"cite book":Yi,"cite journal":Yi,"cite web":Yi,"commons cat":Yi,"election box candidate":Yi,"election box begin":Yi,main:Yi};const Hi={adx:"adx",aim:"aim",amex:"amex",asx:"asx",athex:"athex",b3:"b3","B3 (stock exchange)":"B3 (stock exchange)",barbadosse:"barbadosse",bbv:"bbv",bcba:"bcba",bcs:"bcs",bhse:"bhse",bist:"bist",bit:"bit","bm&f bovespa":"b3","bm&f":"b3",bmad:"bmad",bmv:"bmv","bombay stock exchange":"bombay stock exchange","botswana stock exchange":"botswana stock exchange",bpse:"bpse",bse:"bse",bsx:"bsx",bvb:"bvb",bvc:"bvc",bvl:"bvl",bvpasa:"bvpasa",bwse:"bwse","canadian securities exchange":"canadian securities exchange",cse:"cse",darse:"darse",dfm:"dfm",dse:"dse",euronext:"euronext",euronextparis:"euronextparis",fse:"fse",fwb:"fwb",gse:"gse",gtsm:"gtsm",idx:"idx",ise:"ise",iseq:"iseq",isin:"isin",jasdaq:"jasdaq",jse:"jse",kase:"kase",kn:"kn",krx:"krx",lse:"lse",luxse:"luxse","malta stock exchange":"malta stock exchange",mai:"mai",mcx:"mcx",mutf:"mutf",myx:"myx",nag:"nag","nasdaq dubai":"nasdaq dubai",nasdaq:"nasdaq",neeq:"neeq",nepse:"nepse",nex:"nex",nse:"nse",newconnect:"newconnect","nyse arca":"nyse arca",nyse:"nyse",nzx:"nzx","omx baltic":"omx baltic",omx:"omx",ose:"ose","otc expert":"otc expert","otc grey":"otc grey","otc pink":"otc pink",otcqb:"otcqb",otcqx:"otcqx","pfts ukraine stock exchange":"pfts ukraine stock exchange","philippine stock exchange":"philippine stock exchange",prse:"prse",psx:"psx",karse:"karse",qe:"qe","saudi stock exchange":"saudi stock exchange",sehk:"sehk","Stock Exchange of Thailand":"Stock Exchange of Thailand",set:"set",sgx:"sgx",sse:"sse",swx:"swx",szse:"szse",tase:"tase","tsx-v":"tsx-v",tsx:"tsx",tsxv:"tsxv",ttse:"ttse",twse:"twse",tyo:"tyo",wbag:"wbag",wse:"wse","zagreb stock exchange":"zagreb stock exchange","zimbabwe stock exchange":"zimbabwe stock exchange",zse:"zse"},Gi=(e,t)=>{let i=Ne(e,["ticketnumber","code"]);t.push(i);let a=i.template||"";""===a&&(a=i.code),a=(a||"").toLowerCase();let n=Hi[a]||"";return i.ticketnumber&&(n=`${n}: ${i.ticketnumber}`),i.code&&!Hi[i.code.toLowerCase()]&&(n+=" "+i.code),n},Vi={};Object.keys(Hi).forEach(e=>{Vi[e]=Gi});var Ji=Vi;const Xi=function(e){return 1===(e=String(e)).length&&(e="0"+e),e},Qi=function(e,t,i){e[`rd${t}-team${Xi(i)}`]&&(i=Xi(i));let a=e[`rd${t}-score${i}`],n=Number(a);return!1===isNaN(n)&&(a=n),{team:e[`rd${t}-team${i}`],score:a,seed:e[`rd${t}-seed${i}`]}};var ea=function(e){let t=[],i=Ne(e);for(let e=1;e<7;e+=1){let a=[];for(let t=1;t<16;t+=2){let n=`rd${e}-team`;if(!i[n+t]&&!i[n+Xi(t)])break;{let n=Qi(i,e,t),r=Qi(i,e,t+1);a.push([n,r])}}a.length>0&&t.push(a)}return{template:"playoffbracket",rounds:t}};var ta={"4teambracket":function(e,t){let i=ea(e);return t.push(i),""},player:(e,t)=>{let i=Ne(e,["number","country","name","dl"]);t.push(i);let a=`[[${i.name}]]`;if(i.country){let e=(i.country||"").toLowerCase(),t=oi.find(t=>e===t[1]||e===t[2])||[];t&&t[0]&&(a=t[0]+" "+a)}return i.number&&(a=i.number+" "+a),a},goal:(e,t)=>{let i={template:"goal",data:[]},a=Ne(e).list||[];for(let e=0;e{let t=e.note;return t&&(t=` (${t})`),e.min+"'"+t}).join(", "),n},"sports table":(e,t)=>{let i=Ne(e),a={};Object.keys(i).filter(e=>/^team[0-9]/.test(e)).map(e=>i[e].toLowerCase()).forEach(e=>{a[e]={name:i["name_"+e],win:Number(i["win_"+e])||0,loss:Number(i["loss_"+e])||0,tie:Number(i["tie_"+e])||0,otloss:Number(i["otloss_"+e])||0,goals_for:Number(i["gf_"+e])||0,goals_against:Number(i["ga_"+e])||0}});let n={date:i.update,header:i.table_header,teams:a};t.push(n)}},ia=Object.assign({},{mlbplayer:{props:["number","name","il"],out:"name"},syntaxhighlight:{props:[],out:"code"},samp:{props:["1"],out:"1"},sub:{props:["text"],out:"text"},sup:{props:["text"],out:"text"},chem2:{props:["equation"],out:"equation"},ill:{props:["text","lan1","text1","lan2","text2"],out:"text"},abbr:{props:["abbr","meaning","ipa"],out:"abbr"}},yi,ji,Ri,Wi,Zi,Ji,ea,ta,ea,ta);let aa=Object.assign({},mi,wi,ia);Object.keys(ti).forEach(e=>{aa[e]=aa[ti[e]]});var na=aa;const{isArray:ra,isObject:oa}=r,sa=["0","1","2","3","4","5","6","7","8","9"];var la=function(e,t){let i=e.name;if(!0===Wt.hasOwnProperty(i))return[""];if(!0===Jt(i)){let t=Ne(e.body,[],"raw");return["",Xt(t)]}if(!0===/^cite [a-z]/.test(i)){let t=Ne(e.body);return t.type=t.template,t.template="citation",["",t]}if(!0===na.hasOwnProperty(i)){if("number"==typeof na[i]){return[Ne(e.body,sa)[String(na[i])]||""]}if("string"==typeof na[i])return[na[i]];if(!0===ra(na[i])){return["",Ne(e.body,na[i])]}if(!0===oa(na[i])){let t=Ne(e.body,na[i].props);return[t[na[i].out],t]}if("function"==typeof na[i]){let a=[];return[na[i](e.body,a,Ne,null,t),a[0]]}}let a=Ne(e.body);return 0===Object.keys(a).length&&(a=null),["",a]};var ca=function(e,t){let i=Object.keys(e.data).reduce((t,i)=>(e.data[i]&&(t[i]=e.data[i].json()),t),{});return!0===t.encode&&(i=G(i)),i};const{isArray:ua}=r,pa=(e="")=>(e=(e=e.toLowerCase()).replace(/[-_]/g," ")).trim(),ma=function(e,t){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},da={type:function(){return this._type},links:function(e){let t=[];if(Object.keys(this.data).forEach(e=>{this.data[e].links().forEach(e=>t.push(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},image:function(){let e=this.data.image||this.data.image2||this.data.logo||this.data.image_skyline||this.data.image_flag;if(!e)return null;let t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new O(t)},get:function(e){let t=Object.keys(this.data);if("string"==typeof e){let i=pa(e);for(let e=0;e{for(let i=0;i(this.data[t]&&(e[t]=this.data[t].text()),e),{})}};Object.keys(da).forEach(e=>{ma.prototype[e]=da[e]}),ma.prototype.data=ma.prototype.keyValue,ma.prototype.template=ma.prototype.type,ma.prototype.images=ma.prototype.image;var ha=ma;const ga=we,fa={text:function(){let e=this._text||"";return ga(e).text()},json:function(){return this.data||{}},wikitext:function(){return this.wiki||""}},ka=function(e,t="",i=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_text",{enumerable:!1,value:t}),Object.defineProperty(this,"wiki",{enumerable:!1,value:i})};Object.keys(fa).forEach(e=>{ka.prototype[e]=fa[e]});var ba=ka;const wa=/^(cite |citation)/i,ya={citation:!0,refn:!0,harvnb:!0,source:!0};var $a=function(e,t){let i={infoboxes:[],templates:[],references:[]};return e.forEach(e=>{let a=e.json,n=a.template||a.type||a.name;if(!0!==ya[n]&&!0!==wa.test(n))return"infobox"===a.template&&"yes"!==a.subbox?(a.domain=t,a.data=a.data||{},void i.infoboxes.push(new ha(a,e.wiki))):void i.templates.push(new ba(a,e.text,e.wiki));i.references.push(new Pe(a,e.wiki))}),i};var xa=function(e,t){let{list:i,wiki:a}=function(e,t){let i=[],a=Ft(e);const n=function(a,r){a.parent=r,a.children&&a.children.length>0&&a.children.forEach(e=>n(e,a));let[o,s]=la(a,t);a.wiki=o,s&&i.push({name:a.name,wiki:a.body,text:o,json:s});const l=function(e,t,i){e.parent&&(e.parent.body=e.parent.body.replace(t,i),l(e.parent,t,i))};l(a,a.body,a.wiki),e=e.replace(a.body,a.wiki)};return a.forEach(e=>n(e,null)),a.forEach(t=>{e=e.replace(t.body,t.wiki)}),{list:i,wiki:e}}(e._wiki,t),n=t?t._domain:null,{infoboxes:r,references:o,templates:s}=$a(i,n);e._infoboxes=e._infoboxes||[],e._references=e._references||[],e._templates=e._templates||[],e._infoboxes=e._infoboxes.concat(r),e._references=e._references.concat(o),e._templates=e._templates.concat(s),e._wiki=a};const va=we;var ja=function(e,t,i){e.text=e.text.replace(/]*?)>([\s\S]+?)<\/gallery>/g,(a,n,r)=>{let o=r.split(/\n/g);return o=o.filter(e=>e&&""!==e.trim()),o=o.map(e=>{let i=e.split(/\|/),a={file:i[0].trim(),lang:t.lang(),domain:t.domain()},n=new O(a).json(),r=i.slice(1).join("|");return""!==r&&(n.caption=va(r)),n}),o.length>0&&e.templates.push({template:"gallery",images:o,pos:i.title}),""})};var _a=function(e){e.text=e.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,t=>{let i={_wiki:t,_templates:[]};xa(i);let a=i._templates.map(e=>e.json()),n=a.find(e=>"election box"===e.template)||{},r=a.filter(e=>"election box candidate"===e.template),o=a.find(e=>"election box gain"===e.template||"election box hold"===e.template)||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:n.title,candidates:r,summary:o.data}),""})};const za={coach:["team","year","g","w","l","w-l%","finish","pg","pw","pl","pw-l%"],player:["year","team","gp","gs","mpg","fg%","3p%","ft%","rpg","apg","spg","bpg","ppg"],roster:["player","gp","gs","mpg","fg%","3fg%","ft%","rpg","apg","spg","bpg","ppg"]};var Oa=function(e){e.text=e.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,(t,i)=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();let a="! "+za[i].join(" !! "),n=Qe("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"NBA "+i+" statistics",data:n}),""})};var Ea=function(e){e.text=e.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,t=>{let i=function(e){let t=["#","date","opponent","score","win","loss","save","attendance","record"];return!0===/\|stadium=y/i.test(e)&&t.splice(7,0,"stadium"),!0===/\|time=y/i.test(e)&&t.splice(7,0,"time"),!0===/\|box=y/i.test(e)&&t.push("box"),t}(t);t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{mlb game log (section|month) end\}\}/i,"");let a="! "+i.join(" !! "),n=Qe("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mlb game log section",data:n}),""})};let Ca=["res","record","opponent","method","event","date","round","time","location","notes"];var Sa=function(e){e.text=e.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,t=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");let i="! "+Ca.join(" !! "),a=Qe("{|\n"+i+"\n"+t+"\n|}");return a=a.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mma record start",data:a}),""})};const Na=we;var qa=function(e){e.text=e.text.replace(/]*?)>([\s\S]+?)<\/math>/g,(t,i,a)=>{let n=Na(a).text();return e.templates.push({template:"math",formula:n,raw:a}),n&&n.length<12?n:""}),e.text=e.text.replace(/]*?)>([\s\S]+?)<\/chem>/g,(t,i,a)=>(e.templates.push({template:"chem",data:a}),""))};const La={heading:Ke,table:lt,paragraphs:Dt,templates:xa,references:Me,startEndTemplates:function(e,t){const i={templates:[],text:e._wiki};return _a(i),ja(i,t,e),qa(i),Ea(i),Sa(i),Oa(i),i.templates=i.templates.map(e=>new ba(e)),i}},Pa={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0};class Aa{constructor(e,t){let i={doc:t,title:e.title||"",depth:e.depth,wiki:e.wiki||"",templates:[],tables:[],infoboxes:[],references:[],paragraphs:[]};Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})});const a=La.startEndTemplates(this,t);this._wiki=a.text,this._templates=this._templates.concat(a.templates),La.references(this),La.templates(this,t),La.table(this),La.paragraphs(this,t)}title(){return this._title||""}index(){if(!this._doc)return null;let e=this._doc.sections().indexOf(this);return-1===e?null:e}depth(){return this._depth}indentation(){return this.depth()}sentences(){return this.paragraphs().reduce((e,t)=>e.concat(t.sentences()),[])}paragraphs(){return this._paragraphs||[]}links(e){let t=[];if(this.infoboxes().forEach(e=>{t.push(e.links())}),this.sentences().forEach(e=>{t.push(e.links())}),this.tables().forEach(e=>{t.push(e.links())}),this.lists().forEach(e=>{t.push(e.links())}),t=t.reduce((e,t)=>e.concat(t),[]).filter(e=>void 0!==e),"string"==typeof e){let i=t.find(t=>t.page().toLowerCase()===e.toLowerCase());return void 0===i?[]:[i]}return t}tables(){return this._tables||[]}templates(e){let t=this._templates||[];return"string"==typeof e?(e=e.toLowerCase(),t.filter(t=>t.data.template===e||t.data.name===e)):t}infoboxes(e){let t=this._infoboxes||[];return"string"==typeof e?(e=(e=e.replace(/^infobox /i,"")).trim().toLowerCase(),t.filter(t=>t._type===e)):t}coordinates(){return[...this.templates("coord"),...this.templates("coor")].map(e=>e.json())}lists(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.lists())}),e}interwiki(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.interwiki())}),e}images(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.images())}),e}references(){return this._references||[]}remove(){if(!this._doc)return null;let e={};e[this.title()]=!0,this.children().forEach(t=>e[t.title()]=!0);let t=this._doc.sections();return t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),this._doc._sections=t,this._doc}nextSibling(){if(!this._doc)return null;let e=this._doc.sections();for(let t=(this.index()||0)+1;tthis.depth())for(let e=i+1;ethis.depth();e+=1)a.push(t[e]);return"string"==typeof e?a.find(t=>t.title().toLowerCase()===e.toLowerCase()):a}sections(e){return this.children(e)}parent(){if(!this._doc)return null;let e=this._doc.sections();for(let t=this.index()||0;t>=0;t-=1)if(e[t]&&e[t].depth()t.text(e)).join("\n\n")}wikitext(){return this._wiki}json(e){return e=d(e,Pa),J(this,e)}}Aa.prototype.citations=Aa.prototype.references;const Ta={sentences:"sentence",paragraphs:"paragraph",links:"link",tables:"table",templates:"template",infoboxes:"infobox",coordinates:"coordinate",lists:"list",images:"image",references:"reference",citations:"citation"};Object.keys(Ta).forEach(e=>{let t=Ta[e];Aa.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}});var Da=Aa;const Ia=new RegExp("^("+f.references.join("|")+"):?","i"),Ma=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,Ra={heading:Ke};var Ua=function(e){let t=[],i=e._wiki.split(Ma);for(let a=0;a!0!==Ia.test(t.title())||t.paragraphs().length>0||t.templates().length>0||(e[i+1]&&e[i+1].depth()>t.depth()&&(e[i+1]._depth-=1),!1))}(t)};const Ba=new RegExp("\\[\\[:?("+f.categories.join("|")+"):(.{2,178}?)]](w{0,10})","ig"),Ka=new RegExp("^\\[\\[:?("+f.categories.join("|")+"):","ig");const Fa={section:Ua,categories:function(e){const t=[];let i=e.match(Ba);i&&i.forEach((function(e){(e=(e=(e=e.replace(Ka,"")).replace(/\|?[ \*]?\]\]$/i,"")).replace(/\|.*/,""))&&!e.match(/[\[\]]/)&&t.push(e.trim())}));const a=e.replace(Ba,"");return[t,a]}},Wa={tables:!0,lists:!0,paragraphs:!0};class Ya{constructor(e,t){let i={pageID:(t=t||{}).pageID||t.id||null,namespace:t.namespace||t.ns||null,lang:t.lang||t.language||null,domain:t.domain||null,title:t.title||null,type:"page",redirectTo:null,wikidata:t.wikidata||null,wiki:e||"",categories:[],sections:[],coordinates:[]};if(Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})}),!0===M(this._wiki)){this._type="redirect",this._redirectTo=R(this._wiki);const[e,t]=Fa.categories(this._wiki);return this._categories=e,void(this._wiki=t)}this._wiki=Y(this._wiki);const[a,n]=Fa.categories(this._wiki);this._categories=a,this._wiki=n,this._sections=Fa.section(this)}title(e){if(void 0!==e)return this._title=e,e;if(this._title)return this._title;let t=null,i=this.sentence();return i&&(t=i.bold()),t}pageID(e){return void 0!==e&&(this._pageID=e),this._pageID||null}wikidata(e){return void 0!==e&&(this._wikidata=e),this._wikidata||null}domain(e){return void 0!==e&&(this._domain=e),this._domain||null}language(e){return void 0!==e&&(this._lang=e),this._lang||null}url(){let e=this.title();if(!e)return null;let t=this.language()||"en",i=this.domain()||"wikipedia.org";return e=e.replace(/ /g,"_"),e=encodeURIComponent(e),`https://${t}.${i}/wiki/${e}`}namespace(e){return void 0!==e&&(this._namespace=e),this._namespace||null}isRedirect(){return"redirect"===this._type}redirectTo(){return this._redirectTo}isDisambiguation(){return x(this)}categories(e){let t=this._categories||[];return"number"==typeof e?[t[e]]:t}sections(e){let t=this._sections||[];if(t.forEach(e=>{e._doc=this}),"string"==typeof e){let i=e.toLowerCase().trim();return t.filter(e=>e.title().toLowerCase()===i)}return"number"==typeof e?[t[e]]:t}paragraphs(e){let t=[];return this.sections().forEach(e=>{t=t.concat(e.paragraphs())}),"number"==typeof e?[t[e]]:t}sentences(e){let t=[];return this.sections().forEach(e=>{t=t.concat(e.sentences())}),"number"==typeof e?[t[e]]:t}images(e){let t=m(this,"images",null);return this.infoboxes().forEach(e=>{let i=e.image();i&&t.unshift(i)}),this.templates().forEach(e=>{"gallery"===e.data.template&&(e.data.images=e.data.images||[],e.data.images.forEach(e=>{e instanceof O||(e.language=this.language(),e.domain=this.domain(),e=new O(e)),t.push(e)}))}),"number"==typeof e?[t[e]]:t}links(e){return m(this,"links",e)}interwiki(e){return m(this,"interwiki",e)}lists(e){return m(this,"lists",e)}tables(e){return m(this,"tables",e)}templates(e){return m(this,"templates",e)}references(e){return m(this,"references",e)}citations(e){return this.references(e)}coordinates(e){return m(this,"coordinates",e)}infoboxes(e){let t=m(this,"infoboxes",e);return t=t.sort((e,t)=>Object.keys(e.data).length>Object.keys(t.data).length?-1:1),t}text(e){if(e=d(e,Wa),!0===this.isRedirect())return"";return this.sections().map(t=>t.text(e)).join("\n\n")}json(e){return e=d(e,Wa),g(this,e)}wikitext(){return this._wiki||""}debug(){return console.log("\n"),this.sections().forEach(e=>{let t=" - ";for(let i=0;i{let t=Za[e];Ya.prototype[t]=function(t){return this[e](t)[0]||null}}),Ya.prototype.lang=Ya.prototype.language,Ya.prototype.ns=Ya.prototype.namespace,Ya.prototype.plaintext=Ya.prototype.text,Ya.prototype.isDisambig=Ya.prototype.isDisambiguation,Ya.prototype.citations=Ya.prototype.references,Ya.prototype.redirectsTo=Ya.prototype.redirectTo,Ya.prototype.redirect=Ya.prototype.redirectTo,Ya.prototype.redirects=Ya.prototype.redirectTo;var Ha=Ya;var Ga=function(e){let t=(e=e.filter(e=>e)).map(e=>new Ha(e.wiki,e.meta));return 0===t.length?null:1===t.length?t[0]:t};var Va=function(e){let t,i=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return t=e.noOrigin?"":e.origin||e.Origin||"*",{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":i,"User-Agent":i,Origin:t,"Accept-Encoding":"gzip"},redirect:"follow"}};const Ja=/^https?:\/\//,Xa={lang:"en",wiki:"wikipedia",domain:void 0,follow_redirects:!0,path:"api.php"};var Qa=function(e,t,i){"string"==typeof t&&(t={lang:t}),(t={...Xa,...t}).title=e,"string"==typeof e&&Ja.test(e)&&(t={...t,...n(e)});const r=u(t),o=Va(t);return a(r,o).then(e=>e.json()).then(e=>{let a=p(e,t);return a=Ga(a),i&&i(null,a),a}).catch(e=>(console.error(e),i&&i(e,null),null))};const en=function(e,t){return new Ha(e,t)},tn={Doc:Ha,Section:Da,Paragraph:gt,Sentence:ue,Image:O,Infobox:ha,Link:te,List:zt,Reference:Pe,Table:rt,Template:ba,http:function(e,t){return a(e,t).then((function(e){return e.json()}))},wtf:en};return en.fetch=function(e,t,i,a){return Qa(e,t,i)},en.plugin=en.extend=function(e){return e(tn,na,Yt),this},en.version="9.0.0",en})); diff --git a/builds/wtf_wikipedia-client.mjs b/builds/wtf_wikipedia-client.mjs index a125048c..c55b0493 100644 --- a/builds/wtf_wikipedia-client.mjs +++ b/builds/wtf_wikipedia-client.mjs @@ -1 +1 @@ -var e=Object.freeze({__proto__:null,default:function(e,t){return t=t||{},new Promise((function(i,a){var r=new XMLHttpRequest,n=[],o=[],s={},l=function(){return{ok:2==(r.status/100|0),statusText:r.statusText,status:r.status,url:r.responseURL,text:function(){return Promise.resolve(r.responseText)},json:function(){return Promise.resolve(r.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([r.response]))},clone:l,headers:{keys:function(){return n},entries:function(){return o},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var c in r.open(t.method||"get",e,!0),r.onload=function(){r.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,i){n.push(t=t.toLowerCase()),o.push([t,i]),s[t]=s[t]?s[t]+","+i:i})),i(l())},r.onerror=a,r.withCredentials="include"==t.credentials,t.headers)r.setRequestHeader(c,t.headers[c]);r.send(t.body||null)}))}});var t,i=(t=e)&&t.default||t,a=self.fetch||(self.fetch=i.default||i);var r=function(e){let t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};var n={capitalise:function(e){return e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):""},trim_whitespace:function(e){return e&&"string"==typeof e?e=(e=(e=(e=e.replace(/^\s\s*/,"")).replace(/\s\s*$/,"")).replace(/ {2}/," ")).replace(/\s, /,", "):""},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}};const{isArray:o}=n,s=/(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/,l={action:"query",prop:"revisions|pageprops",rvprop:"content",maxlag:5,rvslots:"main",origin:"*",format:"json",redirects:"true"},c=e=>e.replace(/ /g,"_").trim();var u=function(e){let t=Object.assign({},l),i="";if(e.domain){let t=s.test(e.domain)?"w/api.php":e.path;i=`https://${e.domain}/${t}?`}else{if(!e.lang||!e.wiki)return"";i=`https://${e.lang}.${e.wiki}.org/w/api.php?`}e.follow_redirects||delete t.redirects;let a=e.title;if("number"==typeof a)t.pageids=a;else if("string"==typeof a)t.titles=c(a);else if(void 0!==a&&o(a)&&"number"==typeof a[0])t.pageids=a.join("|");else{if(void 0===a||!0!==o(a)||"string"!=typeof a[0])return"";t.titles=a.map(c).join("|")}return`${i}${r=t,Object.entries(r).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}`;var r};var p=function(e,t={}){return Object.keys(e.query.pages).map(i=>{let a=e.query.pages[i]||{};if(a.hasOwnProperty("missing")||a.hasOwnProperty("invalid"))return null;let r=a.revisions[0]["*"];!r&&a.revisions[0].slots&&(r=a.revisions[0].slots.main["*"]),a.pageprops=a.pageprops||{};let n=t.domain;return!n&&t.wiki&&(n=t.wiki+".org"),{wiki:r,meta:Object.assign({},t,{title:a.title,pageID:a.pageid,namespace:a.ns,domain:n,wikidata:a.pageprops.wikibase_item,description:a.pageprops["wikibase-shortdesc"]})}})};var m=function(e,t,i){let a=[];return e.sections().forEach(e=>{let r=[];r="string"==typeof i?e[t](i):e[t](),r.forEach(e=>{a.push(e)})}),a};var d=function(e,t){return Object.assign({},t,e)};const h={title:!0,sections:!0,pageID:!0,categories:!0};var g=function(e,t){let i={};return(t=d(t,h)).title&&(i.title=e.title()),t.pageID&&(i.pageID=e.pageID()),t.categories&&(i.categories=e.categories()),t.sections&&(i.sections=e.sections().map(e=>e.json(t))),!0===e.isRedirect()&&(i.isRedirect=!0,i.redirectTo=e.redirectTo(),i.sections=[]),t.coordinates&&(i.coordinates=e.coordinates()),t.infoboxes&&(i.infoboxes=e.infoboxes().map(e=>e.json(t))),t.images&&(i.images=e.images().map(e=>e.json(t))),t.plaintext&&(i.plaintext=e.text(t)),(t.citations||t.references)&&(i.references=e.references()),i},f={categories:["category","abdeeling","bólkur","catagóir","categori","categoria","categoria","categoría","categorîa","categorìa","catégorie","categorie","catègorie","category","categuria","catigurìa","class","ẹ̀ka","flocc","flocc","flokkur","grup","jamii","kaarangay","kateggoría","kategooria","kategori","kategorî","kategoria","kategória","kategorie","kategoriija","kategorija","kategorio","kategoriya","kategoriýa","kategoriye","kategory","kategorya","kateqoriya","katiguriya","klad","luokka","ñemohenda","roinn","ronney","rummad","setensele","sokajy","sumut","thể","turkum","категорија","категория","категорія","катэгорыя","төркем","קטגוריה","تصنيف","تۈر","رده","श्रेणी","श्रेणी","বিষয়শ্রেণী","หมวดหมู่","분류","분류","分类"],disambig_templates:["dab","disamb","disambig","disambiguation","aðgreining","aimai","ałtsʼáʼáztiin","anlam ayrımı","anlam ayrımı","apartigilo","argipen","begriepskloorenge","begriffsklärung","begriffsklärung","begriffsklärung","begriffsklearung","bisongidila","bkl","bokokani","caddayn","clerheans","cudakirin","čvor","db","desambig","desambigación","desambiguação","desambiguació","desambiguación","desambiguáncia","desambiguasion","desambiguassiù","desambigui","dezambiguizare","dəqiqləşdirmə","disambigua","disambigua","disambigua","disambìgua","disambigua","disambiguasi","disambiguasi","discretiva","disheñvelout","disingkek","dixanbigua","dixebra","diżambigwazzjoni","doorverwijspagina","dp","dp","dubbelsinnig","dudalipen","dv","egyért","fleiri týdningar","fleirtyding","flertydig","förgrening","gì-ngiê","giklaro","gwahaniaethu","homonimo","homónimos","homonymie","huaʻōlelo puana like","idirdhealú","khu-pia̍t","kthjellim","kujekesa","maana","maneo bin","mehrdüdig begreep","menm non","muardüüdag artiikel","neibetsjuttings","nozīmju atdalīšana","nuorodinis","nyahkekaburan","omonimeye","omonimia","page dé frouque","paglilinaw","panangilawlawag","pansayod","pejy mitovy anarana","peker","razdvojba","razločitev","razvrstavanje","reddaghey","rozcestník","rozlišovacia stránka","sclerir noziun","selvendyssivu","soilleireachadh","suzmunski","täpsustuslehekülg","täsmennyssivu","telplänov","tlahtolmelahuacatlaliztli","trang định hướng","ujednoznacznienie","verdudeliking","wěcejwóznamowosć","wjacezmyslnosć","zambiguaçon","zeimeibu škiršona","αποσαφήνιση","айрық","аҵакырацәа","вишезначна одредница","ибҳомзудоӣ","кёб магъаналы","күп мәгънәләр","күп мәғәнәлелек","мъногосъмꙑслиѥ","неадназначнасць","неадназначнасьць","неоднозначность","олон удхатай","појаснување","пояснение","са шумуд манавал","салаа утгатай","суолталар","текмаанисиздик","цо магіна гуреб","чеперушка","чолхалла","шуко ончыктымаш-влак","მრავალმნიშვნელოვანი","բազմիմաստութիւն","բազմիմաստություն","באדייטן","פירושונים","ابهام‌زدایی","توضيح","توضيح","دقیقلشدیرمه","ڕوونکردنەوە","سلجهائپ","ضد ابہام","گجگجی بیری","نامبهمېدنه","መንታ","अस्पष्टता","बहुअर्थी","बहुविकल्पी शब्द","দ্ব্যর্থতা নিরসন","ਗੁੰਝਲ-ਖੋਲ੍ਹ","સંદિગ્ધ શીર્ષક","பக்கவழி நெறிப்படுத்தல்","అయోమయ నివృత్తి","ದ್ವಂದ್ವ ನಿವಾರಣೆ","വിവക്ഷകൾ","වක්‍රෝත්ති","แก้ความกำกวม","သံတူကြောင်းကွဲ","ណែនាំ","동음이의","扤清楚","搞清楚","曖昧さ回避","消歧义","釋義","gestion dj'omònim","sut'ichana qillqa"],disambig_titles:["disambiguation","homonymie","توضيح","desambiguação","Begriffsklärung","disambigua","曖昧さ回避","消歧義","搞清楚","значения","ابهام‌زدایی","د ابہام","동음이의","dubbelsinnig","այլ կիրառումներ","ujednoznacznienie"],images:["file","image","चित्र","archivo","attēls","berkas","bestand","datei","dosiero","dosya","fájl","fasciculus","fichier","fil","fitxategi","fitxer","gambar","imagem","imej","immagine","larawan","lêer","plik","restr","slika","wêne","wobraz","выява","податотека","слика","файл","სურათი","պատկեր","קובץ","پرونده","دوتنه","ملف","وێنە","चित्र","ไฟล์","파일","ファイル"],infoboxes:["infobox","anfo","anuāmapa","bilgi kutusu","bilgi","bilgiquti","boaty","boestkelaouiñ","bosca","capsa","diehtokássa","faktamall","ficha","generalni","gwybodlen3","info","infobokis","infoboks","infochascha","infokašćik","infokast","infokutija","infolentelė","infopolje","informkesto","infoskreine","infotaula","inligtingskas","inligtingskas3","inligtingskas4","kishtey","kotak","tertcita","tietolaatikko","yerleşim bilgi kutusu","ynfoboks","πλαίσιο","акарточка","аҥа","инфобокс","инфокутија","инфокутия","інфобокс","канадский","картка","карточка","карточка2","карточкарус","картуш","қуттӣ","ინფოდაფა","տեղեկաքարտ","אינפאקעסטל","תבנית","بطاقة","ڄاڻخانو","خانہ","لغة","ज्ञानसन्दूक","তথ্যছক","ਜਾਣਕਾਰੀਡੱਬਾ","సమాచారపెట్టె","තොරතුරුකොටුව","กล่องข้อมูล","ប្រអប់ព័ត៌មាន","정보상자","明細"],redirects:["adkas","aýdaw","doorverwijzing","ohjaus","patrz","přesměruj","redirección","redireccion","redirección","redirecionamento","redirect","redirection","redirection","rinvia","tilvísun","uudelleenohjaus","weiterleitung","weiterleitung","yönlendi̇r","yönlendirme","yönlendi̇rme","ανακατευθυνση","айдау","перанакіраваньне","перенаправлення","пренасочување","преусмери","преусмјери","تغییر_مسیر","تغییرمسیر","تغییرمسیر","เปลี่ยนทาง","ប្តូរទីតាំងទៅ","転送","重定向"],references:["references","reference","einzelnachweise","referencias","références","notes et références","脚注","referenser","bronnen","примечания"]};let k=" disambiguation";var b=["dab","dab","disamb","disambig","geodis","hndis","setindex","ship index","split dab","sport index","wp disambig","disambiguation cleanup","airport"+k,"biology"+k,"call sign"+k,"caselaw"+k,"chinese title"+k,"genus"+k,"hospital"+k,"lake index","letter"+k,"letter-number combination"+k,"mathematical"+k,"military unit"+k,"mountainindex","number"+k,"phonetics"+k,"place name"+k,"portal"+k,"road"+k,"school"+k,"species latin name abbreviation"+k,"species latin name"+k,"station"+k,"synagogue"+k,"taxonomic authority"+k,"taxonomy"+k].reduce((e,t)=>(e[t]=!0,e),{});const w=new RegExp(". \\(("+f.disambig_titles.join("|")+")\\)$","i"),y=f.disambig_templates.reduce((e,t)=>(e[t]=!0,e),{});var $=function(e){if(e.templates().find(e=>b.hasOwnProperty(e.template)||y.hasOwnProperty(e.template)))return!0;let t=e.title();if(t&&!0===w.test(t))return!0;let i=e.sentences()[0];if(i){let e=i.text();if(null!==e&&e[0]&&!0===/. may refer to\b/i.test(e))return!0}return!1};const x={caption:!0,alt:!0,links:!0,thumb:!0,url:!0};var v=function(e,t){t=d(t,x);let i={file:e.file()};return!1!==t.thumb&&(i.thumb=e.thumbnail()),!1!==t.url&&(i.url=e.url()),!1!==t.caption&&e.data.caption&&(i.caption=e.caption(),!1!==t.links&&e.data.caption.links()&&(i.links=e.links())),!1!==t.alt&&e.data.alt&&(i.alt=e.alt()),i};const j=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},_={file(){return this.data.file||""},alt(){let e=this.data.alt||this.data.file||"";return e=e.replace(/^(file|image):/i,""),e=e.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),e.replace(/_/g," ")},caption(){return this.data.caption?this.data.caption.text():""},links(){return this.data.caption?this.data.caption.links():[]},url(){let e=function(e){let t=function(e){let t=e.replace(/^(image|file?)\:/i,"");return t=t.charAt(0).toUpperCase()+t.substring(1),t=t.trim().replace(/ /g,"_"),t}(e);return t=encodeURIComponent(t),t}(this.file());return`https://${this.data.domain||"wikipedia.org"}/wiki/Special:Redirect/file/${e}`},thumbnail(e){return e=e||300,this.url()+"?width="+e},format(){let e=this.file().split(".");return e[e.length-1]?e[e.length-1].toLowerCase():null},json:function(e){return v(this,e=e||{})},text:function(){return""}};Object.keys(_).forEach(e=>{j.prototype[e]=_[e]}),j.prototype.src=j.prototype.url,j.prototype.thumb=j.prototype.thumbnail;var z=j,E={aa:"Afar",ab:"Аҧсуа",af:"Afrikaans",ak:"Akana",als:"Alemannisch",am:"አማርኛ",an:"Aragonés",ang:"Englisc",ar:"العربية",arc:"ܣܘܪܬ",as:"অসমীয়া",ast:"Asturianu",av:"Авар",ay:"Aymar",az:"Azərbaycanca",ba:"Башҡорт",bar:"Boarisch","bat-smg":"Žemaitėška",bcl:"Bikol",be:"Беларуская","be-x-old":"ltr",bg:"Български",bh:"भोजपुरी",bi:"Bislama",bm:"Bamanankan",bn:"বাংলা",bo:"བོད་ཡིག",bpy:"ltr",br:"Brezhoneg",bs:"Bosanski",bug:"ᨅᨔ",bxr:"ltr",ca:"Català",cdo:"Chinese",ce:"Нохчийн",ceb:"Sinugboanong",ch:"Chamoru",cho:"Choctaw",chr:"ᏣᎳᎩ",chy:"Tsetsêhestâhese",co:"Corsu",cr:"Nehiyaw",cs:"Česky",csb:"Kaszëbsczi",cu:"Slavonic",cv:"Чăваш",cy:"Cymraeg",da:"Dansk",de:"Deutsch",diq:"Zazaki",dsb:"ltr",dv:"ދިވެހިބަސް",dz:"ཇོང་ཁ",ee:"Ɛʋɛ",far:"فارسی",el:"Ελληνικά",en:"English",eo:"Esperanto",es:"Español",et:"Eesti",eu:"Euskara",ext:"Estremeñu",ff:"Fulfulde",fi:"Suomi","fiu-vro":"Võro",fj:"Na",fo:"Føroyskt",fr:"Français",frp:"Arpitan",fur:"Furlan",fy:"ltr",ga:"Gaeilge",gan:"ltr",gd:"ltr",gil:"Taetae",gl:"Galego",gn:"Avañe'ẽ",got:"gutisk",gu:"ગુજરાતી",gv:"Gaelg",ha:"هَوُسَ",hak:"ltr",haw:"Hawai`i",he:"עברית",hi:"हिन्दी",ho:"ltr",hr:"Hrvatski",ht:"Krèyol",hu:"Magyar",hy:"Հայերեն",hz:"Otsiherero",ia:"Interlingua",id:"Bahasa",ie:"Interlingue",ig:"Igbo",ii:"ltr",ik:"Iñupiak",ilo:"Ilokano",io:"Ido",is:"Íslenska",it:"Italiano",iu:"ᐃᓄᒃᑎᑐᑦ",ja:"日本語",jbo:"Lojban",jv:"Basa",ka:"ქართული",kg:"KiKongo",ki:"Gĩkũyũ",kj:"Kuanyama",kk:"Қазақша",kl:"Kalaallisut",km:"ភាសាខ្មែរ",kn:"ಕನ್ನಡ",khw:"کھوار",ko:"한국어",kr:"Kanuri",ks:"कश्मीरी",ksh:"Ripoarisch",ku:"Kurdî",kv:"Коми",kw:"Kernewek",ky:"Kırgızca",la:"Latina",lad:"Dzhudezmo",lan:"Leb",lb:"Lëtzebuergesch",lg:"Luganda",li:"Limburgs",lij:"Líguru",lmo:"Lumbaart",ln:"Lingála",lo:"ລາວ",lt:"Lietuvių",lv:"Latviešu","map-bms":"Basa",mg:"Malagasy",man:"官話",mh:"Kajin",mi:"Māori",min:"Minangkabau",mk:"Македонски",ml:"മലയാളം",mn:"Монгол",mo:"Moldovenească",mr:"मराठी",ms:"Bahasa",mt:"bil-Malti",mus:"Muskogee",my:"Myanmasa",na:"Dorerin",nah:"Nahuatl",nap:"Nnapulitano",nd:"ltr",nds:"Plattdüütsch","nds-nl":"Saxon",ne:"नेपाली",new:"नेपालभाषा",ng:"Oshiwambo",nl:"Nederlands",nn:"ltr",no:"Norsk",nr:"ltr",nso:"ltr",nrm:"Nouormand",nv:"Diné",ny:"Chi-Chewa",oc:"Occitan",oj:"ᐊᓂᔑᓈᐯᒧᐎᓐ",om:"Oromoo",or:"ଓଡ଼ିଆ",os:"Иронау",pa:"ਪੰਜਾਬੀ",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamentu",pdc:"ltr",pi:"Pāli",pih:"Norfuk",pl:"Polski",pms:"Piemontèis",ps:"پښتو",pt:"Português",qu:"Runa",rm:"ltr",rmy:"Romani",rn:"Kirundi",ro:"Română","roa-rup":"Armâneashti",ru:"Русский",rw:"Kinyarwandi",sa:"संस्कृतम्",sc:"Sardu",scn:"Sicilianu",sco:"Scots",sd:"सिनधि",se:"ltr",sg:"Sängö",sh:"Srpskohrvatski",si:"සිංහල",simple:"ltr",sk:"Slovenčina",sl:"Slovenščina",sm:"Gagana",sn:"chiShona",so:"Soomaaliga",sq:"Shqip",sr:"Српски",ss:"SiSwati",st:"ltr",su:"Basa",sv:"Svenska",sw:"Kiswahili",ta:"தமிழ்",te:"తెలుగు",tet:"Tetun",tg:"Тоҷикӣ",th:"ไทย",ti:"ትግርኛ",tk:"Туркмен",tl:"Tagalog",tlh:"tlhIngan-Hol",tn:"Setswana",to:"Lea",tpi:"ltr",tr:"Türkçe",ts:"Xitsonga",tt:"Tatarça",tum:"chiTumbuka",tw:"Twi",ty:"Reo",udm:"Удмурт",ug:"Uyƣurqə",uk:"Українська",ur:"اردو",uz:"Ўзбек",ve:"Tshivenḓa",vi:"Việtnam",vec:"Vèneto",vls:"ltr",vo:"Volapük",wa:"Walon",war:"Winaray",wo:"Wollof",xal:"Хальмг",xh:"isiXhosa",yi:"ייִדיש",yo:"Yorùbá",za:"Cuengh",zh:"中文","zh-classical":"ltr","zh-min-nan":"Bân-lâm-gú","zh-yue":"粵語",zu:"isiZulu"};const O=".wikipedia.org/wiki/$1",C=".wikimedia.org/wiki/$1",S="www.";var N={acronym:S+"acronymfinder.com/$1.html",advisory:"advisory"+C,advogato:S+"advogato.org/$1",aew:"wiki.arabeyes.org/$1",appropedia:S+"appropedia.org/$1",aquariumwiki:S+"theaquariumwiki.com/$1",arborwiki:"localwiki.org/ann-arbor/$1",arxiv:"arxiv.org/abs/$1",atmwiki:S+"otterstedt.de/wiki/index.php/$1",baden:S+"stadtwiki-baden-baden.de/wiki/$1/",battlestarwiki:"en.battlestarwiki.org/wiki/$1",bcnbio:"historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1",beacha:S+"beachapedia.org/$1",betawiki:"translatewiki.net/wiki/$1",bibcode:"adsabs.harvard.edu/abs/$1",bibliowiki:"wikilivres.org/wiki/$1",bluwiki:"bluwiki.com/go/$1",blw:"britainloves"+O,botwiki:"botwiki.sno.cc/wiki/$1",boxrec:S+"boxrec.com/media/index.php?$1",brickwiki:S+"brickwiki.info/wiki/$1",bugzilla:"bugzilla.wikimedia.org/show_bug.cgi?id=$1",bulba:"bulbapedia.bulbagarden.net/wiki/$1",c:"commons"+C,c2:"c2.com/cgi/wiki?$1",c2find:"c2.com/cgi/wiki?FindPage&value=$1",cache:S+"google.com/search?q=cache:$1","ĉej":"esperanto.blahus.cz/cxej/vikio/index.php/$1",cellwiki:"cell.wikia.com/wiki/$1",centralwikia:"community.wikia.com/wiki/$1",chej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",choralwiki:S+"cpdl.org/wiki/index.php/$1",citizendium:"en.citizendium.org/wiki/$1",ckwiss:S+"ck-wissen.de/ckwiki/index.php?title=$1",comixpedia:S+"comixpedia.org/index.php?title=$1",commons:"commons"+C,communityscheme:"community.schemewiki.org/?c=s&key=$1",communitywiki:"communitywiki.org/$1",comune:"rete.comuni-italiani.it/wiki/$1",creativecommons:"creativecommons.org/licenses/$1",creativecommonswiki:"wiki.creativecommons.org/$1",cxej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",dcc:S+"dccwiki.com/$1",dcdatabase:"dc.wikia.com/$1",dcma:"christian-morgenstern.de/dcma/index.php?title=$1",debian:"wiki.debian.org/$1",delicious:S+"delicious.com/tag/$1",devmo:"developer.mozilla.org/en/docs/$1",dictionary:S+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",dict:S+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",disinfopedia:"sourcewatch.org/index.php/$1",distributedproofreaders:S+"pgdp.net/wiki/$1",distributedproofreadersca:S+"pgdpcanada.net/wiki/index.php/$1",dmoz:"curlie.org/$1",dmozs:"curlie.org/search?q=$1",doi:"doi.org/$1",donate:"donate"+C,doom_wiki:"doom.wikia.com/wiki/$1",download:"releases.wikimedia.org/$1",dbdump:"dumps.wikimedia.org/$1/latest/",dpd:"lema.rae.es/dpd/?key=$1",drae:"dle.rae.es/?w=$1",dreamhost:"wiki.dreamhost.com/index.php/$1",drumcorpswiki:S+"drumcorpswiki.com/index.php/$1",dwjwiki:S+"suberic.net/cgi-bin/dwj/wiki.cgi?$1","eĉei":S+"ikso.net/cgi-bin/wiki.pl?$1",ecoreality:S+"EcoReality.org/wiki/$1",ecxei:S+"ikso.net/cgi-bin/wiki.pl?$1",elibre:"enciclopedia.us.es/index.php/$1",emacswiki:S+"emacswiki.org/emacs?$1",encyc:"encyc.org/wiki/$1",energiewiki:S+"netzwerk-energieberater.de/wiki/index.php/$1",englyphwiki:"en.glyphwiki.org/wiki/$1",enkol:"enkol.pl/$1",eokulturcentro:"esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1",esolang:"esolangs.org/wiki/$1",etherpad:"etherpad.wikimedia.org/$1",ethnologue:S+"ethnologue.com/language/$1",ethnologuefamily:S+"ethnologue.com/show_family.asp?subid=$1",evowiki:"wiki.cotch.net/index.php/$1",exotica:S+"exotica.org.uk/wiki/$1",fanimutationwiki:"wiki.animutationportal.com/index.php/$1",fedora:"fedoraproject.org/wiki/$1",finalfantasy:"finalfantasy.wikia.com/wiki/$1",finnix:S+"finnix.org/$1",flickruser:S+"flickr.com/people/$1",flickrphoto:S+"flickr.com/photo.gne?id=$1",floralwiki:S+"floralwiki.co.uk/wiki/$1",foldoc:"foldoc.org/$1",foundation:"foundation"+C,foundationsite:"wikimediafoundation.org/$1",foxwiki:"fox.wikis.com/wc.dll?Wiki~$1",freebio:"freebiology.org/wiki/$1",freebsdman:S+"FreeBSD.org/cgi/man.cgi?apropos=1&query=$1",freeculturewiki:"wiki.freeculture.org/index.php/$1",freedomdefined:"freedomdefined.org/$1",freefeel:"freefeel.org/wiki/$1",freekiwiki:"wiki.freegeek.org/index.php/$1",freesoft:"directory.fsf.org/wiki/$1",ganfyd:"ganfyd.org/index.php?title=$1",gardenology:S+"gardenology.org/wiki/$1",gausswiki:"gauss.ffii.org/$1",gentoo:"wiki.gentoo.org/wiki/$1",genwiki:"wiki.genealogy.net/index.php/$1",gerrit:"gerrit.wikimedia.org/r/$1",git:"gerrit.wikimedia.org/g/$1",google:S+"google.com/search?q=$1",googledefine:S+"google.com/search?q=define:$1",googlegroups:"groups.google.com/groups?q=$1",guildwarswiki:"wiki.guildwars.com/wiki/$1",guildwiki:"guildwars.wikia.com/wiki/$1",guc:"tools.wmflabs.org/guc/?user=$1",gucprefix:"tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1",gutenberg:S+"gutenberg.org/etext/$1",gutenbergwiki:S+"gutenberg.org/wiki/$1",hackerspaces:"hackerspaces.org/wiki/$1",h2wiki:"halowiki.net/p/$1",hammondwiki:S+"dairiki.org/HammondWiki/index.php3?$1",hdl:"hdl.handle.net/$1",heraldik:"heraldik-wiki.de/wiki/$1",heroeswiki:"heroeswiki.com/$1",horizonlabs:"horizon.wikimedia.org/$1",hrwiki:S+"hrwiki.org/index.php/$1",hrfwiki:"fanstuff.hrwiki.org/index.php/$1",hupwiki:"wiki.hup.hu/index.php/$1",iarchive:"archive.org/details/$1",imdbname:S+"imdb.com/name/nm$1/",imdbtitle:S+"imdb.com/title/tt$1/",imdbcompany:S+"imdb.com/company/co$1/",imdbcharacter:S+"imdb.com/character/ch$1/",incubator:"incubator"+C,infosecpedia:"infosecpedia.org/wiki/$1",infosphere:"theinfosphere.org/$1","iso639-3":"iso639-3.sil.org/code/$1",issn:S+"worldcat.org/issn/$1",iuridictum:"iuridictum.pecina.cz/w/$1",jaglyphwiki:"glyphwiki.org/wiki/$1",jefo:"esperanto-jeunes.org/wiki/$1",jerseydatabase:"jerseydatabase.com/wiki.php?id=$1",jira:"jira.toolserver.org/browse/$1",jspwiki:S+"ecyrd.com/JSPWiki/Wiki.jsp?page=$1",jstor:S+"jstor.org/journals/$1",kamelo:"kamelopedia.mormo.org/index.php/$1",karlsruhe:"ka.stadtwiki.net/$1",kinowiki:"kino.skripov.com/index.php/$1",komicawiki:"wiki.komica.org/?$1",kontuwiki:"kontu.wiki/$1",wikitech:"wikitech"+C,libreplanet:"libreplanet.org/wiki/$1",linguistlist:"linguistlist.org/forms/langs/LLDescription.cfm?code=$1",linuxwiki:S+"linuxwiki.de/$1",linuxwikide:S+"linuxwiki.de/$1",liswiki:"liswiki.org/wiki/$1",literateprograms:"en.literateprograms.org/$1",livepedia:S+"livepedia.gr/index.php?title=$1",localwiki:"localwiki.org/$1",lojban:"mw.lojban.org/papri/$1",lostpedia:"lostpedia.wikia.com/wiki/$1",lqwiki:"wiki.linuxquestions.org/wiki/$1",luxo:"tools.wmflabs.org/guc/?user=$1",mail:"lists.wikimedia.org/mailman/listinfo/$1",mailarchive:"lists.wikimedia.org/pipermail/$1",mariowiki:S+"mariowiki.com/$1",marveldatabase:S+"marveldatabase.com/wiki/index.php/$1",meatball:"meatballwiki.org/wiki/$1",mw:S+"mediawiki.org/wiki/$1",mediazilla:"bugzilla.wikimedia.org/$1",memoryalpha:"memory-alpha.fandom.com/wiki/$1",metawiki:"meta"+C,metawikimedia:"meta"+C,metawikipedia:"meta"+C,mineralienatlas:S+"mineralienatlas.de/lexikon/index.php/$1",moinmoin:"moinmo.in/$1",monstropedia:S+"monstropedia.org/?title=$1",mosapedia:"mosapedia.de/wiki/index.php/$1",mozcom:"mozilla.wikia.com/wiki/$1",mozillawiki:"wiki.mozilla.org/$1",mozillazinekb:"kb.mozillazine.org/$1",musicbrainz:"musicbrainz.org/doc/$1",mediawikiwiki:S+"mediawiki.org/wiki/$1",mwod:S+"merriam-webster.com/dictionary/$1",mwot:S+"merriam-webster.com/thesaurus/$1",nkcells:S+"nkcells.info/index.php?title=$1",nara:"catalog.archives.gov/id/$1",nosmoke:"no-smok.net/nsmk/$1",nost:"nostalgia."+O,nostalgia:"nostalgia."+O,oeis:"oeis.org/$1",oldwikisource:"wikisource.org/wiki/$1",olpc:"wiki.laptop.org/go/$1",omegawiki:S+"omegawiki.org/Expression:$1",onelook:S+"onelook.com/?ls=b&w=$1",openlibrary:"openlibrary.org/$1",openstreetmap:"wiki.openstreetmap.org/wiki/$1",openwetware:"openwetware.org/wiki/$1",opera7wiki:"operawiki.info/$1",organicdesign:S+"organicdesign.co.nz/$1",orthodoxwiki:"orthodoxwiki.org/$1",osmwiki:"wiki.openstreetmap.org/wiki/$1",otrs:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1",otrswiki:"otrs-wiki"+C,ourmedia:S+"socialtext.net/ourmedia/index.cgi?$1",outreach:"outreach"+C,outreachwiki:"outreach"+C,owasp:S+"owasp.org/index.php/$1",panawiki:"wiki.alairelibre.net/index.php?title=$1",patwiki:"gauss.ffii.org/$1",personaltelco:"personaltelco.net/wiki/$1",petscan:"petscan.wmflabs.org/?psid=$1",phab:"phabricator.wikimedia.org/$1",phabricator:"phabricator.wikimedia.org/$1",phwiki:S+"pocketheaven.com/ph/wiki/index.php?title=$1",phpwiki:"phpwiki.sourceforge.net/phpwiki/index.php?$1",planetmath:"planetmath.org/node/$1",pmeg:S+"bertilow.com/pmeg/$1",pmid:S+"ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract",pokewiki:"pokewiki.de/$1","pokéwiki":"pokewiki.de/$1",policy:"policy.wikimedia.org/$1",proofwiki:S+"proofwiki.org/wiki/$1",pyrev:S+"mediawiki.org/wiki/Special:Code/pywikipedia/$1",pythoninfo:"wiki.python.org/moin/$1",pythonwiki:S+"pythonwiki.de/$1",pywiki:"c2.com/cgi/wiki?$1",psycle:"psycle.sourceforge.net/wiki/$1",quality:"quality"+C,quarry:"quarry.wmflabs.org/$1",regiowiki:"regiowiki.at/wiki/$1",rev:S+"mediawiki.org/wiki/Special:Code/MediaWiki/$1",revo:"purl.org/NET/voko/revo/art/$1.html",rfc:"tools.ietf.org/html/rfc$1",rheinneckar:"rhein-neckar-wiki.de/$1",robowiki:"robowiki.net/?$1",rodovid:"en.rodovid.org/wk/$1",reuterswiki:"glossary.reuters.com/index.php/$1",rowiki:"wiki.rennkuckuck.de/index.php/$1",rt:"rt.wikimedia.org/Ticket/Display.html?id=$1",s23wiki:"s23.org/wiki/$1",scholar:"scholar.google.com/scholar?q=$1",schoolswp:"schools-"+O,scores:"imslp.org/wiki/$1",scoutwiki:"en.scoutwiki.org/$1",scramble:S+"scramble.nl/wiki/index.php?title=$1",seapig:S+"seapig.org/$1",seattlewiki:"seattle.wikia.com/wiki/$1",slwiki:"wiki.secondlife.com/wiki/$1","semantic-mw":S+"semantic-mediawiki.org/wiki/$1",senseislibrary:"senseis.xmp.net/?$1",sharemap:"sharemap.org/$1",silcode:S+"sil.org/iso639-3/documentation.asp?id=$1",slashdot:"slashdot.org/article.pl?sid=$1",sourceforge:"sourceforge.net/$1",spcom:"spcom"+C,species:"species"+C,squeak:"wiki.squeak.org/squeak/$1",stats:"stats.wikimedia.org/$1",stewardry:"tools.wmflabs.org/meta/stewardry/?wiki=$1",strategy:"strategy"+C,strategywiki:"strategywiki.org/wiki/$1",sulutil:"meta.wikimedia.org/wiki/Special:CentralAuth/$1",swtrain:"train.spottingworld.com/$1",svn:"svn.wikimedia.org/viewvc/mediawiki/$1?view=log",swinbrain:"swinbrain.ict.swin.edu.au/wiki/$1",tabwiki:S+"tabwiki.com/index.php/$1",tclerswiki:"wiki.tcl.tk/$1",technorati:S+"technorati.com/search/$1",tenwiki:"ten."+O,testwiki:"test."+O,testwikidata:"test.wikidata.org/wiki/$1",test2wiki:"test2."+O,tfwiki:"tfwiki.net/wiki/$1",thelemapedia:S+"thelemapedia.org/index.php/$1",theopedia:S+"theopedia.com/$1",thinkwiki:S+"thinkwiki.org/wiki/$1",ticket:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1",tmbw:"tmbw.net/wiki/$1",tmnet:S+"technomanifestos.net/?$1",tmwiki:S+"EasyTopicMaps.com/?page=$1",toolforge:"tools.wmflabs.org/$1",toollabs:"tools.wmflabs.org/$1",tools:"toolserver.org/$1",tswiki:S+"mediawiki.org/wiki/Toolserver:$1",translatewiki:"translatewiki.net/wiki/$1",tviv:"tviv.org/wiki/$1",tvtropes:S+"tvtropes.org/pmwiki/pmwiki.php/Main/$1",twiki:"twiki.org/cgi-bin/view/$1",tyvawiki:S+"tyvawiki.org/wiki/$1",umap:"umap.openstreetmap.fr/$1",uncyclopedia:"en.uncyclopedia.co/wiki/$1",unihan:S+"unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1",unreal:"wiki.beyondunreal.com/wiki/$1",urbandict:S+"urbandictionary.com/define.php?term=$1",usej:S+"tejo.org/usej/$1",usemod:S+"usemod.com/cgi-bin/wiki.pl?$1",usability:"usability"+C,utrs:"utrs.wmflabs.org/appeal.php?id=$1",vikidia:"fr.vikidia.org/wiki/$1",vlos:"tusach.thuvienkhoahoc.com/wiki/$1",vkol:"kol.coldfront.net/thekolwiki/index.php/$1",voipinfo:S+"voip-info.org/wiki/view/$1",votewiki:"vote"+C,werelate:S+"werelate.org/wiki/$1",wg:"wg-en."+O,wikia:S+"wikia.com/wiki/w:c:$1",wikiasite:S+"wikia.com/wiki/w:c:$1",wikiapiary:"wikiapiary.com/wiki/$1",wikibooks:"en.wikibooks.org/wiki/$1",wikichristian:S+"wikichristian.org/index.php?title=$1",wikicities:S+"wikia.com/wiki/w:$1",wikicity:S+"wikia.com/wiki/w:c:$1",wikiconference:"wikiconference.org/wiki/$1",wikidata:S+"wikidata.org/wiki/$1",wikif1:S+"wikif1.org/$1",wikifur:"en.wikifur.com/wiki/$1",wikihow:S+"wikihow.com/$1",wikiindex:"wikiindex.org/$1",wikilemon:"wiki.illemonati.com/$1",wikilivres:"wikilivres.org/wiki/$1",wikilivresru:"wikilivres.ru/$1","wikimac-de":"apfelwiki.de/wiki/Main/$1",wikimedia:"foundation"+C,wikinews:"en.wikinews.org/wiki/$1",wikinfo:"wikinfo.org/w/index.php/$1",wikinvest:"meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest",wikiotics:"wikiotics.org/$1",wikipapers:"wikipapers.referata.com/wiki/$1",wikipedia:"en."+O,wikipediawikipedia:"en.wikipedia.org/wiki/Wikipedia:$1",wikiquote:"en.wikiquote.org/wiki/$1",wikisophia:"wikisophia.org/index.php?title=$1",wikisource:"en.wikisource.org/wiki/$1",wikispecies:"species"+C,wikispot:"wikispot.org/?action=gotowikipage&v=$1",wikiskripta:S+"wikiskripta.eu/index.php/$1",labsconsole:"wikitech"+C,wikiti:"wikiti.denglend.net/index.php?title=$1",wikiversity:"en.wikiversity.org/wiki/$1",wikivoyage:"en.wikivoyage.org/wiki/$1",betawikiversity:"beta.wikiversity.org/wiki/$1",wikiwikiweb:"c2.com/cgi/wiki?$1",wiktionary:"en.wiktionary.org/wiki/$1",wipipedia:"wipipedia.org/index.php/$1",wlug:S+"wlug.org.nz/$1",wmam:"am"+C,wmar:S+"wikimedia.org.ar/wiki/$1",wmat:"mitglieder.wikimedia.at/$1",wmau:"wikimedia.org.au/wiki/$1",wmbd:"bd"+C,wmbe:"be"+C,wmbr:"br"+C,wmca:"ca"+C,wmch:S+"wikimedia.ch/$1",wmcl:S+"wikimediachile.cl/index.php?title=$1",wmcn:"cn"+C,wmco:"co"+C,wmcz:S+"wikimedia.cz/web/$1",wmdc:"wikimediadc.org/wiki/$1",securewikidc:"secure.wikidc.org/$1",wmde:"wikimedia.de/wiki/$1",wmdk:"dk"+C,wmee:"ee"+C,wmec:"ec"+C,wmes:S+"wikimedia.es/wiki/$1",wmet:"ee"+C,wmfdashboard:"outreachdashboard.wmflabs.org/$1",wmfi:"fi"+C,wmfr:"wikimedia.fr/$1",wmge:"ge"+C,wmhi:"hi"+C,wmhk:"meta.wikimedia.org/wiki/Wikimedia_Hong_Kong",wmhu:"wikimedia.hu/wiki/$1",wmid:"id"+C,wmil:S+"wikimedia.org.il/$1",wmin:"wiki.wikimedia.in/$1",wmit:"wiki.wikimedia.it/wiki/$1",wmke:"meta.wikimedia.org/wiki/Wikimedia_Kenya",wmmk:"mk"+C,wmmx:"mx"+C,wmnl:"nl"+C,wmnyc:"nyc"+C,wmno:"no"+C,"wmpa-us":"pa-us"+C,wmph:"meta.wikimedia.org/wiki/Wikimedia_Philippines",wmpl:"pl"+C,wmpt:"pt"+C,wmpunjabi:"punjabi"+C,wmromd:"romd"+C,wmrs:"rs"+C,wmru:"ru"+C,wmse:"se"+C,wmsk:"wikimedia.sk/$1",wmtr:"tr"+C,wmtw:"wikimedia.tw/wiki/index.php5/$1",wmua:"ua"+C,wmuk:"wikimedia.org.uk/wiki/$1",wmve:"wikimedia.org.ve/wiki/$1",wmza:"wikimedia.org.za/wiki/$1",wm2005:"wikimania2005"+C,wm2006:"wikimania2006"+C,wm2007:"wikimania2007"+C,wm2008:"wikimania2008"+C,wm2009:"wikimania2009"+C,wm2010:"wikimania2010"+C,wm2011:"wikimania2011"+C,wm2012:"wikimania2012"+C,wm2013:"wikimania2013"+C,wm2014:"wikimania2014"+C,wm2015:"wikimania2015"+C,wm2016:"wikimania2016"+C,wm2017:"wikimania2017"+C,wm2018:"wikimania2018"+C,wmania:"wikimania"+C,wikimania:"wikimania"+C,wmteam:"wikimaniateam"+C,wmf:"foundation"+C,wmfblog:"blog.wikimedia.org/$1",wmdeblog:"blog.wikimedia.de/$1",wookieepedia:"starwars.wikia.com/wiki/$1",wowwiki:S+"wowwiki.com/$1",wqy:"wqy.sourceforge.net/cgi-bin/index.cgi?$1",wurmpedia:"wurmpedia.com/index.php/$1",viaf:"viaf.org/viaf/$1",zrhwiki:S+"zrhwiki.ch/wiki/$1",zum:"wiki.zum.de/$1",zwiki:S+"zwiki.org/$1",m:"meta"+C,meta:"meta"+C,sep11:"sep11."+O,d:S+"wikidata.org/wiki/$1",minnan:"zh-min-nan."+O,nb:"no."+O,"zh-cfr":"zh-min-nan."+O,"zh-cn":"zh."+O,"zh-tw":"zh."+O,nan:"zh-min-nan."+O,vro:"fiu-vro."+O,cmn:"zh."+O,lzh:"zh-classical."+O,rup:"roa-rup."+O,gsw:"als."+O,"be-tarask":"be-x-old."+O,sgs:"bat-smg."+O,egl:"eml."+O,w:"en."+O,wikt:"en.wiktionary.org/wiki/$1",q:"en.wikiquote.org/wiki/$1",b:"en.wikibooks.org/wiki/$1",n:"en.wikinews.org/wiki/$1",s:"en.wikisource.org/wiki/$1",chapter:"en"+C,v:"en.wikiversity.org/wiki/$1",voy:"en.wikivoyage.org/wiki/$1"};Object.keys(E).forEach(e=>{N[e]=e+".wikipedia.org/wiki/$1"});var q=function(e){let t=e.page||"";if(-1!==t.indexOf(":")){let i=t.match(/^(.*):(.*)/);if(null===i)return e;let a=i[1]||"";if(a=a.toLowerCase(),-1!==a.indexOf(":")){let[,t,i]=a.match(/^:?(.*):(.*)/);if(N.hasOwnProperty(t)&&!1===E.hasOwnProperty(i))return e;e.wiki={wiki:t,lang:i}}else{if(!1===N.hasOwnProperty(a))return e;e.wiki=a}e.page=i[2]}return e};const L=/^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i,A=/\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g,P=/\[\[(.{0,160}?)\]\]([a-z]+)?/gi;var T=function(e){let t=[];if(t=function(e,t){return t.replace(A,(function(t,i,a,r){return r=r||"",e.push({type:"external",site:i+a,text:r.trim(),raw:t}),r})),e}(t,e),t=function(e,t){return t.replace(P,(function(t,i,a){let r=null,n=i;if(i.match(/\|/)&&(n=(i=i.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g,"$1$2")).replace(/(.{2,100})\|.{0,200}/,"$1"),r=i.replace(/.{2,100}?\|/,""),null===r&&n.match(/\|$/)&&(n=n.replace(/\|$/,""),r=n)),n.match(L))return i;let o={page:n,raw:t};return o.page=o.page.replace(/#(.*)/,(e,t)=>(o.anchor=t,"")),o=q(o),o.wiki&&(o.type="interwiki"),null!==r&&r!==o.page&&(o.text=r),a&&(o.text=o.text||o.page,o.text+=a.trim()),o.page&&!1===/^[A-Z]/.test(o.page)&&(o.text||(o.text=o.page),o.page=o.page),e.push(o),i})),e}(t,e),0!==t.length)return t};const D=new RegExp("^[ \n\t]*?#("+f.redirects.join("|")+") *?(\\[\\[.{2,180}?\\]\\])","i");var I=function(e){return!(!e||e.length>500)&&D.test(e)},R=function(e){let t=e.match(D);if(t&&t[2]){return(T(t[2])||[])[0]}return{}};const M=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],U=`< ?(${M.join("|")}) ?[^>]{0,200}?>`,B=`< ?/ ?(${M.join("|")}) ?>`,F=new RegExp(`${U}[\\s\\S]+?${B}`,"ig");var K=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(F," ")).replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%\.\-#:;'" ]{2,100}\/? ?> ?/g," ")).replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g," ")).replace(/(.*?)<\/i>/g,"''$1''")).replace(/(.*?)<\/b>/g,"'''$1'''")).replace(/(.*?)<\/sub>/g,"{{sub|$1}}")).replace(/(.*?)<\/sup>/g,"{{sup|$1}}")).replace(/ ?<[ \/]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ \/]?> ?/g," ")).replace(/ ?<[ \/]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ \/]?> ?/g," ")).replace(/ ?<[ \/]?h[0-9][ \/]?> ?/g," ")).replace(/ ?< ?br ?\/> ?/g,"\n")).trim()};var W=function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(//g,"")).replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi,"")).replace(/~~{1,3}/g,"")).replace(/\r/g,"")).replace(/\u3002/g,". ")).replace(/----/g,"")).replace(/\{\{\}\}/g," – ")).replace(/\{\{\\\}\}/g," / ")).replace(/ /g," "),e=(e=(e=K(e)).replace(/\([,;: ]+?\)/g,"")).replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,"")};const Y=/[\\\.$]/,Z=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")};var H=function(e={}){let t=Object.keys(e);for(let i=0;ie.json(t));a.length>0&&(i.paragraphs=a)}if(!0===t.images){let a=e.images().map(e=>e.json(t));a.length>0&&(i.images=a)}if(!0===t.tables){let a=e.tables().map(e=>e.json(t));a.length>0&&(i.tables=a)}if(!0===t.templates){let a=e.templates();a.length>0&&(i.templates=a,!0===t.encode&&i.templates.forEach(e=>H(e)))}if(!0===t.infoboxes){let a=e.infoboxes().map(e=>e.json(t));a.length>0&&(i.infoboxes=a)}if(!0===t.lists){let a=e.lists().map(e=>e.json(t));a.length>0&&(i.lists=a)}if(!0===t.references||!0===t.citations){let a=e.references().map(e=>e.json(t));a.length>0&&(i.references=a)}return!0===t.sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const J={type:"internal"},X=function(e){e=e||{},e=Object.assign({},J,e),Object.defineProperty(this,"data",{enumerable:!1,value:e})},Q={text:function(e){return void 0!==e&&(this.data.text=e),this.data.text||this.data.page||""},json:function(){let e={text:this.data.text,type:this.type()};"internal"===e.type?e.page=this.page():"interwiki"===e.type?e.wiki=this.wiki():e.site=this.site();let t=this.anchor();return t&&(e.anchor=t),e},page:function(e){return void 0!==e&&(this.data.page=e),this.data.page},anchor:function(e){return void 0!==e&&(this.data.anchor=e),this.data.anchor||""},wiki:function(e){return void 0!==e&&(this.data.wiki=e),this.data.wiki},type:function(e){return void 0!==e&&(this.data.type=e),this.data.type},site:function(e){return void 0!==e&&(this.data.site=e),this.data.site},href:function(){let e=this.type();if("external"===e)return this.site();let t=this.page();t=t.replace(/ /g,"_"),t=encodeURIComponent(t);let i="";if("interwiki"===e){let e=this.wiki();i="https://en.wikipedia.org/wiki/$1",N.hasOwnProperty(e)&&(i="http://"+N[this.wiki()]),i=i.replace(/\$1/g,t)}else i="./"+this.page();return this.anchor()&&(i+="#"+this.anchor()),i}};Object.keys(Q).forEach(e=>{X.prototype[e]=Q[e]});var ee=X;var te=function(e){let t=e.text,i=T(t)||[];e.links=i.map(e=>(t=t.replace(e.raw,e.text||e.page||""),delete e.raw,new ee(e))),t=t.replace(/\[\[File:(.{2,80}?)\|([^\]]+?)\]\](\w{0,5})/g,"$1"),e.text=t};var ie=function(e){let t=[],i=[],a=e.text||"";return a=a.replace(/'''''(.{0,200}?)'''''/g,(e,a)=>(t.push(a),i.push(a),a)),a=a.replace(/''''(.{0,200}?)''''/g,(e,i)=>(t.push(`'${i}'`),`'${i}'`)),a=a.replace(/'''(.{0,200}?)'''/g,(e,i)=>(t.push(i),i)),a=a.replace(/''(.{0,200}?)''/g,(e,t)=>(i.push(t),t)),e.text=a,t.length>0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e};const ae=/^[0-9,.]+$/,re={text:!0,links:!0,formatting:!0,numbers:!0};var ne=function(e,t){t=d(t,re);let i={},a=e.text();if(!0===t.text&&(i.text=a),!0===t.numbers&&ae.test(a)){let e=Number(a.replace(/,/g,""));!1===isNaN(e)&&(i.number=e)}return t.links&&e.links().length>0&&(i.links=e.links().map(e=>e.json())),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i};const oe=function(e={}){Object.defineProperty(this,"data",{enumerable:!1,value:e})},se={links:function(e){let t=this.data.links||[];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page===e);return void 0===i?[]:[i]}return t},interwiki:function(){return this.links().filter(e=>void 0!==e.wiki)},bolds:function(){return this.data&&this.data.fmt&&this.data.fmt.bold&&this.data.fmt.bold||[]},italics:function(){return this.data&&this.data.fmt&&this.data.fmt.italic&&this.data.fmt.italic||[]},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return ne(this,e)},isEmpty:function(){return""===this.data.text}};Object.keys(se).forEach(e=>{oe.prototype[e]=se[e]});const le={links:"link",bolds:"bold",italics:"italic"};Object.keys(le).forEach(e=>{oe.prototype[le[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}}),oe.prototype.plaintext=oe.prototype.text;var ce=oe;const ue=["ad","adj","adm","adv","al","alta","approx","apr","apt","arc","ariz","assn","asst","atty","aug","ave","ba","bc","bl","bldg","blvd","brig","bros","ca","cal","calif","capt","cca","cg","cl","cm","cmdr","co","col","colo","comdr","conn","corp","cpl","cres","ct","cyn","dak","dec","def","dept","det","dg","dist","dl","dm","dr","ea","eg","eng","esp","esq","est","etc","ex","exp","feb","fem","fig","fl oz","fl","fla","fm","fr","ft","fy","ga","gal","gb","gen","gov","hg","hon","hr","hrs","hwy","hz","ia","ida","ie","inc","inf","jan","jd","jr","jul","jun","kan","kans","kb","kg","km","kmph","lat","lb","lit","llb","lm","lng","lt","ltd","lx","ma","maj","mar","masc","mb","md","messrs","mg","mi","min","minn","misc","mister","ml","mlle","mm","mme","mph","mps","mr","mrs","ms","mstr","mt","neb","nebr","nee","no","nov","oct","okla","ont","op","ord","oz","pa","pd","penn","penna","phd","pl","pp","pref","prob","prof","pron","ps","psa","pseud","pt","pvt","qt","que","rb","rd","rep","reps","res","rev","sask","sec","sen","sens","sep","sept","sfc","sgt","sir","situ","sq ft","sq","sr","ss","st","supt","surg","tb","tbl","tbsp","tce","td","tel","temp","tenn","tex","tsp","univ","usafa","ut","va","vb","ver","vet","vitro","vivo","vol","vs","vt","wis","wisc","wr","wy","wyo","yb","µg"].concat("[^]][^]]"),pe=new RegExp("(^| |')("+ue.join("|")+")[.!?] ?$","i"),me=new RegExp("[ |.|'|[][A-Z].? *?$","i"),de=new RegExp("\\.\\.\\.* +?$"),he=/ c\. $/,ge=new RegExp("[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]","iu");var fe=function(e){let t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;let a=function(e){let t=e.split(/(\n+)/);return t=t.filter(e=>e.match(/\S/)),t=t.map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s+|$)/g)})),function(e){let t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t)}(e);for(let e=0;ei.length)return!1;const a=e.match(/"/g);return!(a&&a.length%2!=0&&e.length<900)}(r))?i[e+1]=i[e]+(i[e+1]||""):i[e]&&i[e].length>0&&(t.push(i[e]),i[e]="");var r;return 0===t.length?[e]:t};function ke(e){let t={text:e};var i;return te(t),t.text=(i=(i=(i=t.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(i=n.trim_whitespace(i)).replace(/ +\.$/,".")),t=ie(t),new ce(t)}var be=ke,we=function(e){let t=fe(e.wiki);t=t.map(ke),t[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t};var ye=function(e){return e=(e=e.replace(/^{{/,"")).replace(/}}$/,"")};var $e=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")};var xe=function(e){let t=e.split(/\n?\|/);t.forEach((e,i)=>{null!==e&&(/\[\[[^\]]+$/.test(e)||/{{[^}]+$/.test(e)||e.split("{{").length!==e.split("}}").length||e.split("[[").length!==e.split("]]").length)&&(t[i+1]=t[i]+"|"+t[i+1],t[i]=null)}),t=t.filter(e=>null!==e),t=t.map(e=>(e||"").trim());for(let e=t.length-1;e>=0;e-=1){""===t[e]&&t.pop();break}return t};const ve=/^[a-z0-9\u00C0-\u00FF\u4e00-\u9faf\._\- '()œ]+=/iu,je={template:!0,list:!0,prototype:!0};var _e=function(e,t){let i=0;return e.reduce((e,a="")=>{if(a=a.trim(),!0===ve.test(a)){let t=function(e){let t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();let a=t.slice(1).join("=");return je.hasOwnProperty(i)&&(i="_"+i),{key:i,val:a.trim()}}(a);if(t.key)return e[t.key]=t.val,e}if(t&&t[i]){e[t[i]]=a}else e.list=e.list||[],e.list.push(a);return i+=1,e},{})};const ze={classname:!0,style:!0,align:!0,margin:!0,left:!0,break:!0,boxsize:!0,framestyle:!0,item_style:!0,collapsible:!0,list_style_type:!0,"list-style-type":!0,colwidth:!0};var Ee=function(e){return Object.keys(e).forEach(t=>{!0===ze[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]}),e};const Oe=be,Ce=function(e,t){let i=Oe(e);return"json"===t?i.json():"raw"===t?i:i.text()};var Se=function(e,t=[],i){e=ye(e||"");let a=xe(e),r=a.shift(),n=_e(a,t);return n=Ee(n),n[1]&&t[0]&&!1===n.hasOwnProperty(t[0])&&(n[t[0]]=n[1],delete n[1]),Object.keys(n).forEach(e=>{n[e]="list"!==e?Ce(n[e],i):n[e].map(e=>Ce(e,i))}),r&&(n.template=$e(r)),n};const Ne=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},qe={title:function(){let e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){let t=[];if("number"==typeof e)return t[e];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},text:function(){return""},json:function(e={}){let t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=H(t)),t}};Object.keys(qe).forEach(e=>{Ne.prototype[e]=qe[e]});var Le=Ne;const Ae=be,Pe=function(e){return/^ *?\{\{ *?(cite|citation)/i.test(e)&&/\}\} *?$/.test(e)&&!1===/citation needed/i.test(e)},Te=function(e){let t=Se(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},De=function(e){return{template:"citation",type:"inline",data:{},inline:Ae(e)||{}}};var Ie=function(e){let t=[],i=e._wiki;i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Pe(a)){let e=Te(a);e&&t.push(e),i=i.replace(a,"")}else t.push(De(a));return" "})),i=i.replace(/ ?]{0,200}?\/> ?/gi," "),i=i.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Pe(a)){let e=Te(a);e&&t.push(e),i=i.replace(a,"")}else t.push(De(a));return" "})),i=i.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g," "),e._references=t.map(e=>new Le(e)),e._wiki=i};const{trim_whitespace:Re}=n,Me=be,Ue=/^(={1,5})(.{1,200}?)={1,5}$/;var Be=function(e,t){let i=t.match(Ue);if(!i)return e.title="",e.depth=0,e;let a=i[2]||"";a=Me(a).text(),a=a.replace(/\{\{.+?\}\}/,"");let r={_wiki:a};Ie(r),a=r._wiki,a=Re(a);let n=0;return i[1]&&(n=i[1].length-2),e.title=a,e.depth=n,e};var Fe=function(e){let t=[],i=[];e=function(e){return e=e.filter(e=>e&&!0!==/^\|\+/.test(e)),!0===/^{\|/.test(e[0])&&e.shift(),!0===/^\|}/.test(e[e.length-1])&&e.pop(),!0===/^\|-/.test(e[0])&&e.shift(),e}(e);for(let a=0;a0&&(t.push(i),i=[]):(r=r.split(/(?:\|\||!!)/),!r[0]&&r[1]&&r.shift(),r.forEach(e=>{e=(e=e.replace(/^\| */,"")).trim(),i.push(e)}))}return i.length>0&&t.push(i),t};const Ke=/.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/,We=/.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/;var Ye=function(e){return e=function(e){return e.forEach((t,i)=>{t.forEach((a,r)=>{let n=a.match(Ke);if(null!==n){let o=parseInt(n[1],10);a=a.replace(Ke,""),t[r]=a;for(let t=i+1;t{e.forEach((t,i)=>{let a=t.match(We);if(null!==a){let r=parseInt(a[1],10);e[i]=t.replace(We,"");for(let t=1;te.length>0)}(e))};const Ze=be,He=/^!/,Ge={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},Ve=function(e){return(e=Ze(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},Je=function(e){if(e.length<=3)return[];let t=e[0].slice(0);t=t.map(e=>(e=e.replace(/^\! */,""),e=Ze(e).text(),e=(e=Ve(e)).toLowerCase()));for(let i=0;ie.trim()),i=Fe(t);if(i=i.filter(e=>e),0===i.length)return[];i=function(e){return e.filter(e=>1!==e.length||!e[0]||!He.test(e[0])||!1!==/rowspan/i.test(e[0]))}(i),i=Ye(i);let a=function(e=[]){let t=[];var i;(i=(i=e[0])||[]).length-i.filter(e=>e).length>3&&e.shift();let a=e[0];return a&&a[0]&&a[1]&&(/^!/.test(a[0])||/^!/.test(a[1]))&&(t=a.map(e=>(e=e.replace(/^\! */,""),Ve(e))),e.shift()),a=e[0],a&&a[0]&&a[1]&&/^!/.test(a[0])&&/^!/.test(a[1])&&(a.forEach((e,i)=>{e=e.replace(/^\! */,""),e=Ve(e),!0===Boolean(e)&&(t[i]=e)}),e.shift()),t}(i);if(!a||a.length<=1){a=Je(i);let e=i[i.length-1]||[];a.length<=1&&e.length>2&&(a=Je(i.slice(1)),a.length>0&&(i=i.slice(2)))}return i.map(e=>function(e,t){let i={};return e.forEach((e,a)=>{let r=t[a]||"col"+(a+1),n=Ze(e);n.text(Ve(n.text())),i[r]=n}),i}(e,a))};var Qe=function(e,t){return e.map(e=>{let i={};return Object.keys(e).forEach(t=>{i[t]=e[t].json()}),!0===t.encode&&(i=H(i)),i})};const et={},tt=function(e=""){return e=(e=(e=(e=e.toLowerCase()).replace(/[_-]/g," ")).replace(/\(.*?\)/,"")).trim()},it=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},at={links(e){let t=[];if(this.data.forEach(e=>{Object.keys(e).forEach(i=>{t=t.concat(e[i].links())})}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},get(e){if("string"==typeof e){let t=tt(e);return this.data.map(e=>e[t]?e[t].text():null)}return e=e.map(tt),this.data.map(t=>e.reduce((e,i)=>(t[i]&&(e[i]=t[i].text()),e),{}))},keyValue(e){let t=this.json(e);return t.forEach(e=>{Object.keys(e).forEach(t=>{e[t]=e[t].text})}),t},json(e){return e=d(e,et),Qe(this.data,e)},text:()=>""};at.keyvalue=at.keyValue,at.keyval=at.keyValue,Object.keys(at).forEach(e=>{it.prototype[e]=at[e]});var rt=it;const nt=/^\s*{\|/,ot=/^\s*\|}/;var st=function(e){let t=[],i=e._wiki,a=i.split("\n"),r=[];for(let e=0;e0&&(r[r.length-1]+="\n"+a[e]);else{r[r.length-1]+="\n"+a[e];let i=r.pop();t.push(i)}else r.push(a[e]);let n=[];t.forEach(e=>{if(e){i=i.replace(e+"\n",""),i=i.replace(e,"");let t=Xe(e);t&&t.length>0&&n.push(new rt(t))}}),n.length>0&&(e._tables=n),e._wiki=i};const lt={sentences:!0};var ct=function(e,t){let i={};return!0===(t=d(t,lt)).sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const ut={sentences:!0,lists:!0,images:!0},pt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},mt={sentences:function(){return this.data.sentences||[]},references:function(){return this.data.references},lists:function(){return this.data.lists},images(){return this.data.images||[]},links:function(e){let t=[];if(this.sentences().forEach(i=>{t=t.concat(i.links(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},interwiki(){let e=[];return this.sentences().forEach(t=>{e=e.concat(t.interwiki())}),e||[]},text:function(e){e=d(e,ut);let t=this.sentences().map(t=>t.text(e)).join(" ");return this.lists().forEach(e=>{t+="\n"+e.text()}),t},json:function(e){return e=d(e,ut),ct(this,e)}};mt.citations=mt.references,Object.keys(mt).forEach(e=>{pt.prototype[e]=mt[e]});const dt={sentences:"sentence",references:"reference",citation:"citations",lists:"list",images:"image",links:"link"};Object.keys(dt).forEach(e=>{pt.prototype[dt[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}});var ht=pt;var gt=function(e){let t=[],i=[];const a=e.split("");let r=0;for(let n=0;n0){let e=0,a=0;for(let t=0;ta&&i.push("]"),t.push(i.join("")),i=[]}}return t};const ft=be,kt=new RegExp("("+f.images.join("|")+"):","i");let bt=`(${f.images.join("|")})`;const wt=new RegExp(bt+":(.+?)[\\||\\]]","iu"),yt={thumb:!0,thumbnail:!0,border:!0,right:!0,left:!0,center:!0,top:!0,bottom:!0,none:!0,upright:!0,baseline:!0,middle:!0,sub:!0,super:!0};var $t=function(e,t){let i=e.wiki;gt(i).forEach((function(a){if(!0===kt.test(a)){e.images=e.images||[];let r=function(e,t){let i=e.match(wt);if(null===i||!i[2])return null;let a=`${i[1]}:${i[2]||""}`;a=a.trim();let r=a.charAt(0).toUpperCase()+a.substring(1);if(r=r.replace(/ /g,"_"),r){let i={file:a,lang:t._lang,domain:t._domain};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");let r=Se(e),n=r.list||[];return r.alt&&(i.alt=r.alt),n=n.filter(e=>!1===yt.hasOwnProperty(e)),n[n.length-1]&&(i.caption=ft(n[n.length-1])),new z(i)}return null}(a,t);r&&e.images.push(r),i=i.replace(a,"")}})),e.wiki=i};const xt={},vt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},jt={lines(){return this.data},links(e){let t=[];if(this.lines().forEach(e=>{t=t.concat(e.links())}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},json(e){return e=d(e,xt),this.lines().map(t=>t.json(e))},text(){return((e,t)=>e.map(e=>" * "+e.text(t)).join("\n"))(this.data)}};Object.keys(jt).forEach(e=>{vt.prototype[e]=jt[e]});var _t=vt;const zt=be,Et=/^[#\*:;\|]+/,Ot=/^\*+[^:,\|]{4}/,Ct=/^ ?\#[^:,\|]{4}/,St=/[a-z_0-9\]\}]/i,Nt=function(e){return Et.test(e)||Ot.test(e)||Ct.test(e)},qt=function(e,t){let i=[];for(let a=t;ae&&St.test(e)),i=function(e){let t=1;e=e.filter(e=>e);for(let i=0;i0&&(i.push(a),e+=a.length-1)}else a.push(t[e]);e.lists=i.map(e=>new _t(e)),e.wiki=a.join("\n")}};var Tt=function(e,t){let i=e._wiki,a=i.split(At);a=a.filter(e=>e&&e.trim().length>0),a=a.map(e=>{let i={wiki:e,lists:[],sentences:[],images:[]};return Pt.list(i),Pt.image(i,t),Lt(i),new ht(i)}),e._wiki=i,e._paragraphs=a};var Dt=function(e){let t=0,i=[],a=[];for(let r=e.indexOf("{");-1!==r&&r0?r++:r=e.indexOf("{",r+1)){let n=e[r];if("{"===n&&(t+=1),t>0){if("}"===n&&(t-=1,0===t)){a.push(n);let e=a.join("");a=[],/\{\{/.test(e)&&/\}\}/.test(e)&&i.push(e);continue}if(1===t&&"{"!==n&&"}"!==n){t=0,a=[];continue}a.push(n)}}return i};var It=function(e){let t=null;return t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+?)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1],t&&(t=t.replace(/:.*/,""),t=$e(t)),t||null};const Rt=/\{\{/,Mt=function(e){return{body:e=e.replace(/#invoke:/,""),name:It(e),children:[]}},Ut=function(e){let t=e.body.substr(2);return t=t.replace(/\}\}$/,""),e.children=Dt(t),e.children=e.children.map(Mt),0===e.children.length||e.children.forEach(e=>{let t=e.body.substr(2);return Rt.test(t)?Ut(e):null}),e};var Bt=function(e){let t=Dt(e);return t=t.map(Mt),t=t.map(Ut),t};var Ft=["anchor","defaultsort","use list-defined references","void","pp","pp-move-indef","pp-semi-indef","pp-vandalism","r","#tag","div col","pope list end","shipwreck list end","starbox end","end box","end","s-end"].reduce((e,t)=>(e[t]=!0,e),{}),Kt={"gnf protein box":!0,"automatic taxobox":!0,"chembox ":!0,editnotice:!0,geobox:!0,hybridbox:!0,ichnobox:!0,infraspeciesbox:!0,mycomorphbox:!0,oobox:!0,"paraphyletic group":!0,speciesbox:!0,subspeciesbox:!0,"starbox short":!0,taxobox:!0,nhlteamseason:!0,"asian games bid":!0,"canadian federal election results":!0,"dc thomson comic strip":!0,"daytona 24 races":!0,edencharacter:!0,"moldova national football team results":!0,samurai:!0,protein:!0,"sheet authority":!0,"order-of-approx":!0,"bacterial labs":!0,"medical resources":!0,ordination:!0,"hockey team coach":!0,"hockey team gm":!0,"pro hockey team":!0,"hockey team player":!0,"hockey team start":!0,mlbbioret:!0};const Wt=new RegExp("^(subst.)?("+f.infoboxes.join("|")+")[: \n]","i"),Yt=/^infobox /i,Zt=/ infobox$/i,Ht=/$Year in [A-Z]/i;var Gt=function(e){return!0===Kt.hasOwnProperty(e)||(!!Wt.test(e)||(!(!Yt.test(e)&&!Zt.test(e))||!!Ht.test(e)))},Vt=function(e={}){let t=e.template.match(Wt),i=e.template;t&&t[0]&&(i=i.replace(t[0],"")),i=i.trim();let a={template:"infobox",type:i,data:e};return delete a.data.template,delete a.data.list,a};let Jt={imdb:"imdb name","imdb episodess":"imdb episode",localday:"currentday",localdayname:"currentdayname",localyear:"currentyear","birth date based on age at death":"birth based on age as of date","bare anchored list":"anchored list",cvt:"convert",cricon:"flagicon",sfrac:"frac",sqrt:"radic",cite:"citation","unreferenced section":"unreferenced",redir:"redirect",sisterlinks:"sister project links","main article":"main"},Xt={flagcountry:["cr","cr-rt"],trunc:["str left","str crop"],percentage:["pct","percentage"],rnd:["rndfrac","rndnear"],abbr:["tooltip","abbrv","define"],sfn:["sfnref","harvid","harvnb"],"birth date and age":["death date and age","bda"],currentmonth:["localmonth","currentmonthname","currentmonthabbrev"],currency:["monnaie","unité","nombre","nb","iso4217"],coord:["coor","coor title dms","coor title dec","coor dms","coor dm","coor dec"],"columns-list":["cmn","col-list","columnslist","collist"],nihongo:["nihongo2","nihongo3","nihongo-s","nihongo foot"],plainlist:["flatlist","ublist","plain list"],"winning percentage":["winpct","winperc"],"collapsible list":["unbulleted list","ubl"],"election box begin":["election box begin no change","election box begin no party","election box begin no party no change","election box inline begin","election box inline begin no change"],"election box candidate":["election box candidate for alliance","election box candidate minor party","election box candidate no party link no change","election box candidate with party link","election box candidate with party link coalition 1918","election box candidate with party link no change","election box inline candidate","election box inline candidate no change","election box inline candidate with party link","election box inline candidate with party link no change","election box inline incumbent"],"4teambracket":["2teambracket","4team2elimbracket","8teambracket","16teambracket","32teambracket","4roundbracket-byes","cwsbracket","nhlbracket","nhlbracket-reseed","4teambracket-nhl","4teambracket-ncaa","4teambracket-mma","4teambracket-mlb","16teambracket-two-reseeds","8teambracket-nhl","8teambracket-mlb","8teambracket-ncaa","8teambracket-afc","8teambracket-afl","8teambracket-tennis3","8teambracket-tennis5","16teambracket-nhl","16teambracket-nhl divisional","16teambracket-nhl-reseed","16teambracket-nba","16teambracket-swtc","16teambracket-afc","16teambracket-tennis3","16teambracket-tennis5"],start:["end","birth","death","start date","end date","birth date","death date","start date and age","end date and age","dob"],"start-date":["end-date","birth-date","death-date","birth-date and age","birth-date and given age","death-date and age","death-date and given age"],tl:["lts","t","tfd links","tiw","tltt","tetl","tsetl","ti","tic","tiw","tlt","ttl","twlh","tl2","tlu","demo","hatnote","xpd","para","elc","xtag","mli","mlix","#invoke","url"]};Object.keys(E).forEach(e=>{Jt["ipa-"+e]="ipa",Jt["ipac-"+e]="ipac"}),Object.keys(Xt).forEach(e=>{Xt[e].forEach(t=>{Jt[t]=e})});var Qt=Jt;let ei={p1:0,p2:1,p3:2,resize:1,lang:1,"rtl-lang":1,l:2,h:1,sort:1};["defn","lino","finedetail","nobold","noitalic","nocaps","vanchor","rnd","date","taste","monthname","baseball secondary style","lang-de","nowrap","nobr","big","cquote","pull quote","small","smaller","midsize","larger","big","kbd","bigger","large","mono","strongbad","stronggood","huge","xt","xt2","!xt","xtn","xtd","dc","dcr","mxt","!mxt","mxtn","mxtd","bxt","!bxt","bxtn","bxtd","delink","pre","var","mvar","pre2","code"].forEach(e=>{ei[e]=0}),Object.keys(E).forEach(e=>{ei["lang-"+e]=0});var ti=ei;var ii={titlecase:e=>e.charAt(0).toUpperCase()+e.substring(1),sisterProjects:{wikt:"wiktionary",commons:"commons",c:"commons",commonscat:"commonscat",n:"wikinews",q:"wikiquote",s:"wikisource",a:"wikiauthor",b:"wikibooks",voy:"wikivoyage",v:"wikiversity",d:"wikidata",species:"wikispecies",m:"meta",mw:"mediawiki"},getLang:function(e){let t=e.match(/ipac?-(.+)/);return null!==t?!0===E.hasOwnProperty(t[1])?E[t[1]].english_title:t[1]:null},percentage:function(e){if(!e.numerator&&!e.denominator)return null;let t=Number(e.numerator)/Number(e.denominator);t*=100;let i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},toNumber:function(e=""){if("number"==typeof e)return e;e=(e=e.replace(/,/g,"")).replace(/−/g,"-");let t=Number(e);return isNaN(t)?e:t}},ai={ra:e=>{let t=Se(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:e=>(Se(e,["degrees"]).degrees||"")+"°",hms2deg:e=>{let t=Se(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:e=>{let t=Se(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},sortname:e=>{let t=Se(e,["first","last","target","sort"]),i=`${t.first||""} ${t.last||""}`;return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=` (${t.dab})`,t.target&&(t.target+=` (${t.dab})`)),t.target?`[[${t.target}|${i}]]`:`[[${i}]]`)},"first word":e=>{let t=Se(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:e=>{let t=Se(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":e=>{let t=Se(e,["str","start","end"]),i=parseInt(t.start,10)-1,a=parseInt(t.end,10);return t.str.substr(i,a)},reign:e=>{let t=Se(e,["start","end"]);return`(r. ${t.start} – ${t.end})`},circa:e=>"c. "+Se(e,["year"]).year,"decade link":e=>{let t=Se(e,["year"]);return`${t.year}|${t.year}s`},decade:e=>{let t=Se(e,["year"]),i=Number(t.year);return i=10*parseInt(i/10,10),i+"s"},century:e=>{let t=Se(e,["year"]),i=Number(t.year);return i=parseInt(i/100,10)+1,""+i},radic:e=>{let t=Se(e,["after","before"]);return`${t.before||""}√${t.after||""}`},"medical cases chart/row":e=>e,oldstyledate:e=>{let t=Se(e,["date","year"]);return t.year?t.date+" "+t.year:t.date},braces:e=>{let t=Se(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},hlist:e=>{let t=Se(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:e=>(Se(e).list||[]).join(", "),catlist:e=>(Se(e).list||[]).join(", "),"br separated entries":e=>(Se(e).list||[]).join("\n\n"),"comma separated entries":e=>(Se(e).list||[]).join(", "),"anchored list":e=>{let t=Se(e).list||[];return t=t.map((e,t)=>`${t+1}. ${e}`),t.join("\n\n")},"bulleted list":e=>{let t=Se(e).list||[];return t=t.filter(e=>e),t=t.map(e=>"• "+e),t.join("\n\n")},plainlist:e=>{let t=(e=ye(e)).split("|").slice(1);return t=t.join("|").split(/\n ?\* ?/),t=t.filter(e=>e),t.join("\n\n")},term:e=>Se(e,["term"]).term+":",linum:e=>{let t=Se(e,["num","text"]);return`${t.num}. ${t.text}`},"block indent":e=>{let t=Se(e);return t[1]?"\n"+t[1]+"\n":""},lbs:e=>{let t=Se(e,["text"]);return`[[${t.text} Lifeboat Station|${t.text}]]`},lbc:e=>{let t=Se(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}-class]]`},lbb:e=>{let t=Se(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}]]`},"#dateformat":e=>(e=e.replace(/:/,"|"),Se(e,["date","format"]).date),lc:e=>(e=e.replace(/:/,"|"),(Se(e,["text"]).text||"").toLowerCase()),uc:e=>(e=e.replace(/:/,"|"),(Se(e,["text"]).text||"").toUpperCase()),lcfirst:e=>{e=e.replace(/:/,"|");let t=Se(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},ucfirst:e=>{e=e.replace(/:/,"|");let t=Se(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:e=>{e=e.replace(/:/,"|");let t=Se(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:e=>{e=e.replace(/:/,"|");let t=Se(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbrlink:e=>{let t=Se(e,["abbr","page"]);return t.page?`[[${t.page}|${t.abbr}]]`:`[[${t.abbr}]]`},own:e=>{let t=Se(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},formatnum:e=>{e=e.replace(/:/,"|");let t=Se(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},frac:e=>{let t=Se(e,["a","b","c"]);return t.c?`${t.a} ${t.b}/${t.c}`:t.b?`${t.a}/${t.b}`:"1/"+t.b},convert:e=>{let t=Se(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?`${t.num} ${t.two} ${t.three} ${t.four}`:`${t.num} ${t.two} ${t.three}`:`${t.num} ${t.two}`},tl:e=>{let t=Se(e,["first","second"]);return t.second||t.first},won:e=>{let t=Se(e,["text"]);return t.place||t.text||ii.titlecase(t.template)},tag:e=>{let t=Se(e,["tag","open"]);const i={span:!0,div:!0,p:!0};return t.open&&"pair"!==t.open?"":i[t.tag]?t.content||"":`<${t.tag} ${t.attribs||""}>${t.content||""}`},plural:e=>{e=e.replace(/plural:/,"plural|");let t=Se(e,["num","word"]),i=Number(t.num),a=t.word;return 1!==i&&(/.y$/.test(a)?a=a.replace(/y$/,"ies"):a+="s"),i+" "+a},dec:e=>{let t=Se(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:e=>{let t=Se(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());let a=i||"";return t.p&&(a=t.p+a),t.s&&(a=t.s+a),(t.u||t.ul||t.upl)&&(a=a+" "+(t.u||t.ul||t.upl)),a},percentage:e=>{let t=Se(e,["numerator","denominator","decimals"]),i=ii.percentage(t);return null===i?"":i+"%"},"percent-done":e=>{let t=Se(e,["done","total","digits"]),i=ii.percentage({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":`${t.done} (${i}%) done`}},ri=[["🇦🇩","and","andorra"],["🇦🇪","are","united arab emirates"],["🇦🇫","afg","afghanistan"],["🇦🇬","atg","antigua and barbuda"],["🇦🇮","aia","anguilla"],["🇦🇱","alb","albania"],["🇦🇲","arm","armenia"],["🇦🇴","ago","angola"],["🇦🇶","ata","antarctica"],["🇦🇷","arg","argentina"],["🇦🇸","asm","american samoa"],["🇦🇹","aut","austria"],["🇦🇺","aus","australia"],["🇦🇼","abw","aruba"],["🇦🇽","ala","åland islands"],["🇦🇿","aze","azerbaijan"],["🇧🇦","bih","bosnia and herzegovina"],["🇧🇧","brb","barbados"],["🇧🇩","bgd","bangladesh"],["🇧🇪","bel","belgium"],["🇧🇫","bfa","burkina faso"],["🇧🇬","bgr","bulgaria"],["🇧🇬","bul","bulgaria"],["🇧🇭","bhr","bahrain"],["🇧🇮","bdi","burundi"],["🇧🇯","ben","benin"],["🇧🇱","blm","saint barthélemy"],["🇧🇲","bmu","bermuda"],["🇧🇳","brn","brunei darussalam"],["🇧🇴","bol","bolivia"],["🇧🇶","bes","bonaire, sint eustatius and saba"],["🇧🇷","bra","brazil"],["🇧🇸","bhs","bahamas"],["🇧🇹","btn","bhutan"],["🇧🇻","bvt","bouvet island"],["🇧🇼","bwa","botswana"],["🇧🇾","blr","belarus"],["🇧🇿","blz","belize"],["🇨🇦","can","canada"],["🇨🇨","cck","cocos (keeling) islands"],["🇨🇩","cod","congo"],["🇨🇫","caf","central african republic"],["🇨🇬","cog","congo"],["🇨🇭","che","switzerland"],["🇨🇮","civ","côte d'ivoire"],["🇨🇰","cok","cook islands"],["🇨🇱","chl","chile"],["🇨🇲","cmr","cameroon"],["🇨🇳","chn","china"],["🇨🇴","col","colombia"],["🇨🇷","cri","costa rica"],["🇨🇺","cub","cuba"],["🇨🇻","cpv","cape verde"],["🇨🇼","cuw","curaçao"],["🇨🇽","cxr","christmas island"],["🇨🇾","cyp","cyprus"],["🇨🇿","cze","czech republic"],["🇩🇪","deu","germany"],["🇩🇪","ger","germany"],["🇩🇯","dji","djibouti"],["🇩🇰","dnk","denmark"],["🇩🇲","dma","dominica"],["🇩🇴","dom","dominican republic"],["🇩🇿","dza","algeria"],["🇪🇨","ecu","ecuador"],["🇪🇪","est","estonia"],["🇪🇬","egy","egypt"],["🇪🇭","esh","western sahara"],["🇪🇷","eri","eritrea"],["🇪🇸","esp","spain"],["🇪🇹","eth","ethiopia"],["🇫🇮","fin","finland"],["🇫🇯","fji","fiji"],["🇫🇰","flk","falkland islands (malvinas)"],["🇫🇲","fsm","micronesia"],["🇫🇴","fro","faroe islands"],["🇫🇷","fra","france"],["🇬🇦","gab","gabon"],["🇬🇧","gbr","united kingdom"],["🇬🇩","grd","grenada"],["🇬🇫","guf","french guiana"],["🇬🇬","ggy","guernsey"],["🇬🇭","gha","ghana"],["🇬🇮","gib","gibraltar"],["🇬🇱","grl","greenland"],["🇬🇲","gmb","gambia"],["🇬🇳","gin","guinea"],["🇬🇵","glp","guadeloupe"],["🇬🇶","gnq","equatorial guinea"],["🇬🇷","grc","greece"],["🇬🇸","sgs","south georgia"],["🇬🇹","gtm","guatemala"],["🇬🇺","gum","guam"],["🇬🇼","gnb","guinea-bissau"],["🇬🇾","guy","guyana"],["🇭🇰","hkg","hong kong"],["🇭🇲","hmd","heard island and mcdonald islands"],["🇭🇳","hnd","honduras"],["🇭🇷","hrv","croatia"],["🇭🇹","hti","haiti"],["🇭🇺","hun","hungary"],["🇮🇩","idn","indonesia"],["🇮🇪","irl","ireland"],["🇮🇱","isr","israel"],["🇮🇲","imn","isle of man"],["🇮🇳","ind","india"],["🇮🇴","iot","british indian ocean territory"],["🇮🇶","irq","iraq"],["🇮🇷","irn","iran"],["🇮🇸","isl","iceland"],["🇮🇹","ita","italy"],["🇯🇪","jey","jersey"],["🇯🇲","jam","jamaica"],["🇯🇴","jor","jordan"],["🇯🇵","jpn","japan"],["🇰🇪","ken","kenya"],["🇰🇬","kgz","kyrgyzstan"],["🇰🇭","khm","cambodia"],["🇰🇮","kir","kiribati"],["🇰🇲","com","comoros"],["🇰🇳","kna","saint kitts and nevis"],["🇰🇵","prk","north korea"],["🇰🇷","kor","south korea"],["🇰🇼","kwt","kuwait"],["🇰🇾","cym","cayman islands"],["🇰🇿","kaz","kazakhstan"],["🇱🇦","lao","lao people's democratic republic"],["🇱🇧","lbn","lebanon"],["🇱🇨","lca","saint lucia"],["🇱🇮","lie","liechtenstein"],["🇱🇰","lka","sri lanka"],["🇱🇷","lbr","liberia"],["🇱🇸","lso","lesotho"],["🇱🇹","ltu","lithuania"],["🇱🇺","lux","luxembourg"],["🇱🇻","lva","latvia"],["🇱🇾","lby","libya"],["🇲🇦","mar","morocco"],["🇲🇨","mco","monaco"],["🇲🇩","mda","moldova"],["🇲🇪","mne","montenegro"],["🇲🇫","maf","saint martin (french part)"],["🇲🇬","mdg","madagascar"],["🇲🇭","mhl","marshall islands"],["🇲🇰","mkd","macedonia"],["🇲🇱","mli","mali"],["🇲🇲","mmr","myanmar"],["🇲🇳","mng","mongolia"],["🇲🇴","mac","macao"],["🇲🇵","mnp","northern mariana islands"],["🇲🇶","mtq","martinique"],["🇲🇷","mrt","mauritania"],["🇲🇸","msr","montserrat"],["🇲🇹","mlt","malta"],["🇲🇺","mus","mauritius"],["🇲🇻","mdv","maldives"],["🇲🇼","mwi","malawi"],["🇲🇽","mex","mexico"],["🇲🇾","mys","malaysia"],["🇲🇿","moz","mozambique"],["🇳🇦","nam","namibia"],["🇳🇨","ncl","new caledonia"],["🇳🇪","ner","niger"],["🇳🇫","nfk","norfolk island"],["🇳🇬","nga","nigeria"],["🇳🇮","nic","nicaragua"],["🇳🇱","nld","netherlands"],["🇳🇴","nor","norway"],["🇳🇵","npl","nepal"],["🇳🇷","nru","nauru"],["🇳🇺","niu","niue"],["🇳🇿","nzl","new zealand"],["🇴🇲","omn","oman"],["🇵🇦","pan","panama"],["🇵🇪","per","peru"],["🇵🇫","pyf","french polynesia"],["🇵🇬","png","papua new guinea"],["🇵🇭","phl","philippines"],["🇵🇰","pak","pakistan"],["🇵🇱","pol","poland"],["🇵🇲","spm","saint pierre and miquelon"],["🇵🇳","pcn","pitcairn"],["🇵🇷","pri","puerto rico"],["🇵🇸","pse","palestinian territory"],["🇵🇹","prt","portugal"],["🇵🇼","plw","palau"],["🇵🇾","pry","paraguay"],["🇶🇦","qat","qatar"],["🇷🇪","reu","réunion"],["🇷🇴","rou","romania"],["🇷🇸","srb","serbia"],["🇷🇺","rus","russia"],["🇷🇼","rwa","rwanda"],["🇸🇦","sau","saudi arabia"],["🇸🇧","slb","solomon islands"],["🇸🇨","syc","seychelles"],["🇸🇩","sdn","sudan"],["🇸🇪","swe","sweden"],["🇸🇬","sgp","singapore"],["🇸🇭","shn","saint helena, ascension and tristan da cunha"],["🇸🇮","svn","slovenia"],["🇸🇯","sjm","svalbard and jan mayen"],["🇸🇰","svk","slovakia"],["🇸🇱","sle","sierra leone"],["🇸🇲","smr","san marino"],["🇸🇳","sen","senegal"],["🇸🇴","som","somalia"],["🇸🇷","sur","suriname"],["🇸🇸","ssd","south sudan"],["🇸🇹","stp","sao tome and principe"],["🇸🇻","slv","el salvador"],["🇸🇽","sxm","sint maarten (dutch part)"],["🇸🇾","syr","syrian arab republic"],["🇸🇿","swz","swaziland"],["🇹🇨","tca","turks and caicos islands"],["🇹🇩","tcd","chad"],["🇹🇫","atf","french southern territories"],["🇹🇬","tgo","togo"],["🇹🇭","tha","thailand"],["🇹🇯","tjk","tajikistan"],["🇹🇰","tkl","tokelau"],["🇹🇱","tls","timor-leste"],["🇹🇲","tkm","turkmenistan"],["🇹🇳","tun","tunisia"],["🇹🇴","ton","tonga"],["🇹🇷","tur","turkey"],["🇹🇹","tto","trinidad and tobago"],["🇹🇻","tuv","tuvalu"],["🇹🇼","twn","taiwan"],["🇹🇿","tza","tanzania"],["🇺🇦","ukr","ukraine"],["🇺🇬","uga","uganda"],["🇺🇲","umi","united states minor outlying islands"],["🇺🇸","us","united states"],["🇺🇸","usa","united states"],["🇺🇾","ury","uruguay"],["🇺🇿","uzb","uzbekistan"],["🇻🇦","vat","vatican city"],["🇻🇨","vct","saint vincent and the grenadines"],["🇻🇪","ven","venezuela"],["🇻🇬","vgb","virgin islands, british"],["🇻🇮","vir","virgin islands, u.s."],["🇻🇳","vnm","viet nam"],["🇻🇺","vut","vanuatu"],["🇼🇫","wlf","wallis and futuna"],["🇼🇸","wsm","samoa"],["🇾🇪","yem","yemen"],["🇾🇹","myt","mayotte"],["🇿🇦","zaf","south africa"],["🇿🇲","zmb","zambia"],["🇿🇼 ","zwe","zimbabwe"],["🇺🇳","un","united nations"],["🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿","eng","england"],["🏴󠁧󠁢󠁳󠁣󠁴󠁿","sct","scotland"],["🏴󠁧󠁢󠁷󠁬󠁳󠁿","wal","wales"],["🇪🇺","eu","european union"]];let ni={flag:e=>{let t=Se(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();let a=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${a[0]||""} [[${a[2]}|${i}]]`},flagcountry:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} [[${i[2]}]]`},flagcu:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} ${i[2]}`},flagicon:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`[[${i[2]}|${i[0]}]]`:""},flagdeco:e=>{let t=Se(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(ri.find(e=>t.flag===e[1]||t.flag===e[2])||[])[0]||""},fb:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${i[2]} national football team|${i[2]}]]`:""},fbicon:e=>{let t=Se(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?` [[${i[2]} national football team|${i[0]}]]`:""},flagathlete:e=>{let t=Se(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${t.name||""}]] (${i[1].toUpperCase()})`:`[[${t.name||""}]]`}};ri.forEach(e=>{ni[e[1]]=()=>e[0]});var oi=ni;const si=ii.titlecase;let li={};["rh","rh2","yes","no","maybe","eliminated","lost","safe","active","site active","coming soon","good","won","nom","sho","longlisted","tba","success","operational","failure","partial","regional","maybecheck","partial success","partial failure","okay","yes-no","some","nonpartisan","pending","unofficial","unofficial2","usually","rarely","sometimes","any","varies","black","non-album single","unreleased","unknown","perhaps","depends","included","dropped","terminated","beta","table-experimental","free","proprietary","nonfree","needs","nightly","release-candidate","planned","scheduled","incorrect","no result","cmain","calso starring","crecurring","cguest","not yet","optional"].forEach(e=>{li[e]=e=>{let t=Se(e,["text"]);return t.text||si(t.template)}});[["active fire","Active"],["site active","Active"],["site inactive","Inactive"],["yes2",""],["no2",""],["ya","✅"],["na","❌"],["nom","Nominated"],["sho","Shortlisted"],["tba","TBA"],["maybecheck","✔️"],["okay","Neutral"],["n/a","N/A"],["sdash","—"],["dunno","?"],["draw",""],["cnone",""],["nocontest",""]].forEach(e=>{li[e[0]]=t=>Se(t,["text"]).text||e[1]});var ci=li,ui=Object.assign({},{"·":"·",dot:"·",middot:"·","•":" • ",",":",","1/2":"1⁄2","1/3":"1⁄3","2/3":"2⁄3","1/4":"1⁄4","3/4":"3⁄4","–":"–",ndash:"–","en dash":"–","spaced ndash":" – ","—":"—",mdash:"—","em dash":"—","number sign":"#",ibeam:"I","&":"&",";":";",ampersand:"&",snds:" – ",snd:" – ","^":" ","!":"|","\\":" /","`":"`","=":"=",bracket:"[","[":"[","*":"*",asterisk:"*","long dash":"———",clear:"\n\n","h.":"ḥ"},ti,ai,oi,ci);let pi={};["goodreads author","twitter","facebook","instagram","tumblr","pinterest","espn nfl","espn nhl","espn fc","hockeydb","fifa player","worldcat","worldcat id","nfl player","ted speaker","playmate"].forEach(e=>{pi[e]=["id","name"]});var mi=pi;let di={};["imdb title","imdb name","imdb episode","imdb event","afi film","allmovie title","allgame","tcmdb title","discogs artist","discogs label","discogs release","discogs master","librivox author","musicbrainz artist","musicbrainz label","musicbrainz recording","musicbrainz release","musicbrainz work","youtube","goodreads book","dmoz"].forEach(e=>{di[e]=["id","title","description","section"]});var hi=di,gi={ipa:(e,t)=>{let i=Se(e,["transcription","lang","audio"]);return i.lang=ii.getLang(i.template),i.template="ipa",t.push(i),""},ipac:(e,t)=>{let i=Se(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=ii.getLang(i.template),i.template="ipac",t.push(i),""},quote:(e,t)=>{let i=Se(e,["text","author"]);if(t.push(i),i.text){let e=`"${i.text}"`;return i.author&&(e+="\n\n",e+=" - "+i.author),e+"\n"}return""},"cite gnis":(e,t)=>{let i=Se(e,["id","name","type"]);return i.type="gnis",i.template="citation",t.push(i),""},"spoken wikipedia":(e,t)=>{let i=Se(e,["file","date"]);return i.template="audio",t.push(i),""},yel:(e,t)=>{let i=Se(e,["min"]);return t.push(i),i.min?`yellow: ${i.min||""}'`:""},subon:(e,t)=>{let i=Se(e,["min"]);return t.push(i),i.min?`sub on: ${i.min||""}'`:""},suboff:(e,t)=>{let i=Se(e,["min"]);return t.push(i),i.min?`sub off: ${i.min||""}'`:""},sfn:(e,t,i,a)=>{let r=Se(e,["author","year","location"]);return a&&(r.name=r.template,r.teplate=a),t.push(r),""},redirect:(e,t)=>{let i=Se(e,["redirect"]),a=i.list||[],r=[];for(let e=0;e{let i=Se(e),a={};Object.keys(ii.sisterProjects).forEach(e=>{!0===i.hasOwnProperty(e)&&(a[ii.sisterProjects[e]]=i[e])});let r={template:"sister project links",links:a};return t.push(r),""},"subject bar":(e,t)=>{let i=Se(e);Object.keys(i).forEach(e=>{ii.sisterProjects.hasOwnProperty(e)&&(i[ii.sisterProjects[e]]=i[e],delete i[e])});let a={template:"subject bar",links:i};return t.push(a),""},gallery:(e,t)=>{let i=Se(e),a=(i.list||[]).filter(e=>/^ *File ?:/.test(e));return a=a.map(e=>new z({file:e}).json()),i={template:"gallery",images:a},t.push(i),""},sky:(e,t)=>{let i=Se(e,["asc_hours","asc_minutes","asc_seconds","dec_sign","dec_degrees","dec_minutes","dec_seconds","distance"]),a={template:"sky",ascension:{hours:i.asc_hours,minutes:i.asc_minutes,seconds:i.asc_seconds},declination:{sign:i.dec_sign,degrees:i.dec_degrees,minutes:i.dec_minutes,seconds:i.dec_seconds},distance:i.distance};return t.push(a),""},"medical cases chart":(e,t)=>{let i=["date","deathsExpr","recoveriesExpr","casesExpr","4thExpr","5thExpr","col1","col1Change","col2","col2Change"],a=Se(e);a.data=a.data||"";let r=a.data.split("\n").map(e=>{let t=e.split(";"),a={options:new Map},r=0;for(let e=0;e{let i=Se(e);i.x&&(i.x=i.x.split(",").map(e=>e.trim())),i.y&&(i.y=i.y.split(",").map(e=>e.trim()));let a=1;for(;i["y"+a];)i["y"+a]=i["y"+a].split(",").map(e=>e.trim()),a+=1;return t.push(i),""},"historical populations":(e,t)=>{let i=Se(e);i.list=i.list||[];let a=[];for(let e=0;e{const i=/^jan /i,a=/^year /i;let r=Se(e);const n=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];let o={},s=Object.keys(r).filter(e=>i.test(e));s=s.map(e=>e.replace(i,"")),s.forEach(e=>{o[e]=[],n.forEach(t=>{let i=`${t} ${e}`;if(r.hasOwnProperty(i)){let t=ii.toNumber(r[i]);delete r[i],o[e].push(t)}})}),r.byMonth=o;let l={};return Object.keys(r).forEach(e=>{if(a.test(e)){let t=e.replace(a,"");l[t]=r[e],delete r[e]}}),r.byYear=l,t.push(r),""},"weather box/concise c":(e,t)=>{let i=Se(e);return i.list=i.list.map(e=>ii.toNumber(e)),i.byMonth={"high c":i.list.slice(0,12),"low c":i.list.slice(12,24),"rain mm":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"weather box/concise f":(e,t)=>{let i=Se(e);return i.list=i.list.map(e=>ii.toNumber(e)),i.byMonth={"high f":i.list.slice(0,12),"low f":i.list.slice(12,24),"rain inch":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"climate chart":(e,t)=>{let i=Se(e).list||[],a=i[0],r=i[38];i=i.slice(1),i=i.map(e=>(e&&"−"===e[0]&&(e=e.replace(/−/,"-")),e));let n=[];for(let e=0;e<36;e+=3)n.push({low:ii.toNumber(i[e]),high:ii.toNumber(i[e+1]),precip:ii.toNumber(i[e+2])});let o={template:"climate chart",data:{title:a,source:r,months:n}};return t.push(o),""}};let fi={"find a grave":["id","name","work","last","first","date","accessdate"],congbio:["id","name","date"],"hollywood walk of fame":["name"],"wide image":["file","width","caption"],audio:["file","text","type"],rp:["page"],"short description":["description"],"coord missing":["region"],unreferenced:["date"],uss:["ship","id"],"taxon info":["taxon","item"],"portuguese name":["first","second","suffix"],geo:["lat","lon","zoom"]};fi=Object.assign(fi,mi,hi,gi);var ki=fi;var bi={math:(e,t)=>{let i=Se(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},isbn:(e,t)=>{let i=Se(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},"based on":(e,t)=>{let i=Se(e,["title","author"]);return t.push(i),`${i.title} by ${i.author||""}`},"bbl to t":(e,t)=>{let i=Se(e,["barrels"]);return t.push(i),"0"===i.barrels?i.barrels+" barrel":i.barrels+" barrels"},mpc:(e,t)=>{let i=Se(e,["number","text"]);return t.push(i),`[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${i.text||i.number}]`},pengoal:(e,t)=>(t.push({template:"pengoal"}),"✅"),penmiss:(e,t)=>(t.push({template:"penmiss"}),"❌"),"ordered list":(e,t)=>{let i=Se(e);return t.push(i),i.list=i.list||[],i.list.map((e,t)=>`${t+1}. ${e}`).join("\n\n")},"title year":(e,t,i,a,r)=>{let n=Se(e,["match","nomatch","page"]),o=n.page||r.title();if(o){let e=o.match(/\b[0-9]{4}\b/);if(e)return e[0]}return n.nomatch||""},"title century":(e,t,i,a,r)=>{let n=Se(e,["match","nomatch","page"]),o=n.page||r.title();if(o){let e=o.match(/\b([0-9]+)(st|nd|rd|th)\b/);if(e)return e[1]||""}return n.nomatch||""},"title decade":(e,t,i,a,r)=>{let n=Se(e,["match","nomatch","page"]),o=n.page||r.title();if(o){let e=o.match(/\b([0-9]+)s\b/);if(e)return e[1]||""}return n.nomatch||""},nihongo:(e,t)=>{let i=Se(e,["english","kanji","romaji","extra"]);t.push(i);let a=i.english||i.romaji||"";return i.kanji&&(a+=` (${i.kanji})`),a},marriage:(e,t)=>{let i=Se(e,["spouse","from","to","end"]);t.push(i);let a=i.spouse||"";return i.from&&(i.to?a+=` (m. ${i.from}-${i.to})`:a+=` (m. ${i.from})`),a},"sent off":(e,t)=>{let i=Se(e,["cards"]),a={template:"sent off",cards:i.cards,minutes:i.list||[]};return t.push(a),"sent off: "+a.minutes.map(e=>e+"'").join(", ")},transl:(e,t)=>{let i=Se(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""},"collapsible list":(e,t)=>{let i=Se(e);t.push(i);let a="";if(i.title&&(a+=`'''${i.title}'''\n\n`),!i.list){i.list=[];for(let e=1;e<10;e+=1)i[e]&&(i.list.push(i[e]),delete i[e])}return i.list=i.list.filter(e=>e),a+=i.list.join("\n\n"),a},"columns-list":(e,t)=>{let i=((Se(e).list||[])[0]||"").split(/\n/).filter(e=>e);return i=i.map(e=>e.replace(/\*/,"")),t.push({template:"columns-list",list:i}),i=i.map(e=>"• "+e),i.join("\n\n")},height:(e,t)=>{let i=Se(e);t.push(i);let a=[];return["m","cm","ft","in"].forEach(e=>{!0===i.hasOwnProperty(e)&&a.push(i[e]+e)}),a.join(" ")},sic:(e,t)=>{let i=Se(e,["one","two","three"]),a=(i.one||"")+(i.two||"");return"?"===i.one&&(a=(i.two||"")+(i.three||"")),t.push({template:"sic",word:a}),"y"===i.nolink?a:a+" [sic]"},inrconvert:(e,t)=>{let i=Se(e,["rupee_value","currency_formatting"]);t.push(i);const a={k:1e3,m:1e6,b:1e9,t:1e12,l:1e5,c:1e7,lc:1e12};if(i.currency_formatting){let e=a[i.currency_formatting]||1;i.rupee_value=i.rupee_value*e}return"inr "+(i.rupee_value||"")},frac:(e,t)=>{let i=Se(e,["a","b","c"]),a={template:"sfrac"};return i.c?(a.integer=i.a,a.numerator=i.b,a.denominator=i.c):i.b?(a.numerator=i.a,a.denominator=i.b):(a.numerator=1,a.denominator=i.a),t.push(a),a.integer?`${a.integer} ${a.numerator}⁄${a.denominator}`:`${a.numerator}⁄${a.denominator}`},"winning percentage":(e,t)=>{let i=Se(e,["wins","losses","ties"]);t.push(i);let a=Number(i.wins),r=Number(i.losses),n=Number(i.ties)||0,o=a+r+n;"y"===i.ignore_ties&&(n=0),n&&(a+=n/2);let s=ii.percentage({numerator:a,denominator:o,decimals:1});return null===s?"":"."+10*s},winlosspct:(e,t)=>{let i=Se(e,["wins","losses"]);t.push(i);let a=Number(i.wins),r=Number(i.losses),n=ii.percentage({numerator:a,denominator:a+r,decimals:1});return null===n?"":(n="."+10*n,`${a||0} || ${r||0} || ${n||"-"}`)},"video game release":(e,t)=>{let i=["region","date","region2","date2","region3","date3","region4","date4"],a=Se(e,i),r={template:"video game release",releases:[]};for(let e=0;e`${e.region}: ${e.date||""}`).join("\n\n")+"\n"}};const wi={"£":"GB£","¥":"¥","৳":"৳","₩":"₩","€":"€","₱":"₱","₹":"₹","₽":"₽","cn¥":"CN¥","gb£":"GB£","india rs":"₹","indian rupee symbol":"₹","indian rupee":"₹","indian rupees":"₹","philippine peso":"₱","russian ruble":"₽","SK won":"₩","turkish lira":"TRY",a$:"A$",au$:"A$",aud:"A$",bdt:"BDT",brl:"BRL",ca$:"CA$",cad:"CA$",chf:"CHF",cny:"CN¥",czk:"czk",dkk:"dkk",dkk2:"dkk",euro:"€",gbp:"GB£",hk$:"HK$",hkd:"HK$",ils:"ILS",inr:"₹",jpy:"¥",myr:"MYR",nis:"ILS",nok:"NOK",nok2:"NOK",nz$:"NZ$",nzd:"NZ$",peso:"peso",pkr:"₨",r$:"BRL",rmb:"CN¥",rub:"₽",ruble:"₽",rupee:"₹",s$:"sgd",sek:"SEK",sek2:"SEK",sfr:"CHF",sgd:"sgd",shekel:"ILS",sheqel:"ILS",ttd:"TTD",us$:"US$",usd:"US$",yen:"¥",zar:"R"},yi=(e,t)=>{let i=Se(e,["amount","code"]);t.push(i);let a=i.template||"";"currency"===a?(a=i.code,a||(i.code=a="usd")):""!==a&&"monnaie"!==a&&"unité"!==a&&"nombre"!==a&&"nb"!==a||(a=i.code),a=(a||"").toLowerCase(),"us"===a?i.code=a="usd":"uk"===a&&(i.code=a="gbp");let r=`${wi[a]||""}${i.amount||""}`;return i.code&&!wi[i.code.toLowerCase()]&&(r+=" "+i.code),r};let $i={currency:yi};Object.keys(wi).forEach(e=>{$i[e]=yi});var xi=$i;const vi=864e5,ji=function(e){return new Date(`${e.year}-${e.month||0}-${e.date||1}`).getTime()};var _i={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],timeSince:function(e){let t=new Date(e);if(isNaN(t.getTime()))return"";let i=(new Date).getTime()-t.getTime(),a="ago";i<0&&(a="from now",i=Math.abs(i));let r=i/1e3/60/60/24;return r<365?parseInt(r,10)+" days "+a:parseInt(r/365,10)+" years "+a},delta:function(e,t){e=ji(e);let i=(t=ji(t))-e,a={},r=Math.floor(i/31536e6,10);r>0&&(a.years=r,i-=31536e6*a.years);let n=Math.floor(i/2592e6,10);n>0&&(a.months=n,i-=2592e6*a.months);let o=Math.floor(i/vi,10);return o>0&&(a.days=o),a},toOrdinal:function(e){let t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"}};const zi=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],Ei=zi.reduce((e,t,i)=>(0===i||(e[t.toLowerCase()]=i),e),{}),Oi=function(e){return e<10?"0"+e:String(e)};var Ci=function(e){let t=String(e.year||"");if(void 0!==e.month&&!0===zi.hasOwnProperty(e.month))if(void 0===e.date)t=`${zi[e.month]} ${e.year}`;else{if(t=`${zi[e.month]} ${e.date}, ${e.year}`,void 0!==e.hour&&void 0!==e.minute){let i=`${Oi(e.hour)}:${Oi(e.minute)}`;void 0!==e.second&&(i=i+":"+Oi(e.second)),t=i+", "+t}e.tz&&(t+=` (${e.tz})`)}return t},Si=function(e){let t={},i=["year","month","date","hour","minute","second"];for(let a=0;a{let i=Se(e,["year","month","date","hour","minute","second","timezone"]),a=Si([i.year,i.month,i.date||i.day]);return i.text=Ci(a),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=` (${i.timezone})`),i.hour&&i.minute&&(i.second?i.text=`${i.hour}:${i.minute}:${i.second}, `+i.text:i.text=`${i.hour}:${i.minute}, `+i.text),i.text&&t.push(qi(i)),i.text},natural_date:(e,t)=>{let i=Se(e,["text"]).text||"",a={};if(/^[0-9]{4}$/.test(i))a.year=parseInt(i,10);else{let e=i.replace(/[a-z]+\/[a-z]+/i,"");e=e.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");let t=new Date(e);!1===isNaN(t.getTime())&&(a.year=t.getFullYear(),a.month=t.getMonth()+1,a.date=t.getDate())}return t.push(qi(a)),i.trim()},one_year:(e,t)=>{let i=Se(e,["year"]),a=Number(i.year);return t.push(qi({year:a})),String(a)},two_dates:(e,t)=>{let i=Se(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){let e=Si([i.birth_year,i.birth_month,i.birth_date]);return t.push(qi(e)),Ci(e)}let a=Si([i.death_year,i.death_month,i.death_date]);return t.push(qi(a)),Ci(a)},age:e=>{let t=Li(e);return Ni(t.from,t.to).years||0},"diff-y":e=>{let t=Li(e),i=Ni(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":e=>{let t=Li(e),i=Ni(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),a.join(", ")},"diff-ymd":e=>{let t=Li(e),i=Ni(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-yd":e=>{let t=Li(e),i=Ni(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-d":e=>{let t=Li(e),i=Ni(t.from,t.to),a=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")}};const Pi=["January","February","March","April","May","June","July","August","September","October","November","December"];var Ti={currentday:()=>{let e=new Date;return String(e.getDate())},currentdayname:()=>{let e=new Date;return _i.days[e.getDay()]},currentmonth:()=>{let e=new Date;return Pi[e.getMonth()]},currentyear:()=>{let e=new Date;return String(e.getFullYear())},monthyear:()=>{let e=new Date;return Pi[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":()=>{let e=new Date;return e.setMonth(e.getMonth()-1),Pi[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":()=>{let e=new Date;return e.setMonth(e.getMonth()+1),Pi[e.getMonth()]+" "+e.getFullYear()},"time ago":e=>{let t=Se(e,["date","fmt"]).date;return _i.timeSince(t)},"birth date and age":(e,t)=>{let i=Se(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?Ai.natural_date(e,t):(t.push(i),i=Si([i.year,i.month,i.day]),Ci(i))},"birth year and age":(e,t)=>{let i=Se(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return Ai.natural_date(e,t);t.push(i);let a=(new Date).getFullYear()-parseInt(i.birth_year,10);i=Si([i.birth_year,i.birth_month]);let r=Ci(i);return a&&(r+=` (age ${a})`),r},"death year and age":(e,t)=>{let i=Se(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?Ai.natural_date(e,t):(t.push(i),i=Si([i.death_year,i.death_month]),Ci(i))},"birth date and age2":(e,t)=>{let i=Se(e,["at_year","at_month","at_day","birth_year","birth_month","birth_day"]);return t.push(i),i=Si([i.birth_year,i.birth_month,i.birth_day]),Ci(i)},"birth based on age as of date":(e,t)=>{let i=Se(e,["age","year","month","day"]);t.push(i);let a=parseInt(i.age,10),r=parseInt(i.year,10)-a;return r&&a?`${r} (age ${i.age})`:`(age ${i.age})`},"death date and given age":(e,t)=>{let i=Se(e,["year","month","day","age"]);t.push(i),i=Si([i.year,i.month,i.day]);let a=Ci(i);return i.age&&(a+=` (age ${i.age})`),a},dts:e=>{e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");let t=Se(e,["year","month","date","bc"]);return t.date&&t.month&&t.year?!0===/[a-z]/.test(t.month)?[t.month,t.date,t.year].join(" "):[t.year,t.month,t.date].join("-"):t.month&&t.year?[t.year,t.month].join("-"):t.year?(t.year<0&&(t.year=Math.abs(t.year)+" BC"),t.year):""},time:()=>{let e=new Date,t=Si([e.getFullYear(),e.getMonth(),e.getDate()]);return Ci(t)},millennium:e=>{let t=Se(e,["year"]),i=Number(t.year);return i=parseInt(i/1e3,10)+1,t.abbr&&"y"===t.abbr?i<0?_i.toOrdinal(Math.abs(i))+" BC":""+_i.toOrdinal(i):_i.toOrdinal(i)+" millennium"},start:Ai.date,"start-date":Ai.natural_date,birthdeathage:Ai.two_dates,age:Ai.age,"age nts":Ai.age,"age in years":Ai["diff-y"],"age in years and months":Ai["diff-ym"],"age in years, months and days":Ai["diff-ymd"],"age in years and days":Ai["diff-yd"],"age in days":Ai["diff-d"]};function Di(e){let t=e.pop(),i=Number(e[0]||0),a=Number(e[1]||0),r=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;let n=1;return/[SW]/i.test(t)&&(n=-1),n*(i+a/60+r/3600)}const Ii=function(e){if("number"!=typeof e)return e;let t=1e5;return Math.round(e*t)/t},Ri={s:!0,w:!0};var Mi=function(e){let t=Se(e);t=function(e){return e.list=e.list||[],e.list=e.list.map(t=>{let i=Number(t);if(!isNaN(i))return i;let a=t.split(/:/);return a.length>1?(e.props=e.props||{},e.props[a[0]]=a.slice(1).join(":"),null):t}),e.list=e.list.filter(e=>null!==e),e}(t);let i=function(e){const t=e.map(e=>typeof e).join("|");return 2===e.length&&"number|number"===t?{lat:e[0],lon:e[1]}:4===e.length&&"number|string|number|string"===t?(Ri[e[1].toLowerCase()]&&(e[0]*=-1),"w"===e[3].toLowerCase()&&(e[2]*=-1),{lat:e[0],lon:e[2]}):6===e.length?{lat:Di(e.slice(0,3)),lon:Di(e.slice(3))}:8===e.length?{lat:Di(e.slice(0,4)),lon:Di(e.slice(4))}:{}}(t.list);return t.lat=Ii(i.lat),t.lon=Ii(i.lon),t.template="coord",delete t.list,t};var Ui={coord:(e,t)=>{let i=Mi(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":`${i.lat||""}°N, ${i.lon||""}°W`}};const Bi=function(e,t,i,a){let r=Se(e);return a&&(r.name=r.template,r.template=a),t.push(r),""};var Fi={persondata:Bi,taxobox:Bi,citation:Bi,portal:Bi,reflist:Bi,"cite book":Bi,"cite journal":Bi,"cite web":Bi,"commons cat":Bi,"election box candidate":Bi,"election box begin":Bi,main:Bi};const Ki={adx:"adx",aim:"aim",amex:"amex",asx:"asx",athex:"athex",b3:"b3","B3 (stock exchange)":"B3 (stock exchange)",barbadosse:"barbadosse",bbv:"bbv",bcba:"bcba",bcs:"bcs",bhse:"bhse",bist:"bist",bit:"bit","bm&f bovespa":"b3","bm&f":"b3",bmad:"bmad",bmv:"bmv","bombay stock exchange":"bombay stock exchange","botswana stock exchange":"botswana stock exchange",bpse:"bpse",bse:"bse",bsx:"bsx",bvb:"bvb",bvc:"bvc",bvl:"bvl",bvpasa:"bvpasa",bwse:"bwse","canadian securities exchange":"canadian securities exchange",cse:"cse",darse:"darse",dfm:"dfm",dse:"dse",euronext:"euronext",euronextparis:"euronextparis",fse:"fse",fwb:"fwb",gse:"gse",gtsm:"gtsm",idx:"idx",ise:"ise",iseq:"iseq",isin:"isin",jasdaq:"jasdaq",jse:"jse",kase:"kase",kn:"kn",krx:"krx",lse:"lse",luxse:"luxse","malta stock exchange":"malta stock exchange",mai:"mai",mcx:"mcx",mutf:"mutf",myx:"myx",nag:"nag","nasdaq dubai":"nasdaq dubai",nasdaq:"nasdaq",neeq:"neeq",nepse:"nepse",nex:"nex",nse:"nse",newconnect:"newconnect","nyse arca":"nyse arca",nyse:"nyse",nzx:"nzx","omx baltic":"omx baltic",omx:"omx",ose:"ose","otc expert":"otc expert","otc grey":"otc grey","otc pink":"otc pink",otcqb:"otcqb",otcqx:"otcqx","pfts ukraine stock exchange":"pfts ukraine stock exchange","philippine stock exchange":"philippine stock exchange",prse:"prse",psx:"psx",karse:"karse",qe:"qe","saudi stock exchange":"saudi stock exchange",sehk:"sehk","Stock Exchange of Thailand":"Stock Exchange of Thailand",set:"set",sgx:"sgx",sse:"sse",swx:"swx",szse:"szse",tase:"tase","tsx-v":"tsx-v",tsx:"tsx",tsxv:"tsxv",ttse:"ttse",twse:"twse",tyo:"tyo",wbag:"wbag",wse:"wse","zagreb stock exchange":"zagreb stock exchange","zimbabwe stock exchange":"zimbabwe stock exchange",zse:"zse"},Wi=(e,t)=>{let i=Se(e,["ticketnumber","code"]);t.push(i);let a=i.template||"";""===a&&(a=i.code),a=(a||"").toLowerCase();let r=Ki[a]||"";return i.ticketnumber&&(r=`${r}: ${i.ticketnumber}`),i.code&&!Ki[i.code.toLowerCase()]&&(r+=" "+i.code),r},Yi={};Object.keys(Ki).forEach(e=>{Yi[e]=Wi});var Zi=Yi;const Hi=function(e){return 1===(e=String(e)).length&&(e="0"+e),e},Gi=function(e,t,i){e[`rd${t}-team${Hi(i)}`]&&(i=Hi(i));let a=e[`rd${t}-score${i}`],r=Number(a);return!1===isNaN(r)&&(a=r),{team:e[`rd${t}-team${i}`],score:a,seed:e[`rd${t}-seed${i}`]}};var Vi=function(e){let t=[],i=Se(e);for(let e=1;e<7;e+=1){let a=[];for(let t=1;t<16;t+=2){let r=`rd${e}-team`;if(!i[r+t]&&!i[r+Hi(t)])break;{let r=Gi(i,e,t),n=Gi(i,e,t+1);a.push([r,n])}}a.length>0&&t.push(a)}return{template:"playoffbracket",rounds:t}};var Ji={"4teambracket":function(e,t){let i=Vi(e);return t.push(i),""},player:(e,t)=>{let i=Se(e,["number","country","name","dl"]);t.push(i);let a=`[[${i.name}]]`;if(i.country){let e=(i.country||"").toLowerCase(),t=ri.find(t=>e===t[1]||e===t[2])||[];t&&t[0]&&(a=t[0]+" "+a)}return i.number&&(a=i.number+" "+a),a},goal:(e,t)=>{let i={template:"goal",data:[]},a=Se(e).list||[];for(let e=0;e{let t=e.note;return t&&(t=` (${t})`),e.min+"'"+t}).join(", "),r},"sports table":(e,t)=>{let i=Se(e),a={};Object.keys(i).filter(e=>/^team[0-9]/.test(e)).map(e=>i[e].toLowerCase()).forEach(e=>{a[e]={name:i["name_"+e],win:Number(i["win_"+e])||0,loss:Number(i["loss_"+e])||0,tie:Number(i["tie_"+e])||0,otloss:Number(i["otloss_"+e])||0,goals_for:Number(i["gf_"+e])||0,goals_against:Number(i["ga_"+e])||0}});let r={date:i.update,header:i.table_header,teams:a};t.push(r)}},Xi=Object.assign({},{mlbplayer:{props:["number","name","il"],out:"name"},syntaxhighlight:{props:[],out:"code"},samp:{props:["1"],out:"1"},sub:{props:["text"],out:"text"},sup:{props:["text"],out:"text"},chem2:{props:["equation"],out:"equation"},ill:{props:["text","lan1","text1","lan2","text2"],out:"text"},abbr:{props:["abbr","meaning","ipa"],out:"abbr"}},bi,xi,Ti,Ui,Fi,Zi,Vi,Ji,Vi,Ji);let Qi=Object.assign({},ui,ki,Xi);Object.keys(Qt).forEach(e=>{Qi[e]=Qi[Qt[e]]});var ea=Qi;const{isArray:ta,isObject:ia}=n,aa=["0","1","2","3","4","5","6","7","8","9"];var ra=function(e,t,i){let a=e.name;if(!0===Ft.hasOwnProperty(a))return"";if(!0===Gt(a)){let i=Se(e.body,[],"raw");return t.push(Vt(i)),""}if(!0===/^cite [a-z]/.test(a)){let i=Se(e.body);return i.type=i.template,i.template="citation",t.push(i),""}if(!0===ea.hasOwnProperty(a)){if("number"==typeof ea[a]){return Se(e.body,aa)[String(ea[a])]||""}if("string"==typeof ea[a])return ea[a];if(!0===ta(ea[a])){let i=Se(e.body,ea[a]);return t.push(i),""}if(!0===ia(ea[a])){let i=Se(e.body,ea[a].props);return t.push(i),i[ea[a].out]}if("function"==typeof ea[a])return ea[a](e.body,t,Se,null,i)}let r=Se(e.body);return t&&Object.keys(r).length>0&&t.push(r),""};var na=function(e,t){let i=Object.keys(e.data).reduce((t,i)=>(e.data[i]&&(t[i]=e.data[i].json()),t),{});return!0===t.encode&&(i=H(i)),i};const{isArray:oa}=n,sa=(e="")=>(e=(e=e.toLowerCase()).replace(/[-_]/g," ")).trim(),la=function(e){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data})},ca={type:function(){return this._type},links:function(e){let t=[];if(Object.keys(this.data).forEach(e=>{this.data[e].links().forEach(e=>t.push(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},image:function(){let e=this.data.image||this.data.image2||this.data.logo;if(!e)return null;let t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new z(t)},get:function(e){let t=Object.keys(this.data);if("string"==typeof e){let i=sa(e);for(let e=0;e{for(let i=0;i(this.data[t]&&(e[t]=this.data[t].text()),e),{})}};Object.keys(ca).forEach(e=>{la.prototype[e]=ca[e]}),la.prototype.data=la.prototype.keyValue,la.prototype.template=la.prototype.type,la.prototype.images=la.prototype.image;var ua=la;const pa={text:function(){return""},json:function(){return this.data}},ma=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})};Object.keys(pa).forEach(e=>{ma.prototype[e]=pa[e]});var da=ma;const ha=new RegExp("^(cite |citation)","i"),ga={citation:!0,refn:!0,harvnb:!0,source:!0};var fa=function(e,t){let i={infoboxes:[],templates:[],references:[]};return e.forEach(e=>{let a=e.template||e.type||e.name;if(!0!==ga[a]&&!0!==ha.test(a))return"infobox"===e.template&&"yes"!==e.subbox?(e.domain=t,e.data=e.data||{},void i.infoboxes.push(new ua(e))):void i.templates.push(new da(e));i.references.push(new Le(e))}),i};var ka=function(e,t){let{list:i,wiki:a}=function(e,t){let i=[],a=Bt(e);const r=function(a,n){a.parent=n,a.children&&a.children.length>0&&a.children.forEach(e=>r(e,a)),a.wiki=ra(a,i,t);const o=function(e,t,i){e.parent&&(e.parent.body=e.parent.body.replace(t,i),o(e.parent,t,i))};o(a,a.body,a.wiki),e=e.replace(a.body,a.wiki)};return a.forEach(e=>r(e,null)),a.forEach(t=>{e=e.replace(t.body,t.wiki)}),{list:i,wiki:e}}(e._wiki,t),r=t?t._domain:null,{infoboxes:n,references:o,templates:s}=fa(i,r);e._infoboxes=e._infoboxes||[],e._references=e._references||[],e._templates=e._templates||[],e._infoboxes=e._infoboxes.concat(n),e._references=e._references.concat(o),e._templates=e._templates.concat(s),e._wiki=a};const ba=be;var wa=function(e,t,i){e.text=e.text.replace(/]*?)>([\s\S]+?)<\/gallery>/g,(a,r,n)=>{let o=n.split(/\n/g);return o=o.filter(e=>e&&""!==e.trim()),o=o.map(e=>{let i=e.split(/\|/),a={file:i[0].trim(),lang:t.lang(),domain:t.domain()},r=new z(a).json(),n=i.slice(1).join("|");return""!==n&&(r.caption=ba(n)),r}),o.length>0&&e.templates.push({template:"gallery",images:o,pos:i.title}),""})};var ya=function(e){e.text=e.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,t=>{let i={_wiki:t,_templates:[]};ka(i);let a=i._templates.map(e=>e.json()),r=a.find(e=>"election box"===e.template)||{},n=a.filter(e=>"election box candidate"===e.template),o=a.find(e=>"election box gain"===e.template||"election box hold"===e.template)||{};return(n.length>0||o)&&e.templates.push({template:"election box",title:r.title,candidates:n,summary:o.data}),""})};const $a={coach:["team","year","g","w","l","w-l%","finish","pg","pw","pl","pw-l%"],player:["year","team","gp","gs","mpg","fg%","3p%","ft%","rpg","apg","spg","bpg","ppg"],roster:["player","gp","gs","mpg","fg%","3fg%","ft%","rpg","apg","spg","bpg","ppg"]};var xa=function(e){e.text=e.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,(t,i)=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();let a="! "+$a[i].join(" !! "),r=Xe("{|\n"+a+"\n"+t+"\n|}");return r=r.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"NBA "+i+" statistics",data:r}),""})};var va=function(e){e.text=e.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,t=>{let i=function(e){let t=["#","date","opponent","score","win","loss","save","attendance","record"];return!0===/\|stadium=y/i.test(e)&&t.splice(7,0,"stadium"),!0===/\|time=y/i.test(e)&&t.splice(7,0,"time"),!0===/\|box=y/i.test(e)&&t.push("box"),t}(t);t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{mlb game log (section|month) end\}\}/i,"");let a="! "+i.join(" !! "),r=Xe("{|\n"+a+"\n"+t+"\n|}");return r=r.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mlb game log section",data:r}),""})};let ja=["res","record","opponent","method","event","date","round","time","location","notes"];var _a=function(e){e.text=e.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,t=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");let i="! "+ja.join(" !! "),a=Xe("{|\n"+i+"\n"+t+"\n|}");return a=a.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mma record start",data:a}),""})};const za=be;var Ea=function(e){e.text=e.text.replace(/]*?)>([\s\S]+?)<\/math>/g,(t,i,a)=>{let r=za(a).text();return e.templates.push({template:"math",formula:r,raw:a}),r&&r.length<12?r:""}),e.text=e.text.replace(/]*?)>([\s\S]+?)<\/chem>/g,(t,i,a)=>(e.templates.push({template:"chem",data:a}),""))};const Oa={heading:Be,table:st,paragraphs:Tt,templates:ka,references:Ie,startEndTemplates:function(e,t){const i={templates:[],text:e._wiki};return ya(i),wa(i,t,e),Ea(i),va(i),_a(i),xa(i),i.templates=i.templates.map(e=>new da(e)),i}},Ca={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0};class Sa{constructor(e,t){let i={doc:t,title:e.title||"",depth:e.depth,wiki:e.wiki||"",templates:[],tables:[],infoboxes:[],references:[],paragraphs:[]};Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})});const a=Oa.startEndTemplates(this,t);this._wiki=a.text,this._templates=this._templates.concat(a.templates),Oa.references(this),Oa.templates(this,t),Oa.table(this),Oa.paragraphs(this,t)}title(){return this._title||""}index(){if(!this._doc)return null;let e=this._doc.sections().indexOf(this);return-1===e?null:e}depth(){return this._depth}indentation(){return this.depth()}sentences(){return this.paragraphs().reduce((e,t)=>e.concat(t.sentences()),[])}paragraphs(){return this._paragraphs||[]}links(e){let t=[];if(this.infoboxes().forEach(e=>{t.push(e.links())}),this.sentences().forEach(e=>{t.push(e.links())}),this.tables().forEach(e=>{t.push(e.links())}),this.lists().forEach(e=>{t.push(e.links())}),t=t.reduce((e,t)=>e.concat(t),[]).filter(e=>void 0!==e),"string"==typeof e){let i=t.find(t=>t.page().toLowerCase()===e.toLowerCase());return void 0===i?[]:[i]}return t}tables(){return this._tables||[]}templates(e){let t=this._templates||[];return t=t.map(e=>e.json()),"string"==typeof e?(e=e.toLowerCase(),t.filter(t=>t.template===e||t.name===e)):t}infoboxes(e){let t=this._infoboxes||[];return"string"==typeof e?(e=(e=e.replace(/^infobox /i,"")).trim().toLowerCase(),t.filter(t=>t._type===e)):t}coordinates(){return[...this.templates("coord"),...this.templates("coor")]}lists(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.lists())}),e}interwiki(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.interwiki())}),e}images(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.images())}),e}references(){return this._references||[]}remove(){if(!this._doc)return null;let e={};e[this.title()]=!0,this.children().forEach(t=>e[t.title()]=!0);let t=this._doc.sections();return t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),this._doc._sections=t,this._doc}nextSibling(){if(!this._doc)return null;let e=this._doc.sections();for(let t=(this.index()||0)+1;tthis.depth())for(let e=i+1;ethis.depth();e+=1)a.push(t[e]);return"string"==typeof e?a.find(t=>t.title().toLowerCase()===e.toLowerCase()):a}sections(e){return this.children(e)}parent(){if(!this._doc)return null;let e=this._doc.sections();for(let t=this.index()||0;t>=0;t-=1)if(e[t]&&e[t].depth()t.text(e)).join("\n\n")}json(e){return e=d(e,Ca),V(this,e)}}Sa.prototype.citations=Sa.prototype.references;const Na={sentences:"sentence",paragraphs:"paragraph",links:"link",tables:"table",templates:"template",infoboxes:"infobox",coordinates:"coordinate",lists:"list",images:"image",references:"reference",citations:"citation"};Object.keys(Na).forEach(e=>{let t=Na[e];Sa.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}});var qa=Sa;const La=new RegExp("^("+f.references.join("|")+"):?","i"),Aa=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,Pa={heading:Be};var Ta=function(e){let t=[],i=e._wiki.split(Aa);for(let a=0;a!0!==La.test(t.title())||t.paragraphs().length>0||t.templates().length>0||(e[i+1]&&e[i+1].depth()>t.depth()&&(e[i+1]._depth-=1),!1))}(t)};const Da=new RegExp("\\[\\[:?("+f.categories.join("|")+"):(.{2,178}?)]](w{0,10})","ig"),Ia=new RegExp("^\\[\\[:?("+f.categories.join("|")+"):","ig");const Ra={section:Ta,categories:function(e){const t=[];let i=e.match(Da);i&&i.forEach((function(e){(e=(e=(e=e.replace(Ia,"")).replace(/\|?[ \*]?\]\]$/i,"")).replace(/\|.*/,""))&&!e.match(/[\[\]]/)&&t.push(e.trim())}));const a=e.replace(Da,"");return[t,a]}},Ma={tables:!0,lists:!0,paragraphs:!0};class Ua{constructor(e,t){let i={pageID:(t=t||{}).pageID||t.id||null,namespace:t.namespace||t.ns||null,lang:t.lang||t.language||null,domain:t.domain||null,title:t.title||null,type:"page",redirectTo:null,wikidata:t.wikidata||null,wiki:e||"",categories:[],sections:[],coordinates:[]};if(Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})}),!0===I(this._wiki)){this._type="redirect",this._redirectTo=R(this._wiki);const[e,t]=Ra.categories(this._wiki);return this._categories=e,void(this._wiki=t)}this._wiki=W(this._wiki);const[a,r]=Ra.categories(this._wiki);this._categories=a,this._wiki=r,this._sections=Ra.section(this)}title(e){if(void 0!==e)return this._title=e,e;if(this._title)return this._title;let t=null,i=this.sentence();return i&&(t=i.bold()),t}pageID(e){return void 0!==e&&(this._pageID=e),this._pageID||null}wikidata(e){return void 0!==e&&(this._wikidata=e),this._wikidata||null}domain(e){return void 0!==e&&(this._domain=e),this._domain||null}language(e){return void 0!==e&&(this._lang=e),this._lang||null}url(){let e=this.title();if(!e)return null;let t=this.language()||"en",i=this.domain()||"wikipedia.org";return e=e.replace(/ /g,"_"),e=encodeURIComponent(e),`https://${t}.${i}/wiki/${e}`}namespace(e){return void 0!==e&&(this._namespace=e),this._namespace||null}isRedirect(){return"redirect"===this._type}redirectTo(){return this._redirectTo}isDisambiguation(){return $(this)}categories(){return this._categories||[]}sections(e){let t=this._sections||[];if(t.forEach(e=>{e._doc=this}),"string"==typeof e){let i=e.toLowerCase().trim();return t.filter(e=>e.title().toLowerCase()===i)}return t}paragraphs(){let e=[];return this.sections().forEach(t=>{e=e.concat(t.paragraphs())}),e}sentences(){let e=[];return this.sections().forEach(t=>{e=e.concat(t.sentences())}),e}images(){let e=m(this,"images",null);return this.infoboxes().forEach(t=>{let i=t.image();i&&e.unshift(i)}),this.templates().forEach(t=>{"gallery"===t.template&&(t.images=t.images||[],t.images.forEach(t=>{t instanceof z||(t.language=this.language(),t.domain=this.domain(),t=new z(t)),e.push(t)}))}),e}links(e){return m(this,"links",e)}interwiki(e){return m(this,"interwiki",e)}lists(e){return m(this,"lists",e)}tables(e){return m(this,"tables",e)}templates(e){return m(this,"templates",e)}references(e){return m(this,"references",e)}citations(e){return this.references(e)}coordinates(e){return m(this,"coordinates",e)}infoboxes(e){let t=m(this,"infoboxes",e);return t=t.sort((e,t)=>Object.keys(e.data).length>Object.keys(t.data).length?-1:1),t}text(e){if(e=d(e,Ma),!0===this.isRedirect())return"";return this.sections().map(t=>t.text(e)).join("\n\n")}json(e){return e=d(e,Ma),g(this,e)}debug(){return console.log("\n"),this.sections().forEach(e=>{let t=" - ";for(let i=0;i{let t=Ba[e];Ua.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}}),Ua.prototype.lang=Ua.prototype.language,Ua.prototype.ns=Ua.prototype.namespace,Ua.prototype.plaintext=Ua.prototype.text,Ua.prototype.isDisambig=Ua.prototype.isDisambiguation,Ua.prototype.citations=Ua.prototype.references,Ua.prototype.redirectsTo=Ua.prototype.redirectTo,Ua.prototype.redirect=Ua.prototype.redirectTo,Ua.prototype.redirects=Ua.prototype.redirectTo;var Fa=Ua;var Ka=function(e){let t=(e=e.filter(e=>e)).map(e=>new Fa(e.wiki,e.meta));return 0===t.length?null:1===t.length?t[0]:t};var Wa=function(e){let t,i=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return t=e.noOrigin?"":e.origin||e.Origin||"*",{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":i,"User-Agent":i,Origin:t},redirect:"follow"}};const Ya=/^https?:\/\//,Za={lang:"en",wiki:"wikipedia",domain:void 0,follow_redirects:!0,path:"api.php"};var Ha=function(e,t,i){"string"==typeof t&&(t={lang:t}),(t={...Za,...t}).title=e,"string"==typeof e&&Ya.test(e)&&(t={...t,...r(e)});const n=u(t),o=Wa(t);return a(n,o).then(e=>e.json()).then(e=>{let a=p(e,t);return a=Ka(a),i&&i(null,a),a}).catch(e=>(console.error(e),i&&i(e,null),null))};const Ga=function(e,t){return new Fa(e,t)},Va={Doc:Fa,Section:qa,Paragraph:ht,Sentence:ce,Image:z,Infobox:ua,Link:ee,List:_t,Reference:Le,Table:rt,Template:da,http:function(e,t){return a(e,t).then((function(e){return e.json()}))},wtf:Ga};Ga.fetch=function(e,t,i,a){return Ha(e,t,i)},Ga.plugin=Ga.extend=function(e){return e(Va,ea,Kt),this},Ga.version="8.5.1";var Ja=Ga;export default Ja; +var e=Object.freeze({__proto__:null,default:function(e,t){return t=t||{},new Promise((function(i,a){var n=new XMLHttpRequest,r=[],o=[],s={},l=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:l,headers:{keys:function(){return r},entries:function(){return o},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var c in n.open(t.method||"get",e,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,i){r.push(t=t.toLowerCase()),o.push([t,i]),s[t]=s[t]?s[t]+","+i:i})),i(l())},n.onerror=a,n.withCredentials="include"==t.credentials,t.headers)n.setRequestHeader(c,t.headers[c]);n.send(t.body||null)}))}});var t,i=(t=e)&&t.default||t,a=self.fetch||(self.fetch=i.default||i);var n=function(e){let t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};var r={capitalise:function(e){return e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):""},trim_whitespace:function(e){return e&&"string"==typeof e?e=(e=(e=(e=e.replace(/^\s\s*/,"")).replace(/\s\s*$/,"")).replace(/ {2}/," ")).replace(/\s, /,", "):""},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}};const{isArray:o}=r,s=/(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/,l={action:"query",prop:"revisions|pageprops",rvprop:"content",maxlag:5,rvslots:"main",origin:"*",format:"json",redirects:"true"},c=e=>e.replace(/ /g,"_").trim();var u=function(e){let t=Object.assign({},l),i="";if(e.domain){let t=s.test(e.domain)?"w/api.php":e.path;i=`https://${e.domain}/${t}?`}else{if(!e.lang||!e.wiki)return"";i=`https://${e.lang}.${e.wiki}.org/w/api.php?`}e.follow_redirects||delete t.redirects;let a=e.title;if("number"==typeof a)t.pageids=a;else if("string"==typeof a)t.titles=c(a);else if(void 0!==a&&o(a)&&"number"==typeof a[0])t.pageids=a.join("|");else{if(void 0===a||!0!==o(a)||"string"!=typeof a[0])return"";t.titles=a.map(c).join("|")}return`${i}${n=t,Object.entries(n).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}`;var n};var p=function(e,t={}){return Object.keys(e.query.pages).map(i=>{let a=e.query.pages[i]||{};if(a.hasOwnProperty("missing")||a.hasOwnProperty("invalid"))return null;let n=a.revisions[0]["*"];!n&&a.revisions[0].slots&&(n=a.revisions[0].slots.main["*"]),a.pageprops=a.pageprops||{};let r=t.domain;return!r&&t.wiki&&(r=t.wiki+".org"),{wiki:n,meta:Object.assign({},t,{title:a.title,pageID:a.pageid,namespace:a.ns,domain:r,wikidata:a.pageprops.wikibase_item,description:a.pageprops["wikibase-shortdesc"]})}})};var m=function(e,t,i){let a=[];return e.sections().forEach(e=>{let n=[];n="string"==typeof i?e[t](i):e[t](),n.forEach(e=>{a.push(e)})}),"number"==typeof i?void 0===a[i]?[]:[a[i]]:a};var d=function(e,t){return Object.assign({},t,e)};const h={title:!0,sections:!0,pageID:!0,categories:!0};var g=function(e,t){let i={};return(t=d(t,h)).title&&(i.title=e.title()),t.pageID&&(i.pageID=e.pageID()),t.categories&&(i.categories=e.categories()),t.sections&&(i.sections=e.sections().map(e=>e.json(t))),!0===e.isRedirect()&&(i.isRedirect=!0,i.redirectTo=e.redirectTo(),i.sections=[]),t.coordinates&&(i.coordinates=e.coordinates()),t.infoboxes&&(i.infoboxes=e.infoboxes().map(e=>e.json(t))),t.images&&(i.images=e.images().map(e=>e.json(t))),t.plaintext&&(i.plaintext=e.text(t)),(t.citations||t.references)&&(i.references=e.references()),i},k={categories:["category","abdeeling","bólkur","catagóir","categori","categoria","categoria","categoría","categorîa","categorìa","catégorie","categorie","catègorie","category","categuria","catigurìa","class","ẹ̀ka","flocc","flocc","flokkur","grup","jamii","kaarangay","kateggoría","kategooria","kategori","kategorî","kategoria","kategória","kategorie","kategoriija","kategorija","kategorio","kategoriya","kategoriýa","kategoriye","kategory","kategorya","kateqoriya","katiguriya","klad","luokka","ñemohenda","roinn","ronney","rummad","setensele","sokajy","sumut","thể","turkum","категорија","категория","категорія","катэгорыя","төркем","קטגוריה","تصنيف","تۈر","رده","श्रेणी","श्रेणी","বিষয়শ্রেণী","หมวดหมู่","분류","분류","分类"],disambig_templates:["dab","disamb","disambig","disambiguation","aðgreining","aimai","ałtsʼáʼáztiin","anlam ayrımı","anlam ayrımı","apartigilo","argipen","begriepskloorenge","begriffsklärung","begriffsklärung","begriffsklärung","begriffsklearung","bisongidila","bkl","bokokani","caddayn","clerheans","cudakirin","čvor","db","desambig","desambigación","desambiguação","desambiguació","desambiguación","desambiguáncia","desambiguasion","desambiguassiù","desambigui","dezambiguizare","dəqiqləşdirmə","disambigua","disambigua","disambigua","disambìgua","disambigua","disambiguasi","disambiguasi","discretiva","disheñvelout","disingkek","dixanbigua","dixebra","diżambigwazzjoni","doorverwijspagina","dp","dp","dubbelsinnig","dudalipen","dv","egyért","fleiri týdningar","fleirtyding","flertydig","förgrening","gì-ngiê","giklaro","gwahaniaethu","homonimo","homónimos","homonymie","huaʻōlelo puana like","idirdhealú","khu-pia̍t","kthjellim","kujekesa","maana","maneo bin","mehrdüdig begreep","menm non","muardüüdag artiikel","neibetsjuttings","nozīmju atdalīšana","nuorodinis","nyahkekaburan","omonimeye","omonimia","page dé frouque","paglilinaw","panangilawlawag","pansayod","pejy mitovy anarana","peker","razdvojba","razločitev","razvrstavanje","reddaghey","rozcestník","rozlišovacia stránka","sclerir noziun","selvendyssivu","soilleireachadh","suzmunski","täpsustuslehekülg","täsmennyssivu","telplänov","tlahtolmelahuacatlaliztli","trang định hướng","ujednoznacznienie","verdudeliking","wěcejwóznamowosć","wjacezmyslnosć","zambiguaçon","zeimeibu škiršona","αποσαφήνιση","айрық","аҵакырацәа","вишезначна одредница","ибҳомзудоӣ","кёб магъаналы","күп мәгънәләр","күп мәғәнәлелек","мъногосъмꙑслиѥ","неадназначнасць","неадназначнасьць","неоднозначность","олон удхатай","појаснување","пояснение","са шумуд манавал","салаа утгатай","суолталар","текмаанисиздик","цо магіна гуреб","чеперушка","чолхалла","шуко ончыктымаш-влак","მრავალმნიშვნელოვანი","բազմիմաստութիւն","բազմիմաստություն","באדייטן","פירושונים","ابهام‌زدایی","توضيح","توضيح","دقیقلشدیرمه","ڕوونکردنەوە","سلجهائپ","ضد ابہام","گجگجی بیری","نامبهمېدنه","መንታ","अस्पष्टता","बहुअर्थी","बहुविकल्पी शब्द","দ্ব্যর্থতা নিরসন","ਗੁੰਝਲ-ਖੋਲ੍ਹ","સંદિગ્ધ શીર્ષક","பக்கவழி நெறிப்படுத்தல்","అయోమయ నివృత్తి","ದ್ವಂದ್ವ ನಿವಾರಣೆ","വിവക്ഷകൾ","වක්‍රෝත්ති","แก้ความกำกวม","သံတူကြောင်းကွဲ","ណែនាំ","동음이의","扤清楚","搞清楚","曖昧さ回避","消歧义","釋義","gestion dj'omònim","sut'ichana qillqa"],disambig_titles:["disambiguation","homonymie","توضيح","desambiguação","Begriffsklärung","disambigua","曖昧さ回避","消歧義","搞清楚","значения","ابهام‌زدایی","د ابہام","동음이의","dubbelsinnig","այլ կիրառումներ","ujednoznacznienie"],images:["file","image","चित्र","archivo","attēls","berkas","bestand","datei","dosiero","dosya","fájl","fasciculus","fichier","fil","fitxategi","fitxer","gambar","imagem","imej","immagine","larawan","lêer","plik","restr","slika","wêne","wobraz","выява","податотека","слика","файл","სურათი","պատկեր","קובץ","پرونده","دوتنه","ملف","وێنە","चित्र","ไฟล์","파일","ファイル"],infoboxes:["infobox","anfo","anuāmapa","bilgi kutusu","bilgi","bilgiquti","boaty","boestkelaouiñ","bosca","capsa","diehtokássa","faktamall","ficha","generalni","gwybodlen3","info","infobokis","infoboks","infochascha","infokašćik","infokast","infokutija","infolentelė","infopolje","informkesto","infoskreine","infotaula","inligtingskas","inligtingskas3","inligtingskas4","kishtey","kotak","tertcita","tietolaatikko","yerleşim bilgi kutusu","ynfoboks","πλαίσιο","акарточка","аҥа","инфобокс","инфокутија","инфокутия","інфобокс","канадский","картка","карточка","карточка2","карточкарус","картуш","қуттӣ","ინფოდაფა","տեղեկաքարտ","אינפאקעסטל","תבנית","بطاقة","ڄاڻخانو","خانہ","لغة","ज्ञानसन्दूक","তথ্যছক","ਜਾਣਕਾਰੀਡੱਬਾ","సమాచారపెట్టె","තොරතුරුකොටුව","กล่องข้อมูล","ប្រអប់ព័ត៌មាន","정보상자","明細"],redirects:["adkas","aýdaw","doorverwijzing","ohjaus","patrz","přesměruj","redirección","redireccion","redirección","redirecionamento","redirect","redirection","redirection","rinvia","tilvísun","uudelleenohjaus","weiterleitung","weiterleitung","yönlendi̇r","yönlendirme","yönlendi̇rme","ανακατευθυνση","айдау","перанакіраваньне","перенаправлення","пренасочување","преусмери","преусмјери","تغییر_مسیر","تغییرمسیر","تغییرمسیر","เปลี่ยนทาง","ប្តូរទីតាំងទៅ","転送","重定向"],references:["references","reference","einzelnachweise","referencias","références","notes et références","脚注","referenser","bronnen","примечания"]};let f=" disambiguation";var b=["dab","dab","disamb","disambig","geodis","hndis","setindex","ship index","split dab","sport index","wp disambig","disambiguation cleanup","airport"+f,"biology"+f,"call sign"+f,"caselaw"+f,"chinese title"+f,"genus"+f,"hospital"+f,"lake index","letter"+f,"letter-number combination"+f,"mathematical"+f,"military unit"+f,"mountainindex","number"+f,"phonetics"+f,"place name"+f,"portal"+f,"road"+f,"school"+f,"species latin name abbreviation"+f,"species latin name"+f,"station"+f,"synagogue"+f,"taxonomic authority"+f,"taxonomy"+f].reduce((e,t)=>(e[t]=!0,e),{});const w=new RegExp(". \\(("+k.disambig_titles.join("|")+")\\)$","i"),y=k.disambig_templates.reduce((e,t)=>(e[t]=!0,e),{}),$=function(e){if(!e)return!1;let t=e.text();return!(null===t||!t[0]||!0!==/. may (also)? refer to\b/i.test(t))};var x=function(e){if(e.templates().map(e=>e.json()).find(e=>b.hasOwnProperty(e.template)||y.hasOwnProperty(e.template)))return!0;let t=e.title();return!(!t||!0!==w.test(t))||(!0===$(e.sentence(0))||!0===$(e.sentence(1)))};const v={caption:!0,alt:!0,links:!0,thumb:!0,url:!0};var j=function(e,t){t=d(t,v);let i={file:e.file()};return!1!==t.thumb&&(i.thumb=e.thumbnail()),!1!==t.url&&(i.url=e.url()),!1!==t.caption&&e.data.caption&&(i.caption=e.caption(),!1!==t.links&&e.data.caption.links()&&(i.links=e.links())),!1!==t.alt&&e.data.alt&&(i.alt=e.alt()),i};const _=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},z={file(){return this.data.file||""},alt(){let e=this.data.alt||this.data.file||"";return e=e.replace(/^(file|image):/i,""),e=e.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),e.replace(/_/g," ")},caption(){return this.data.caption?this.data.caption.text():""},links(){return this.data.caption?this.data.caption.links():[]},url(){let e=function(e){let t=function(e){let t=e.replace(/^(image|file?)\:/i,"");return t=t.charAt(0).toUpperCase()+t.substring(1),t=t.trim().replace(/ /g,"_"),t}(e);return t=encodeURIComponent(t),t}(this.file());return`https://${this.data.domain||"wikipedia.org"}/wiki/Special:Redirect/file/${e}`},thumbnail(e){return e=e||300,this.url()+"?width="+e},format(){let e=this.file().split(".");return e[e.length-1]?e[e.length-1].toLowerCase():null},json:function(e){return j(this,e=e||{})},text:function(){return""},wikitext:function(){return this.data.wiki||""}};Object.keys(z).forEach(e=>{_.prototype[e]=z[e]}),_.prototype.src=_.prototype.url,_.prototype.thumb=_.prototype.thumbnail;var O=_,E={aa:"Afar",ab:"Аҧсуа",af:"Afrikaans",ak:"Akana",als:"Alemannisch",am:"አማርኛ",an:"Aragonés",ang:"Englisc",ar:"العربية",arc:"ܣܘܪܬ",as:"অসমীয়া",ast:"Asturianu",av:"Авар",ay:"Aymar",az:"Azərbaycanca",ba:"Башҡорт",bar:"Boarisch","bat-smg":"Žemaitėška",bcl:"Bikol",be:"Беларуская","be-x-old":"ltr",bg:"Български",bh:"भोजपुरी",bi:"Bislama",bm:"Bamanankan",bn:"বাংলা",bo:"བོད་ཡིག",bpy:"ltr",br:"Brezhoneg",bs:"Bosanski",bug:"ᨅᨔ",bxr:"ltr",ca:"Català",cdo:"Chinese",ce:"Нохчийн",ceb:"Sinugboanong",ch:"Chamoru",cho:"Choctaw",chr:"ᏣᎳᎩ",chy:"Tsetsêhestâhese",co:"Corsu",cr:"Nehiyaw",cs:"Česky",csb:"Kaszëbsczi",cu:"Slavonic",cv:"Чăваш",cy:"Cymraeg",da:"Dansk",de:"Deutsch",diq:"Zazaki",dsb:"ltr",dv:"ދިވެހިބަސް",dz:"ཇོང་ཁ",ee:"Ɛʋɛ",far:"فارسی",el:"Ελληνικά",en:"English",eo:"Esperanto",es:"Español",et:"Eesti",eu:"Euskara",ext:"Estremeñu",ff:"Fulfulde",fi:"Suomi","fiu-vro":"Võro",fj:"Na",fo:"Føroyskt",fr:"Français",frp:"Arpitan",fur:"Furlan",fy:"ltr",ga:"Gaeilge",gan:"ltr",gd:"ltr",gil:"Taetae",gl:"Galego",gn:"Avañe'ẽ",got:"gutisk",gu:"ગુજરાતી",gv:"Gaelg",ha:"هَوُسَ",hak:"ltr",haw:"Hawai`i",he:"עברית",hi:"हिन्दी",ho:"ltr",hr:"Hrvatski",ht:"Krèyol",hu:"Magyar",hy:"Հայերեն",hz:"Otsiherero",ia:"Interlingua",id:"Bahasa",ie:"Interlingue",ig:"Igbo",ii:"ltr",ik:"Iñupiak",ilo:"Ilokano",io:"Ido",is:"Íslenska",it:"Italiano",iu:"ᐃᓄᒃᑎᑐᑦ",ja:"日本語",jbo:"Lojban",jv:"Basa",ka:"ქართული",kg:"KiKongo",ki:"Gĩkũyũ",kj:"Kuanyama",kk:"Қазақша",kl:"Kalaallisut",km:"ភាសាខ្មែរ",kn:"ಕನ್ನಡ",khw:"کھوار",ko:"한국어",kr:"Kanuri",ks:"कश्मीरी",ksh:"Ripoarisch",ku:"Kurdî",kv:"Коми",kw:"Kernewek",ky:"Kırgızca",la:"Latina",lad:"Dzhudezmo",lan:"Leb",lb:"Lëtzebuergesch",lg:"Luganda",li:"Limburgs",lij:"Líguru",lmo:"Lumbaart",ln:"Lingála",lo:"ລາວ",lt:"Lietuvių",lv:"Latviešu","map-bms":"Basa",mg:"Malagasy",man:"官話",mh:"Kajin",mi:"Māori",min:"Minangkabau",mk:"Македонски",ml:"മലയാളം",mn:"Монгол",mo:"Moldovenească",mr:"मराठी",ms:"Bahasa",mt:"bil-Malti",mus:"Muskogee",my:"Myanmasa",na:"Dorerin",nah:"Nahuatl",nap:"Nnapulitano",nd:"ltr",nds:"Plattdüütsch","nds-nl":"Saxon",ne:"नेपाली",new:"नेपालभाषा",ng:"Oshiwambo",nl:"Nederlands",nn:"ltr",no:"Norsk",nr:"ltr",nso:"ltr",nrm:"Nouormand",nv:"Diné",ny:"Chi-Chewa",oc:"Occitan",oj:"ᐊᓂᔑᓈᐯᒧᐎᓐ",om:"Oromoo",or:"ଓଡ଼ିଆ",os:"Иронау",pa:"ਪੰਜਾਬੀ",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamentu",pdc:"ltr",pi:"Pāli",pih:"Norfuk",pl:"Polski",pms:"Piemontèis",ps:"پښتو",pt:"Português",qu:"Runa",rm:"ltr",rmy:"Romani",rn:"Kirundi",ro:"Română","roa-rup":"Armâneashti",ru:"Русский",rw:"Kinyarwandi",sa:"संस्कृतम्",sc:"Sardu",scn:"Sicilianu",sco:"Scots",sd:"सिनधि",se:"ltr",sg:"Sängö",sh:"Srpskohrvatski",si:"සිංහල",simple:"ltr",sk:"Slovenčina",sl:"Slovenščina",sm:"Gagana",sn:"chiShona",so:"Soomaaliga",sq:"Shqip",sr:"Српски",ss:"SiSwati",st:"ltr",su:"Basa",sv:"Svenska",sw:"Kiswahili",ta:"தமிழ்",te:"తెలుగు",tet:"Tetun",tg:"Тоҷикӣ",th:"ไทย",ti:"ትግርኛ",tk:"Туркмен",tl:"Tagalog",tlh:"tlhIngan-Hol",tn:"Setswana",to:"Lea",tpi:"ltr",tr:"Türkçe",ts:"Xitsonga",tt:"Tatarça",tum:"chiTumbuka",tw:"Twi",ty:"Reo",udm:"Удмурт",ug:"Uyƣurqə",uk:"Українська",ur:"اردو",uz:"Ўзбек",ve:"Tshivenḓa",vi:"Việtnam",vec:"Vèneto",vls:"ltr",vo:"Volapük",wa:"Walon",war:"Winaray",wo:"Wollof",xal:"Хальмг",xh:"isiXhosa",yi:"ייִדיש",yo:"Yorùbá",za:"Cuengh",zh:"中文","zh-classical":"ltr","zh-min-nan":"Bân-lâm-gú","zh-yue":"粵語",zu:"isiZulu"};const C=".wikipedia.org/wiki/$1",S=".wikimedia.org/wiki/$1",N="www.";var q={acronym:N+"acronymfinder.com/$1.html",advisory:"advisory"+S,advogato:N+"advogato.org/$1",aew:"wiki.arabeyes.org/$1",appropedia:N+"appropedia.org/$1",aquariumwiki:N+"theaquariumwiki.com/$1",arborwiki:"localwiki.org/ann-arbor/$1",arxiv:"arxiv.org/abs/$1",atmwiki:N+"otterstedt.de/wiki/index.php/$1",baden:N+"stadtwiki-baden-baden.de/wiki/$1/",battlestarwiki:"en.battlestarwiki.org/wiki/$1",bcnbio:"historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1",beacha:N+"beachapedia.org/$1",betawiki:"translatewiki.net/wiki/$1",bibcode:"adsabs.harvard.edu/abs/$1",bibliowiki:"wikilivres.org/wiki/$1",bluwiki:"bluwiki.com/go/$1",blw:"britainloves"+C,botwiki:"botwiki.sno.cc/wiki/$1",boxrec:N+"boxrec.com/media/index.php?$1",brickwiki:N+"brickwiki.info/wiki/$1",bugzilla:"bugzilla.wikimedia.org/show_bug.cgi?id=$1",bulba:"bulbapedia.bulbagarden.net/wiki/$1",c:"commons"+S,c2:"c2.com/cgi/wiki?$1",c2find:"c2.com/cgi/wiki?FindPage&value=$1",cache:N+"google.com/search?q=cache:$1","ĉej":"esperanto.blahus.cz/cxej/vikio/index.php/$1",cellwiki:"cell.wikia.com/wiki/$1",centralwikia:"community.wikia.com/wiki/$1",chej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",choralwiki:N+"cpdl.org/wiki/index.php/$1",citizendium:"en.citizendium.org/wiki/$1",ckwiss:N+"ck-wissen.de/ckwiki/index.php?title=$1",comixpedia:N+"comixpedia.org/index.php?title=$1",commons:"commons"+S,communityscheme:"community.schemewiki.org/?c=s&key=$1",communitywiki:"communitywiki.org/$1",comune:"rete.comuni-italiani.it/wiki/$1",creativecommons:"creativecommons.org/licenses/$1",creativecommonswiki:"wiki.creativecommons.org/$1",cxej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",dcc:N+"dccwiki.com/$1",dcdatabase:"dc.wikia.com/$1",dcma:"christian-morgenstern.de/dcma/index.php?title=$1",debian:"wiki.debian.org/$1",delicious:N+"delicious.com/tag/$1",devmo:"developer.mozilla.org/en/docs/$1",dictionary:N+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",dict:N+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",disinfopedia:"sourcewatch.org/index.php/$1",distributedproofreaders:N+"pgdp.net/wiki/$1",distributedproofreadersca:N+"pgdpcanada.net/wiki/index.php/$1",dmoz:"curlie.org/$1",dmozs:"curlie.org/search?q=$1",doi:"doi.org/$1",donate:"donate"+S,doom_wiki:"doom.wikia.com/wiki/$1",download:"releases.wikimedia.org/$1",dbdump:"dumps.wikimedia.org/$1/latest/",dpd:"lema.rae.es/dpd/?key=$1",drae:"dle.rae.es/?w=$1",dreamhost:"wiki.dreamhost.com/index.php/$1",drumcorpswiki:N+"drumcorpswiki.com/index.php/$1",dwjwiki:N+"suberic.net/cgi-bin/dwj/wiki.cgi?$1","eĉei":N+"ikso.net/cgi-bin/wiki.pl?$1",ecoreality:N+"EcoReality.org/wiki/$1",ecxei:N+"ikso.net/cgi-bin/wiki.pl?$1",elibre:"enciclopedia.us.es/index.php/$1",emacswiki:N+"emacswiki.org/emacs?$1",encyc:"encyc.org/wiki/$1",energiewiki:N+"netzwerk-energieberater.de/wiki/index.php/$1",englyphwiki:"en.glyphwiki.org/wiki/$1",enkol:"enkol.pl/$1",eokulturcentro:"esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1",esolang:"esolangs.org/wiki/$1",etherpad:"etherpad.wikimedia.org/$1",ethnologue:N+"ethnologue.com/language/$1",ethnologuefamily:N+"ethnologue.com/show_family.asp?subid=$1",evowiki:"wiki.cotch.net/index.php/$1",exotica:N+"exotica.org.uk/wiki/$1",fanimutationwiki:"wiki.animutationportal.com/index.php/$1",fedora:"fedoraproject.org/wiki/$1",finalfantasy:"finalfantasy.wikia.com/wiki/$1",finnix:N+"finnix.org/$1",flickruser:N+"flickr.com/people/$1",flickrphoto:N+"flickr.com/photo.gne?id=$1",floralwiki:N+"floralwiki.co.uk/wiki/$1",foldoc:"foldoc.org/$1",foundation:"foundation"+S,foundationsite:"wikimediafoundation.org/$1",foxwiki:"fox.wikis.com/wc.dll?Wiki~$1",freebio:"freebiology.org/wiki/$1",freebsdman:N+"FreeBSD.org/cgi/man.cgi?apropos=1&query=$1",freeculturewiki:"wiki.freeculture.org/index.php/$1",freedomdefined:"freedomdefined.org/$1",freefeel:"freefeel.org/wiki/$1",freekiwiki:"wiki.freegeek.org/index.php/$1",freesoft:"directory.fsf.org/wiki/$1",ganfyd:"ganfyd.org/index.php?title=$1",gardenology:N+"gardenology.org/wiki/$1",gausswiki:"gauss.ffii.org/$1",gentoo:"wiki.gentoo.org/wiki/$1",genwiki:"wiki.genealogy.net/index.php/$1",gerrit:"gerrit.wikimedia.org/r/$1",git:"gerrit.wikimedia.org/g/$1",google:N+"google.com/search?q=$1",googledefine:N+"google.com/search?q=define:$1",googlegroups:"groups.google.com/groups?q=$1",guildwarswiki:"wiki.guildwars.com/wiki/$1",guildwiki:"guildwars.wikia.com/wiki/$1",guc:"tools.wmflabs.org/guc/?user=$1",gucprefix:"tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1",gutenberg:N+"gutenberg.org/etext/$1",gutenbergwiki:N+"gutenberg.org/wiki/$1",hackerspaces:"hackerspaces.org/wiki/$1",h2wiki:"halowiki.net/p/$1",hammondwiki:N+"dairiki.org/HammondWiki/index.php3?$1",hdl:"hdl.handle.net/$1",heraldik:"heraldik-wiki.de/wiki/$1",heroeswiki:"heroeswiki.com/$1",horizonlabs:"horizon.wikimedia.org/$1",hrwiki:N+"hrwiki.org/index.php/$1",hrfwiki:"fanstuff.hrwiki.org/index.php/$1",hupwiki:"wiki.hup.hu/index.php/$1",iarchive:"archive.org/details/$1",imdbname:N+"imdb.com/name/nm$1/",imdbtitle:N+"imdb.com/title/tt$1/",imdbcompany:N+"imdb.com/company/co$1/",imdbcharacter:N+"imdb.com/character/ch$1/",incubator:"incubator"+S,infosecpedia:"infosecpedia.org/wiki/$1",infosphere:"theinfosphere.org/$1","iso639-3":"iso639-3.sil.org/code/$1",issn:N+"worldcat.org/issn/$1",iuridictum:"iuridictum.pecina.cz/w/$1",jaglyphwiki:"glyphwiki.org/wiki/$1",jefo:"esperanto-jeunes.org/wiki/$1",jerseydatabase:"jerseydatabase.com/wiki.php?id=$1",jira:"jira.toolserver.org/browse/$1",jspwiki:N+"ecyrd.com/JSPWiki/Wiki.jsp?page=$1",jstor:N+"jstor.org/journals/$1",kamelo:"kamelopedia.mormo.org/index.php/$1",karlsruhe:"ka.stadtwiki.net/$1",kinowiki:"kino.skripov.com/index.php/$1",komicawiki:"wiki.komica.org/?$1",kontuwiki:"kontu.wiki/$1",wikitech:"wikitech"+S,libreplanet:"libreplanet.org/wiki/$1",linguistlist:"linguistlist.org/forms/langs/LLDescription.cfm?code=$1",linuxwiki:N+"linuxwiki.de/$1",linuxwikide:N+"linuxwiki.de/$1",liswiki:"liswiki.org/wiki/$1",literateprograms:"en.literateprograms.org/$1",livepedia:N+"livepedia.gr/index.php?title=$1",localwiki:"localwiki.org/$1",lojban:"mw.lojban.org/papri/$1",lostpedia:"lostpedia.wikia.com/wiki/$1",lqwiki:"wiki.linuxquestions.org/wiki/$1",luxo:"tools.wmflabs.org/guc/?user=$1",mail:"lists.wikimedia.org/mailman/listinfo/$1",mailarchive:"lists.wikimedia.org/pipermail/$1",mariowiki:N+"mariowiki.com/$1",marveldatabase:N+"marveldatabase.com/wiki/index.php/$1",meatball:"meatballwiki.org/wiki/$1",mw:N+"mediawiki.org/wiki/$1",mediazilla:"bugzilla.wikimedia.org/$1",memoryalpha:"memory-alpha.fandom.com/wiki/$1",metawiki:"meta"+S,metawikimedia:"meta"+S,metawikipedia:"meta"+S,mineralienatlas:N+"mineralienatlas.de/lexikon/index.php/$1",moinmoin:"moinmo.in/$1",monstropedia:N+"monstropedia.org/?title=$1",mosapedia:"mosapedia.de/wiki/index.php/$1",mozcom:"mozilla.wikia.com/wiki/$1",mozillawiki:"wiki.mozilla.org/$1",mozillazinekb:"kb.mozillazine.org/$1",musicbrainz:"musicbrainz.org/doc/$1",mediawikiwiki:N+"mediawiki.org/wiki/$1",mwod:N+"merriam-webster.com/dictionary/$1",mwot:N+"merriam-webster.com/thesaurus/$1",nkcells:N+"nkcells.info/index.php?title=$1",nara:"catalog.archives.gov/id/$1",nosmoke:"no-smok.net/nsmk/$1",nost:"nostalgia."+C,nostalgia:"nostalgia."+C,oeis:"oeis.org/$1",oldwikisource:"wikisource.org/wiki/$1",olpc:"wiki.laptop.org/go/$1",omegawiki:N+"omegawiki.org/Expression:$1",onelook:N+"onelook.com/?ls=b&w=$1",openlibrary:"openlibrary.org/$1",openstreetmap:"wiki.openstreetmap.org/wiki/$1",openwetware:"openwetware.org/wiki/$1",opera7wiki:"operawiki.info/$1",organicdesign:N+"organicdesign.co.nz/$1",orthodoxwiki:"orthodoxwiki.org/$1",osmwiki:"wiki.openstreetmap.org/wiki/$1",otrs:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1",otrswiki:"otrs-wiki"+S,ourmedia:N+"socialtext.net/ourmedia/index.cgi?$1",outreach:"outreach"+S,outreachwiki:"outreach"+S,owasp:N+"owasp.org/index.php/$1",panawiki:"wiki.alairelibre.net/index.php?title=$1",patwiki:"gauss.ffii.org/$1",personaltelco:"personaltelco.net/wiki/$1",petscan:"petscan.wmflabs.org/?psid=$1",phab:"phabricator.wikimedia.org/$1",phabricator:"phabricator.wikimedia.org/$1",phwiki:N+"pocketheaven.com/ph/wiki/index.php?title=$1",phpwiki:"phpwiki.sourceforge.net/phpwiki/index.php?$1",planetmath:"planetmath.org/node/$1",pmeg:N+"bertilow.com/pmeg/$1",pmid:N+"ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract",pokewiki:"pokewiki.de/$1","pokéwiki":"pokewiki.de/$1",policy:"policy.wikimedia.org/$1",proofwiki:N+"proofwiki.org/wiki/$1",pyrev:N+"mediawiki.org/wiki/Special:Code/pywikipedia/$1",pythoninfo:"wiki.python.org/moin/$1",pythonwiki:N+"pythonwiki.de/$1",pywiki:"c2.com/cgi/wiki?$1",psycle:"psycle.sourceforge.net/wiki/$1",quality:"quality"+S,quarry:"quarry.wmflabs.org/$1",regiowiki:"regiowiki.at/wiki/$1",rev:N+"mediawiki.org/wiki/Special:Code/MediaWiki/$1",revo:"purl.org/NET/voko/revo/art/$1.html",rfc:"tools.ietf.org/html/rfc$1",rheinneckar:"rhein-neckar-wiki.de/$1",robowiki:"robowiki.net/?$1",rodovid:"en.rodovid.org/wk/$1",reuterswiki:"glossary.reuters.com/index.php/$1",rowiki:"wiki.rennkuckuck.de/index.php/$1",rt:"rt.wikimedia.org/Ticket/Display.html?id=$1",s23wiki:"s23.org/wiki/$1",scholar:"scholar.google.com/scholar?q=$1",schoolswp:"schools-"+C,scores:"imslp.org/wiki/$1",scoutwiki:"en.scoutwiki.org/$1",scramble:N+"scramble.nl/wiki/index.php?title=$1",seapig:N+"seapig.org/$1",seattlewiki:"seattle.wikia.com/wiki/$1",slwiki:"wiki.secondlife.com/wiki/$1","semantic-mw":N+"semantic-mediawiki.org/wiki/$1",senseislibrary:"senseis.xmp.net/?$1",sharemap:"sharemap.org/$1",silcode:N+"sil.org/iso639-3/documentation.asp?id=$1",slashdot:"slashdot.org/article.pl?sid=$1",sourceforge:"sourceforge.net/$1",spcom:"spcom"+S,species:"species"+S,squeak:"wiki.squeak.org/squeak/$1",stats:"stats.wikimedia.org/$1",stewardry:"tools.wmflabs.org/meta/stewardry/?wiki=$1",strategy:"strategy"+S,strategywiki:"strategywiki.org/wiki/$1",sulutil:"meta.wikimedia.org/wiki/Special:CentralAuth/$1",swtrain:"train.spottingworld.com/$1",svn:"svn.wikimedia.org/viewvc/mediawiki/$1?view=log",swinbrain:"swinbrain.ict.swin.edu.au/wiki/$1",tabwiki:N+"tabwiki.com/index.php/$1",tclerswiki:"wiki.tcl.tk/$1",technorati:N+"technorati.com/search/$1",tenwiki:"ten."+C,testwiki:"test."+C,testwikidata:"test.wikidata.org/wiki/$1",test2wiki:"test2."+C,tfwiki:"tfwiki.net/wiki/$1",thelemapedia:N+"thelemapedia.org/index.php/$1",theopedia:N+"theopedia.com/$1",thinkwiki:N+"thinkwiki.org/wiki/$1",ticket:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1",tmbw:"tmbw.net/wiki/$1",tmnet:N+"technomanifestos.net/?$1",tmwiki:N+"EasyTopicMaps.com/?page=$1",toolforge:"tools.wmflabs.org/$1",toollabs:"tools.wmflabs.org/$1",tools:"toolserver.org/$1",tswiki:N+"mediawiki.org/wiki/Toolserver:$1",translatewiki:"translatewiki.net/wiki/$1",tviv:"tviv.org/wiki/$1",tvtropes:N+"tvtropes.org/pmwiki/pmwiki.php/Main/$1",twiki:"twiki.org/cgi-bin/view/$1",tyvawiki:N+"tyvawiki.org/wiki/$1",umap:"umap.openstreetmap.fr/$1",uncyclopedia:"en.uncyclopedia.co/wiki/$1",unihan:N+"unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1",unreal:"wiki.beyondunreal.com/wiki/$1",urbandict:N+"urbandictionary.com/define.php?term=$1",usej:N+"tejo.org/usej/$1",usemod:N+"usemod.com/cgi-bin/wiki.pl?$1",usability:"usability"+S,utrs:"utrs.wmflabs.org/appeal.php?id=$1",vikidia:"fr.vikidia.org/wiki/$1",vlos:"tusach.thuvienkhoahoc.com/wiki/$1",vkol:"kol.coldfront.net/thekolwiki/index.php/$1",voipinfo:N+"voip-info.org/wiki/view/$1",votewiki:"vote"+S,werelate:N+"werelate.org/wiki/$1",wg:"wg-en."+C,wikia:N+"wikia.com/wiki/w:c:$1",wikiasite:N+"wikia.com/wiki/w:c:$1",wikiapiary:"wikiapiary.com/wiki/$1",wikibooks:"en.wikibooks.org/wiki/$1",wikichristian:N+"wikichristian.org/index.php?title=$1",wikicities:N+"wikia.com/wiki/w:$1",wikicity:N+"wikia.com/wiki/w:c:$1",wikiconference:"wikiconference.org/wiki/$1",wikidata:N+"wikidata.org/wiki/$1",wikif1:N+"wikif1.org/$1",wikifur:"en.wikifur.com/wiki/$1",wikihow:N+"wikihow.com/$1",wikiindex:"wikiindex.org/$1",wikilemon:"wiki.illemonati.com/$1",wikilivres:"wikilivres.org/wiki/$1",wikilivresru:"wikilivres.ru/$1","wikimac-de":"apfelwiki.de/wiki/Main/$1",wikimedia:"foundation"+S,wikinews:"en.wikinews.org/wiki/$1",wikinfo:"wikinfo.org/w/index.php/$1",wikinvest:"meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest",wikiotics:"wikiotics.org/$1",wikipapers:"wikipapers.referata.com/wiki/$1",wikipedia:"en."+C,wikipediawikipedia:"en.wikipedia.org/wiki/Wikipedia:$1",wikiquote:"en.wikiquote.org/wiki/$1",wikisophia:"wikisophia.org/index.php?title=$1",wikisource:"en.wikisource.org/wiki/$1",wikispecies:"species"+S,wikispot:"wikispot.org/?action=gotowikipage&v=$1",wikiskripta:N+"wikiskripta.eu/index.php/$1",labsconsole:"wikitech"+S,wikiti:"wikiti.denglend.net/index.php?title=$1",wikiversity:"en.wikiversity.org/wiki/$1",wikivoyage:"en.wikivoyage.org/wiki/$1",betawikiversity:"beta.wikiversity.org/wiki/$1",wikiwikiweb:"c2.com/cgi/wiki?$1",wiktionary:"en.wiktionary.org/wiki/$1",wipipedia:"wipipedia.org/index.php/$1",wlug:N+"wlug.org.nz/$1",wmam:"am"+S,wmar:N+"wikimedia.org.ar/wiki/$1",wmat:"mitglieder.wikimedia.at/$1",wmau:"wikimedia.org.au/wiki/$1",wmbd:"bd"+S,wmbe:"be"+S,wmbr:"br"+S,wmca:"ca"+S,wmch:N+"wikimedia.ch/$1",wmcl:N+"wikimediachile.cl/index.php?title=$1",wmcn:"cn"+S,wmco:"co"+S,wmcz:N+"wikimedia.cz/web/$1",wmdc:"wikimediadc.org/wiki/$1",securewikidc:"secure.wikidc.org/$1",wmde:"wikimedia.de/wiki/$1",wmdk:"dk"+S,wmee:"ee"+S,wmec:"ec"+S,wmes:N+"wikimedia.es/wiki/$1",wmet:"ee"+S,wmfdashboard:"outreachdashboard.wmflabs.org/$1",wmfi:"fi"+S,wmfr:"wikimedia.fr/$1",wmge:"ge"+S,wmhi:"hi"+S,wmhk:"meta.wikimedia.org/wiki/Wikimedia_Hong_Kong",wmhu:"wikimedia.hu/wiki/$1",wmid:"id"+S,wmil:N+"wikimedia.org.il/$1",wmin:"wiki.wikimedia.in/$1",wmit:"wiki.wikimedia.it/wiki/$1",wmke:"meta.wikimedia.org/wiki/Wikimedia_Kenya",wmmk:"mk"+S,wmmx:"mx"+S,wmnl:"nl"+S,wmnyc:"nyc"+S,wmno:"no"+S,"wmpa-us":"pa-us"+S,wmph:"meta.wikimedia.org/wiki/Wikimedia_Philippines",wmpl:"pl"+S,wmpt:"pt"+S,wmpunjabi:"punjabi"+S,wmromd:"romd"+S,wmrs:"rs"+S,wmru:"ru"+S,wmse:"se"+S,wmsk:"wikimedia.sk/$1",wmtr:"tr"+S,wmtw:"wikimedia.tw/wiki/index.php5/$1",wmua:"ua"+S,wmuk:"wikimedia.org.uk/wiki/$1",wmve:"wikimedia.org.ve/wiki/$1",wmza:"wikimedia.org.za/wiki/$1",wm2005:"wikimania2005"+S,wm2006:"wikimania2006"+S,wm2007:"wikimania2007"+S,wm2008:"wikimania2008"+S,wm2009:"wikimania2009"+S,wm2010:"wikimania2010"+S,wm2011:"wikimania2011"+S,wm2012:"wikimania2012"+S,wm2013:"wikimania2013"+S,wm2014:"wikimania2014"+S,wm2015:"wikimania2015"+S,wm2016:"wikimania2016"+S,wm2017:"wikimania2017"+S,wm2018:"wikimania2018"+S,wmania:"wikimania"+S,wikimania:"wikimania"+S,wmteam:"wikimaniateam"+S,wmf:"foundation"+S,wmfblog:"blog.wikimedia.org/$1",wmdeblog:"blog.wikimedia.de/$1",wookieepedia:"starwars.wikia.com/wiki/$1",wowwiki:N+"wowwiki.com/$1",wqy:"wqy.sourceforge.net/cgi-bin/index.cgi?$1",wurmpedia:"wurmpedia.com/index.php/$1",viaf:"viaf.org/viaf/$1",zrhwiki:N+"zrhwiki.ch/wiki/$1",zum:"wiki.zum.de/$1",zwiki:N+"zwiki.org/$1",m:"meta"+S,meta:"meta"+S,sep11:"sep11."+C,d:N+"wikidata.org/wiki/$1",minnan:"zh-min-nan."+C,nb:"no."+C,"zh-cfr":"zh-min-nan."+C,"zh-cn":"zh."+C,"zh-tw":"zh."+C,nan:"zh-min-nan."+C,vro:"fiu-vro."+C,cmn:"zh."+C,lzh:"zh-classical."+C,rup:"roa-rup."+C,gsw:"als."+C,"be-tarask":"be-x-old."+C,sgs:"bat-smg."+C,egl:"eml."+C,w:"en."+C,wikt:"en.wiktionary.org/wiki/$1",q:"en.wikiquote.org/wiki/$1",b:"en.wikibooks.org/wiki/$1",n:"en.wikinews.org/wiki/$1",s:"en.wikisource.org/wiki/$1",chapter:"en"+S,v:"en.wikiversity.org/wiki/$1",voy:"en.wikivoyage.org/wiki/$1"};Object.keys(E).forEach(e=>{q[e]=e+".wikipedia.org/wiki/$1"});var L=function(e){let t=e.page||"";if(-1!==t.indexOf(":")){let i=t.match(/^(.*):(.*)/);if(null===i)return e;let a=i[1]||"";if(a=a.toLowerCase(),-1!==a.indexOf(":")){let[,t,i]=a.match(/^:?(.*):(.*)/);if(q.hasOwnProperty(t)&&!1===E.hasOwnProperty(i))return e;e.wiki={wiki:t,lang:i}}else{if(!1===q.hasOwnProperty(a))return e;e.wiki=a}e.page=i[2]}return e};const P=/^:?(category|catégorie|Kategorie|Categoría|Categoria|Categorie|Kategoria|تصنيف|image|file|image|fichier|datei|media):/i,A=/\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]\| ]{4,1500})([\| ].*?)?\]/g,T=/\[\[(.{0,160}?)\]\]([a-z]+)?/gi;var D=function(e){let t=[];if(t=function(e,t){return t.replace(A,(function(t,i,a,n){return n=n||"",e.push({type:"external",site:i+a,text:n.trim(),raw:t}),n})),e}(t,e),t=function(e,t){return t.replace(T,(function(t,i,a){let n=null,r=i;if(i.match(/\|/)&&(r=(i=i.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g,"$1$2")).replace(/(.{2,100})\|.{0,200}/,"$1"),n=i.replace(/.{2,100}?\|/,""),null===n&&r.match(/\|$/)&&(r=r.replace(/\|$/,""),n=r)),r.match(P))return i;let o={page:r,raw:t};return o.page=o.page.replace(/#(.*)/,(e,t)=>(o.anchor=t,"")),o=L(o),o.wiki&&(o.type="interwiki"),null!==n&&n!==o.page&&(o.text=n),a&&(o.text=o.text||o.page,o.text+=a.trim()),o.page&&!1===/^[A-Z]/.test(o.page)&&(o.text||(o.text=o.page),o.page=o.page),e.push(o),i})),e}(t,e),0!==t.length)return t};const I=new RegExp("^[ \n\t]*?#("+k.redirects.join("|")+") *?(\\[\\[.{2,180}?\\]\\])","i");var M=function(e){return!(!e||e.length>500)&&I.test(e)},R=function(e){let t=e.match(I);if(t&&t[2]){return(D(t[2])||[])[0]}return{}};const U=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],B=`< ?(${U.join("|")}) ?[^>]{0,200}?>`,K=`< ?/ ?(${U.join("|")}) ?>`,F=new RegExp(`${B}[\\s\\S]+?${K}`,"ig");var W=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(F," ")).replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%\.\-#:;'" ]{2,100}\/? ?> ?/g," ")).replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g," ")).replace(/(.*?)<\/i>/g,"''$1''")).replace(/(.*?)<\/b>/g,"'''$1'''")).replace(/(.*?)<\/sub>/g,"{{sub|$1}}")).replace(/(.*?)<\/sup>/g,"{{sup|$1}}")).replace(/ ?<[ \/]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ \/]?> ?/g," ")).replace(/ ?<[ \/]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ \/]?> ?/g," ")).replace(/ ?<[ \/]?h[0-9][ \/]?> ?/g," ")).replace(/ ?< ?br ?\/> ?/g,"\n")).trim()};var Y=function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(//g,"")).replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi,"")).replace(/~~{1,3}/g,"")).replace(/\r/g,"")).replace(/\u3002/g,". ")).replace(/----/g,"")).replace(/\{\{\}\}/g," – ")).replace(/\{\{\\\}\}/g," / ")).replace(/ /g," "),e=(e=(e=W(e)).replace(/\([,;: ]+?\)/g,"")).replace(/{{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,"")};const Z=/[\\\.$]/,H=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")};var G=function(e={}){let t=Object.keys(e);for(let i=0;ie.json(t));a.length>0&&(i.paragraphs=a)}if(!0===t.images){let a=e.images().map(e=>e.json(t));a.length>0&&(i.images=a)}if(!0===t.tables){let a=e.tables().map(e=>e.json(t));a.length>0&&(i.tables=a)}if(!0===t.templates){let a=e.templates().map(e=>e.json());a.length>0&&(i.templates=a,!0===t.encode&&i.templates.forEach(e=>G(e)))}if(!0===t.infoboxes){let a=e.infoboxes().map(e=>e.json(t));a.length>0&&(i.infoboxes=a)}if(!0===t.lists){let a=e.lists().map(e=>e.json(t));a.length>0&&(i.lists=a)}if(!0===t.references||!0===t.citations){let a=e.references().map(e=>e.json(t));a.length>0&&(i.references=a)}return!0===t.sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const X={type:"internal"},Q=function(e){e=e||{},e=Object.assign({},X,e),Object.defineProperty(this,"data",{enumerable:!1,value:e})},ee={text:function(e){void 0!==e&&(this.data.text=e);let t=this.data.text||this.data.page||"";return t=t.replace(/''+/g,""),t},json:function(){let e={text:this.data.text,type:this.type()};"internal"===e.type?e.page=this.page():"interwiki"===e.type?e.wiki=this.wiki():e.site=this.site();let t=this.anchor();return t&&(e.anchor=t),e},wikitext:function(){return this.data.raw||""},page:function(e){return void 0!==e&&(this.data.page=e),this.data.page},anchor:function(e){return void 0!==e&&(this.data.anchor=e),this.data.anchor||""},wiki:function(e){return void 0!==e&&(this.data.wiki=e),this.data.wiki},type:function(e){return void 0!==e&&(this.data.type=e),this.data.type},site:function(e){return void 0!==e&&(this.data.site=e),this.data.site},href:function(){let e=this.type();if("external"===e)return this.site();let t=this.page();t=t.replace(/ /g,"_"),t=encodeURIComponent(t);let i="";if("interwiki"===e){let e=this.wiki();i="https://en.wikipedia.org/wiki/$1",q.hasOwnProperty(e)&&(i="http://"+q[this.wiki()]),i=i.replace(/\$1/g,t)}else i="./"+this.page();return this.anchor()&&(i+="#"+this.anchor()),i}};Object.keys(ee).forEach(e=>{Q.prototype[e]=ee[e]});var te=Q;var ie=function(e){let t=e.text,i=D(t)||[];e.links=i.map(e=>(t=t.replace(e.raw,e.text||e.page||""),new te(e))),t=t.replace(/\[\[File:(.{2,80}?)\|([^\]]+?)\]\](\w{0,5})/g,"$1"),e.text=t};var ae=function(e){let t=[],i=[],a=e.text||"";return a=a.replace(/'''''(.{0,200}?)'''''/g,(e,a)=>(t.push(a),i.push(a),a)),a=a.replace(/''''(.{0,200}?)''''/g,(e,i)=>(t.push(`'${i}'`),`'${i}'`)),a=a.replace(/'''(.{0,200}?)'''/g,(e,i)=>(t.push(i),i)),a=a.replace(/''(.{0,200}?)''/g,(e,t)=>(i.push(t),t)),e.text=a,t.length>0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e};const ne=/^[0-9,.]+$/,re={text:!0,links:!0,formatting:!0,numbers:!0};var oe=function(e,t){t=d(t,re);let i={},a=e.text();if(!0===t.text&&(i.text=a),!0===t.numbers&&ne.test(a)){let e=Number(a.replace(/,/g,""));!1===isNaN(e)&&(i.number=e)}return t.links&&e.links().length>0&&(i.links=e.links().map(e=>e.json())),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i};const se=function(e={}){Object.defineProperty(this,"data",{enumerable:!1,value:e})},le={links:function(e){let t=this.data.links||[];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page===e);return void 0===i?[]:[i]}return t},interwiki:function(){return this.links().filter(e=>void 0!==e.wiki)},bolds:function(){return this.data&&this.data.fmt&&this.data.fmt.bold&&this.data.fmt.bold||[]},italics:function(){return this.data&&this.data.fmt&&this.data.fmt.italic&&this.data.fmt.italic||[]},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return oe(this,e)},wikitext:function(){return this.data.wiki||""},isEmpty:function(){return""===this.data.text}};Object.keys(le).forEach(e=>{se.prototype[e]=le[e]});const ce={links:"link",bolds:"bold",italics:"italic"};Object.keys(ce).forEach(e=>{se.prototype[ce[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}}),se.prototype.plaintext=se.prototype.text;var ue=se;const pe=["ad","adj","adm","adv","al","alta","approx","apr","apt","arc","ariz","assn","asst","atty","aug","ave","ba","bc","bl","bldg","blvd","brig","bros","ca","cal","calif","capt","cca","cg","cl","cm","cmdr","co","col","colo","comdr","conn","corp","cpl","cres","ct","cyn","dak","dec","def","dept","det","dg","dist","dl","dm","dr","ea","eg","eng","esp","esq","est","etc","ex","exp","feb","fem","fig","fl oz","fl","fla","fm","fr","ft","fy","ga","gal","gb","gen","gov","hg","hon","hr","hrs","hwy","hz","ia","ida","ie","inc","inf","jan","jd","jr","jul","jun","kan","kans","kb","kg","km","kmph","lat","lb","lit","llb","lm","lng","lt","ltd","lx","ma","maj","mar","masc","mb","md","messrs","mg","mi","min","minn","misc","mister","ml","mlle","mm","mme","mph","mps","mr","mrs","ms","mstr","mt","neb","nebr","nee","no","nov","oct","okla","ont","op","ord","oz","pa","pd","penn","penna","phd","pl","pp","pref","prob","prof","pron","ps","psa","pseud","pt","pvt","qt","que","rb","rd","rep","reps","res","rev","sask","sec","sen","sens","sep","sept","sfc","sgt","sir","situ","sq ft","sq","sr","ss","st","supt","surg","tb","tbl","tbsp","tce","td","tel","temp","tenn","tex","tsp","univ","usafa","ut","va","vb","ver","vet","vitro","vivo","vol","vs","vt","wis","wisc","wr","wy","wyo","yb","µg"].concat("[^]][^]]"),me=new RegExp("(^| |')("+pe.join("|")+")[.!?] ?$","i"),de=/[ .'][A-Z].? *?$/i,he=/\.\.\.* +?$/,ge=/ c\.\s$/,ke=/\p{Letter}/iu;var fe=function(e){let t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;let a=function(e){let t=e.split(/(\n+)/);return t=t.filter(e=>e.match(/\S/)),t=t.map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s+|$)/g)})),function(e){let t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t)}(e);for(let e=0;ei.length)return!1;const a=e.match(/"/g);return!(a&&a.length%2!=0&&e.length<900)}(n))?i[e+1]=i[e]+(i[e+1]||""):i[e]&&i[e].length>0&&(t.push(i[e]),i[e]="");var n;return 0===t.length?[e]:t};function be(e){let t={wiki:e,text:e};var i;return ie(t),t.text=(i=(i=(i=t.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(i=r.trim_whitespace(i)).replace(/ +\.$/,".")),t=ae(t),new ue(t)}var we=be,ye=function(e){let t=fe(e.wiki);t=t.map(be),t[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t};var $e=function(e){return e=(e=e.replace(/^{{/,"")).replace(/}}$/,"")};var xe=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")};var ve=function(e){let t=e.split(/\n?\|/);t.forEach((e,i)=>{null!==e&&(/\[\[[^\]]+$/.test(e)||/{{[^}]+$/.test(e)||e.split("{{").length!==e.split("}}").length||e.split("[[").length!==e.split("]]").length)&&(t[i+1]=t[i]+"|"+t[i+1],t[i]=null)}),t=t.filter(e=>null!==e),t=t.map(e=>(e||"").trim());for(let e=t.length-1;e>=0;e-=1){""===t[e]&&t.pop();break}return t};const je=/^[\p{Letter}0-9\._\- '()œ]+=/iu,_e={template:!0,list:!0,prototype:!0};var ze=function(e,t){let i=0;return e.reduce((e,a="")=>{if(a=a.trim(),!0===je.test(a)){let t=function(e){let t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();let a=t.slice(1).join("=");return _e.hasOwnProperty(i)&&(i="_"+i),{key:i,val:a.trim()}}(a);if(t.key)return e[t.key]=t.val,e}if(t&&t[i]){e[t[i]]=a}else e.list=e.list||[],e.list.push(a);return i+=1,e},{})};const Oe={classname:!0,style:!0,align:!0,margin:!0,left:!0,break:!0,boxsize:!0,framestyle:!0,item_style:!0,collapsible:!0,list_style_type:!0,"list-style-type":!0,colwidth:!0};var Ee=function(e){return Object.keys(e).forEach(t=>{!0===Oe[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]}),e};const Ce=we,Se=function(e,t){let i=Ce(e);return"json"===t?i.json():"raw"===t?i:i.text()};var Ne=function(e,t=[],i){e=$e(e||"");let a=ve(e),n=a.shift(),r=ze(a,t);return r=Ee(r),r[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach(e=>{r[e]="list"!==e?Se(r[e],i):r[e].map(e=>Se(e,i))}),n&&(r.template=xe(n)),r};const qe=function(e,t){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Le={title:function(){let e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){let t=[];if("number"==typeof e)return t[e];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},text:function(){return""},wikitext:function(){return this.wiki||""},json:function(e={}){let t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=G(t)),t}};Object.keys(Le).forEach(e=>{qe.prototype[e]=Le[e]});var Pe=qe;const Ae=we,Te=function(e){return/^ *?\{\{ *?(cite|citation)/i.test(e)&&/\}\} *?$/.test(e)&&!1===/citation needed/i.test(e)},De=function(e){let t=Ne(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},Ie=function(e){return{template:"citation",type:"inline",data:{},inline:Ae(e)||{}}};var Me=function(e){let t=[],i=e._wiki;i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Te(a)){let n=De(a);n&&t.push({json:n,wiki:e}),i=i.replace(a,"")}else t.push({json:Ie(a),wiki:e});return" "})),i=i.replace(/ ?]{0,200}?\/> ?/gi," "),i=i.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Te(a)){let e=De(a);e&&t.push({json:e,wiki:a}),i=i.replace(a,"")}else t.push({json:Ie(a),wiki:e});return" "})),i=i.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g," "),e._references=t.map(e=>new Pe(e.json,e.wiki)),e._wiki=i};const{trim_whitespace:Re}=r,Ue=we,Be=/^(={1,5})(.{1,200}?)={1,5}$/;var Ke=function(e,t){let i=t.match(Be);if(!i)return e.title="",e.depth=0,e;let a=i[2]||"";a=Ue(a).text(),a=a.replace(/\{\{.+?\}\}/,"");let n={_wiki:a};Me(n),a=n._wiki,a=Re(a);let r=0;return i[1]&&(r=i[1].length-2),e.title=a,e.depth=r,e};var Fe=function(e){let t=[],i=[];e=function(e){return e=e.filter(e=>e&&!0!==/^\|\+/.test(e)),!0===/^{\|/.test(e[0])&&e.shift(),!0===/^\|}/.test(e[e.length-1])&&e.pop(),!0===/^\|-/.test(e[0])&&e.shift(),e}(e);for(let a=0;a0&&(t.push(i),i=[]):(n=n.split(/(?:\|\||!!)/),!n[0]&&n[1]&&n.shift(),n.forEach(e=>{e=(e=e.replace(/^\| */,"")).trim(),i.push(e)}))}return i.length>0&&t.push(i),t};const We=/.*rowspan *?= *?["']?([0-9]+)["']?[ \|]*/,Ye=/.*colspan *?= *?["']?([0-9]+)["']?[ \|]*/;var Ze=function(e){return e=function(e){return e.forEach((t,i)=>{t.forEach((a,n)=>{let r=a.match(We);if(null!==r){let o=parseInt(r[1],10);a=a.replace(We,""),t[n]=a;for(let t=i+1;t{e.forEach((t,i)=>{let a=t.match(Ye);if(null!==a){let n=parseInt(a[1],10);e[i]=t.replace(Ye,"");for(let t=1;te.length>0)}(e))};const He=we,Ge=/^!/,Ve={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},Je=function(e){return(e=He(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},Xe=function(e){if(e.length<=3)return[];let t=e[0].slice(0);t=t.map(e=>(e=e.replace(/^\! */,""),e=He(e).text(),e=(e=Je(e)).toLowerCase()));for(let i=0;ie.trim()),i=Fe(t);if(i=i.filter(e=>e),0===i.length)return[];i=function(e){return e.filter(e=>1!==e.length||!e[0]||!Ge.test(e[0])||!1!==/rowspan/i.test(e[0]))}(i),i=Ze(i);let a=function(e=[]){let t=[];var i;(i=(i=e[0])||[]).length-i.filter(e=>e).length>3&&e.shift();let a=e[0];return a&&a[0]&&a[1]&&(/^!/.test(a[0])||/^!/.test(a[1]))&&(t=a.map(e=>(e=e.replace(/^\! */,""),Je(e))),e.shift()),a=e[0],a&&a[0]&&a[1]&&/^!/.test(a[0])&&/^!/.test(a[1])&&(a.forEach((e,i)=>{e=e.replace(/^\! */,""),e=Je(e),!0===Boolean(e)&&(t[i]=e)}),e.shift()),t}(i);if(!a||a.length<=1){a=Xe(i);let e=i[i.length-1]||[];a.length<=1&&e.length>2&&(a=Xe(i.slice(1)),a.length>0&&(i=i.slice(2)))}return i.map(e=>function(e,t){let i={};return e.forEach((e,a)=>{let n=t[a]||"col"+(a+1),r=He(e);r.text(Je(r.text())),i[n]=r}),i}(e,a))};var et=function(e,t){return e.map(e=>{let i={};return Object.keys(e).forEach(t=>{i[t]=e[t].json()}),!0===t.encode&&(i=G(i)),i})};const tt={},it=function(e=""){return e=(e=(e=(e=e.toLowerCase()).replace(/[_-]/g," ")).replace(/\(.*?\)/,"")).trim()},at=function(e,t=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_wiki",{enumerable:!1,value:t})},nt={links(e){let t=[];if(this.data.forEach(e=>{Object.keys(e).forEach(i=>{t=t.concat(e[i].links())})}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},get(e){let t=this.data[0]||{},i=Object.keys(t).reduce((e,t)=>(e[it(t)]=t,e),{});if("string"==typeof e){let t=it(e);return t=i[t]||t,this.data.map(e=>e[t]?e[t].text():null)}return e=e.map(it).map(e=>i[e]||e),this.data.map(t=>e.reduce((e,i)=>(t[i]?e[i]=t[i].text():e[i]="",e),{}))},keyValue(e){let t=this.json(e);return t.forEach(e=>{Object.keys(e).forEach(t=>{e[t]=e[t].text})}),t},json(e){return e=d(e,tt),et(this.data,e)},text:()=>"",wikitext(){return this._wiki||""}};nt.keyvalue=nt.keyValue,nt.keyval=nt.keyValue,Object.keys(nt).forEach(e=>{at.prototype[e]=nt[e]});var rt=at;const ot=/^\s*{\|/,st=/^\s*\|}/;var lt=function(e){let t=[],i=e._wiki,a=i.split("\n"),n=[];for(let e=0;e0&&(n[n.length-1]+="\n"+a[e]);else{n[n.length-1]+="\n"+a[e];let i=n.pop();t.push(i)}else n.push(a[e]);let r=[];t.forEach(e=>{if(e){i=i.replace(e+"\n",""),i=i.replace(e,"");let t=Qe(e);t&&t.length>0&&r.push(new rt(t,e))}}),r.length>0&&(e._tables=r),e._wiki=i};const ct={sentences:!0};var ut=function(e,t){let i={};return!0===(t=d(t,ct)).sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const pt={sentences:!0,lists:!0,images:!0},mt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},dt={sentences:function(){return this.data.sentences||[]},references:function(){return this.data.references},lists:function(){return this.data.lists},images(){return this.data.images||[]},links:function(e){let t=[];if(this.sentences().forEach(i=>{t=t.concat(i.links(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},interwiki(){let e=[];return this.sentences().forEach(t=>{e=e.concat(t.interwiki())}),e||[]},text:function(e){e=d(e,pt);let t=this.sentences().map(t=>t.text(e)).join(" ");return this.lists().forEach(e=>{t+="\n"+e.text()}),t},json:function(e){return e=d(e,pt),ut(this,e)},wikitext:function(){return this.data.wiki}};dt.citations=dt.references,Object.keys(dt).forEach(e=>{mt.prototype[e]=dt[e]});const ht={sentences:"sentence",references:"reference",citation:"citations",lists:"list",images:"image",links:"link"};Object.keys(ht).forEach(e=>{mt.prototype[ht[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}});var gt=mt;var kt=function(e){let t=[],i=[];const a=e.split("");let n=0;for(let r=0;r0){let e=0,a=0;for(let t=0;ta&&i.push("]"),t.push(i.join("")),i=[]}}return t};const ft=we,bt=new RegExp("("+k.images.join("|")+"):","i");let wt=`(${k.images.join("|")})`;const yt=new RegExp(wt+":(.+?)[\\||\\]]","iu"),$t={thumb:!0,thumbnail:!0,border:!0,right:!0,left:!0,center:!0,top:!0,bottom:!0,none:!0,upright:!0,baseline:!0,middle:!0,sub:!0,super:!0};var xt=function(e,t){let i=e.wiki;kt(i).forEach((function(a){if(!0===bt.test(a)){e.images=e.images||[];let n=function(e,t){let i=e.match(yt);if(null===i||!i[2])return null;let a=`${i[1]}:${i[2]||""}`;a=a.trim();let n=a.charAt(0).toUpperCase()+a.substring(1);if(n=n.replace(/ /g,"_"),n){let i={file:a,lang:t._lang,domain:t._domain,wiki:e};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");let n=Ne(e),r=n.list||[];return n.alt&&(i.alt=n.alt),r=r.filter(e=>!1===$t.hasOwnProperty(e)),r[r.length-1]&&(i.caption=ft(r[r.length-1])),new O(i)}return null}(a,t);n&&e.images.push(n),i=i.replace(a,"")}})),e.wiki=i};const vt={},jt=function(e,t=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},_t={lines(){return this.data},links(e){let t=[];if(this.lines().forEach(e=>{t=t.concat(e.links())}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},json(e){return e=d(e,vt),this.lines().map(t=>t.json(e))},text(){return((e,t)=>e.map(e=>" * "+e.text(t)).join("\n"))(this.data)},wikitext(){return this.wiki||""}};Object.keys(_t).forEach(e=>{jt.prototype[e]=_t[e]});var zt=jt;const Ot=we,Et=/^[#\*:;\|]+/,Ct=/^\*+[^:,\|]{4}/,St=/^ ?\#[^:,\|]{4}/,Nt=/[a-z_0-9\]\}]/i,qt=function(e){return Et.test(e)||Ct.test(e)||St.test(e)},Lt=function(e,t){let i=[];for(let a=t;ae&&Nt.test(e)),i=function(e){let t=1;e=e.filter(e=>e);for(let i=0;i0&&(a.push(t),e+=t.length-1)}else n.push(i[e]);e.lists=a.map(e=>new zt(e,t)),e.wiki=n.join("\n")}};var Dt=function(e,t){let i=e._wiki,a=i.split(At);a=a.filter(e=>e&&e.trim().length>0),a=a.map(e=>{let i={wiki:e,lists:[],sentences:[],images:[]};return Tt.list(i),Tt.image(i,t),Pt(i),new gt(i)}),e._wiki=i,e._paragraphs=a};var It=function(e){let t=0,i=[],a=[];for(let n=e.indexOf("{");-1!==n&&n0?n++:n=e.indexOf("{",n+1)){let r=e[n];if("{"===r&&(t+=1),t>0){if("}"===r&&(t-=1,0===t)){a.push(r);let e=a.join("");a=[],/\{\{/.test(e)&&/\}\}/.test(e)&&i.push(e);continue}if(1===t&&"{"!==r&&"}"!==r){t=0,a=[];continue}a.push(r)}}return i};var Mt=function(e){let t=null;return t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+?)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1],t&&(t=t.replace(/:.*/,""),t=xe(t)),t||null};const Rt=/\{\{/,Ut=function(e){return{body:e=e.replace(/#invoke:/,""),name:Mt(e),children:[]}},Bt=function(e){let t=e.body.substr(2);return t=t.replace(/\}\}$/,""),e.children=It(t),e.children=e.children.map(Ut),0===e.children.length||e.children.forEach(e=>{let t=e.body.substr(2);return Rt.test(t)?Bt(e):null}),e};var Kt=function(e){let t=It(e);return t=t.map(Ut),t=t.map(Bt),t};var Ft=["anchor","defaultsort","use list-defined references","void","pp","pp-move-indef","pp-semi-indef","pp-vandalism","r","#tag","div col","pope list end","shipwreck list end","starbox end","end box","end","s-end"].reduce((e,t)=>(e[t]=!0,e),{}),Wt={"gnf protein box":!0,"automatic taxobox":!0,"chembox ":!0,editnotice:!0,geobox:!0,hybridbox:!0,ichnobox:!0,infraspeciesbox:!0,mycomorphbox:!0,oobox:!0,"paraphyletic group":!0,speciesbox:!0,subspeciesbox:!0,"starbox short":!0,taxobox:!0,nhlteamseason:!0,"asian games bid":!0,"canadian federal election results":!0,"dc thomson comic strip":!0,"daytona 24 races":!0,edencharacter:!0,"moldova national football team results":!0,samurai:!0,protein:!0,"sheet authority":!0,"order-of-approx":!0,"bacterial labs":!0,"medical resources":!0,ordination:!0,"hockey team coach":!0,"hockey team gm":!0,"pro hockey team":!0,"hockey team player":!0,"hockey team start":!0,mlbbioret:!0};const Yt=new RegExp("^(subst.)?("+k.infoboxes.join("|")+")[: \n]","i"),Zt=/^infobox /i,Ht=/ infobox$/i,Gt=/$Year in [A-Z]/i;var Vt=function(e){return!0===Wt.hasOwnProperty(e)||(!!Yt.test(e)||(!(!Zt.test(e)&&!Ht.test(e))||!!Gt.test(e)))},Jt=function(e={}){let t=e.template.match(Yt),i=e.template;t&&t[0]&&(i=i.replace(t[0],"")),i=i.trim();let a={template:"infobox",type:i,data:e};return delete a.data.template,delete a.data.list,a};let Xt={imdb:"imdb name","imdb episodess":"imdb episode",localday:"currentday",localdayname:"currentdayname",localyear:"currentyear","birth date based on age at death":"birth based on age as of date","bare anchored list":"anchored list",cvt:"convert",cricon:"flagicon",sfrac:"frac",sqrt:"radic","unreferenced section":"unreferenced",redir:"redirect",sisterlinks:"sister project links","main article":"main"},Qt={date:["byline","dateline"],citation:["cite","source","source-pr","source-science"],flagcountry:["cr","cr-rt"],trunc:["str left","str crop"],percentage:["pct","percentage"],rnd:["rndfrac","rndnear"],abbr:["tooltip","abbrv","define"],sfn:["sfnref","harvid","harvnb"],"birth date and age":["death date and age","bda"],currentmonth:["localmonth","currentmonthname","currentmonthabbrev"],currency:["monnaie","unité","nombre","nb","iso4217"],coord:["coor","coor title dms","coor title dec","coor dms","coor dm","coor dec"],"columns-list":["cmn","col-list","columnslist","collist"],nihongo:["nihongo2","nihongo3","nihongo-s","nihongo foot"],plainlist:["flatlist","ublist","plain list"],"winning percentage":["winpct","winperc"],"collapsible list":["unbulleted list","ubl"],"election box begin":["election box begin no change","election box begin no party","election box begin no party no change","election box inline begin","election box inline begin no change"],"election box candidate":["election box candidate for alliance","election box candidate minor party","election box candidate no party link no change","election box candidate with party link","election box candidate with party link coalition 1918","election box candidate with party link no change","election box inline candidate","election box inline candidate no change","election box inline candidate with party link","election box inline candidate with party link no change","election box inline incumbent"],"4teambracket":["2teambracket","4team2elimbracket","8teambracket","16teambracket","32teambracket","4roundbracket-byes","cwsbracket","nhlbracket","nhlbracket-reseed","4teambracket-nhl","4teambracket-ncaa","4teambracket-mma","4teambracket-mlb","16teambracket-two-reseeds","8teambracket-nhl","8teambracket-mlb","8teambracket-ncaa","8teambracket-afc","8teambracket-afl","8teambracket-tennis3","8teambracket-tennis5","16teambracket-nhl","16teambracket-nhl divisional","16teambracket-nhl-reseed","16teambracket-nba","16teambracket-swtc","16teambracket-afc","16teambracket-tennis3","16teambracket-tennis5"],start:["end","birth","death","start date","end date","birth date","death date","start date and age","end date and age","dob"],"start-date":["end-date","birth-date","death-date","birth-date and age","birth-date and given age","death-date and age","death-date and given age"],tl:["lts","t","tfd links","tiw","tltt","tetl","tsetl","ti","tic","tiw","tlt","ttl","twlh","tl2","tlu","demo","hatnote","xpd","para","elc","xtag","mli","mlix","#invoke","url"]};Object.keys(E).forEach(e=>{Xt["ipa-"+e]="ipa",Xt["ipac-"+e]="ipac"}),Object.keys(Qt).forEach(e=>{Qt[e].forEach(t=>{Xt[t]=e})});var ei=Xt;let ti={p1:0,p2:1,p3:2,resize:1,lang:1,"rtl-lang":1,l:2,h:1,sort:1};["defn","lino","finedetail","nobold","noitalic","nocaps","vanchor","rnd","date","taste","monthname","baseball secondary style","lang-de","nowrap","nobr","big","cquote","pull quote","small","smaller","midsize","larger","big","kbd","bigger","large","mono","strongbad","stronggood","huge","xt","xt2","!xt","xtn","xtd","dc","dcr","mxt","!mxt","mxtn","mxtd","bxt","!bxt","bxtn","bxtd","delink","pre","var","mvar","pre2","code"].forEach(e=>{ti[e]=0}),Object.keys(E).forEach(e=>{ti["lang-"+e]=0});var ii=ti;var ai={titlecase:e=>e.charAt(0).toUpperCase()+e.substring(1),sisterProjects:{wikt:"wiktionary",commons:"commons",c:"commons",commonscat:"commonscat",n:"wikinews",q:"wikiquote",s:"wikisource",a:"wikiauthor",b:"wikibooks",voy:"wikivoyage",v:"wikiversity",d:"wikidata",species:"wikispecies",m:"meta",mw:"mediawiki"},getLang:function(e){let t=e.match(/ipac?-(.+)/);return null!==t?!0===E.hasOwnProperty(t[1])?E[t[1]].english_title:t[1]:null},percentage:function(e){if(!e.numerator&&!e.denominator)return null;let t=Number(e.numerator)/Number(e.denominator);t*=100;let i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},toNumber:function(e=""){if("number"==typeof e)return e;e=(e=e.replace(/,/g,"")).replace(/−/g,"-");let t=Number(e);return isNaN(t)?e:t}},ni={ra:e=>{let t=Ne(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:e=>(Ne(e,["degrees"]).degrees||"")+"°",hms2deg:e=>{let t=Ne(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:e=>{let t=Ne(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},sortname:e=>{let t=Ne(e,["first","last","target","sort"]),i=`${t.first||""} ${t.last||""}`;return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=` (${t.dab})`,t.target&&(t.target+=` (${t.dab})`)),t.target?`[[${t.target}|${i}]]`:`[[${i}]]`)},"first word":e=>{let t=Ne(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:e=>{let t=Ne(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":e=>{let t=Ne(e,["str","start","end"]),i=parseInt(t.start,10)-1,a=parseInt(t.end,10);return t.str.substr(i,a)},reign:e=>{let t=Ne(e,["start","end"]);return`(r. ${t.start} – ${t.end})`},circa:e=>"c. "+Ne(e,["year"]).year,"decade link":e=>{let t=Ne(e,["year"]);return`${t.year}|${t.year}s`},decade:e=>{let t=Ne(e,["year"]),i=Number(t.year);return i=10*parseInt(i/10,10),i+"s"},century:e=>{let t=Ne(e,["year"]),i=Number(t.year);return i=parseInt(i/100,10)+1,""+i},radic:e=>{let t=Ne(e,["after","before"]);return`${t.before||""}√${t.after||""}`},"medical cases chart/row":e=>e,oldstyledate:e=>{let t=Ne(e,["date","year"]);return t.year?t.date+" "+t.year:t.date},braces:e=>{let t=Ne(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},hlist:e=>{let t=Ne(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:e=>(Ne(e).list||[]).join(", "),catlist:e=>(Ne(e).list||[]).join(", "),"br separated entries":e=>(Ne(e).list||[]).join("\n\n"),"comma separated entries":e=>(Ne(e).list||[]).join(", "),"anchored list":e=>{let t=Ne(e).list||[];return t=t.map((e,t)=>`${t+1}. ${e}`),t.join("\n\n")},"bulleted list":e=>{let t=Ne(e).list||[];return t=t.filter(e=>e),t=t.map(e=>"• "+e),t.join("\n\n")},plainlist:e=>{let t=(e=$e(e)).split("|").slice(1);return t=t.join("|").split(/\n ?\* ?/),t=t.filter(e=>e),t.join("\n\n")},term:e=>Ne(e,["term"]).term+":",linum:e=>{let t=Ne(e,["num","text"]);return`${t.num}. ${t.text}`},"block indent":e=>{let t=Ne(e);return t[1]?"\n"+t[1]+"\n":""},lbs:e=>{let t=Ne(e,["text"]);return`[[${t.text} Lifeboat Station|${t.text}]]`},lbc:e=>{let t=Ne(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}-class]]`},lbb:e=>{let t=Ne(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}]]`},"#dateformat":e=>(e=e.replace(/:/,"|"),Ne(e,["date","format"]).date),lc:e=>(e=e.replace(/:/,"|"),(Ne(e,["text"]).text||"").toLowerCase()),uc:e=>(e=e.replace(/:/,"|"),(Ne(e,["text"]).text||"").toUpperCase()),lcfirst:e=>{e=e.replace(/:/,"|");let t=Ne(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},ucfirst:e=>{e=e.replace(/:/,"|");let t=Ne(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:e=>{e=e.replace(/:/,"|");let t=Ne(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:e=>{e=e.replace(/:/,"|");let t=Ne(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbrlink:e=>{let t=Ne(e,["abbr","page"]);return t.page?`[[${t.page}|${t.abbr}]]`:`[[${t.abbr}]]`},own:e=>{let t=Ne(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},formatnum:e=>{e=e.replace(/:/,"|");let t=Ne(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},frac:e=>{let t=Ne(e,["a","b","c"]);return t.c?`${t.a} ${t.b}/${t.c}`:t.b?`${t.a}/${t.b}`:"1/"+t.b},convert:e=>{let t=Ne(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?`${t.num} ${t.two} ${t.three} ${t.four}`:`${t.num} ${t.two} ${t.three}`:`${t.num} ${t.two}`},tl:e=>{let t=Ne(e,["first","second"]);return t.second||t.first},won:e=>{let t=Ne(e,["text"]);return t.place||t.text||ai.titlecase(t.template)},tag:e=>{let t=Ne(e,["tag","open"]);const i={span:!0,div:!0,p:!0};return t.open&&"pair"!==t.open?"":i[t.tag]?t.content||"":`<${t.tag} ${t.attribs||""}>${t.content||""}`},plural:e=>{e=e.replace(/plural:/,"plural|");let t=Ne(e,["num","word"]),i=Number(t.num),a=t.word;return 1!==i&&(/.y$/.test(a)?a=a.replace(/y$/,"ies"):a+="s"),i+" "+a},dec:e=>{let t=Ne(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:e=>{let t=Ne(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());let a=i||"";return t.p&&(a=t.p+a),t.s&&(a=t.s+a),(t.u||t.ul||t.upl)&&(a=a+" "+(t.u||t.ul||t.upl)),a},percentage:e=>{let t=Ne(e,["numerator","denominator","decimals"]),i=ai.percentage(t);return null===i?"":i+"%"},"percent-done":e=>{let t=Ne(e,["done","total","digits"]),i=ai.percentage({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":`${t.done} (${i}%) done`}},ri=[["🇦🇩","and","andorra"],["🇦🇪","are","united arab emirates"],["🇦🇫","afg","afghanistan"],["🇦🇬","atg","antigua and barbuda"],["🇦🇮","aia","anguilla"],["🇦🇱","alb","albania"],["🇦🇲","arm","armenia"],["🇦🇴","ago","angola"],["🇦🇶","ata","antarctica"],["🇦🇷","arg","argentina"],["🇦🇸","asm","american samoa"],["🇦🇹","aut","austria"],["🇦🇺","aus","australia"],["🇦🇼","abw","aruba"],["🇦🇽","ala","åland islands"],["🇦🇿","aze","azerbaijan"],["🇧🇦","bih","bosnia and herzegovina"],["🇧🇧","brb","barbados"],["🇧🇩","bgd","bangladesh"],["🇧🇪","bel","belgium"],["🇧🇫","bfa","burkina faso"],["🇧🇬","bgr","bulgaria"],["🇧🇬","bul","bulgaria"],["🇧🇭","bhr","bahrain"],["🇧🇮","bdi","burundi"],["🇧🇯","ben","benin"],["🇧🇱","blm","saint barthélemy"],["🇧🇲","bmu","bermuda"],["🇧🇳","brn","brunei darussalam"],["🇧🇴","bol","bolivia"],["🇧🇶","bes","bonaire, sint eustatius and saba"],["🇧🇷","bra","brazil"],["🇧🇸","bhs","bahamas"],["🇧🇹","btn","bhutan"],["🇧🇻","bvt","bouvet island"],["🇧🇼","bwa","botswana"],["🇧🇾","blr","belarus"],["🇧🇿","blz","belize"],["🇨🇦","can","canada"],["🇨🇨","cck","cocos (keeling) islands"],["🇨🇩","cod","congo"],["🇨🇫","caf","central african republic"],["🇨🇬","cog","congo"],["🇨🇭","che","switzerland"],["🇨🇮","civ","côte d'ivoire"],["🇨🇰","cok","cook islands"],["🇨🇱","chl","chile"],["🇨🇲","cmr","cameroon"],["🇨🇳","chn","china"],["🇨🇴","col","colombia"],["🇨🇷","cri","costa rica"],["🇨🇺","cub","cuba"],["🇨🇻","cpv","cape verde"],["🇨🇼","cuw","curaçao"],["🇨🇽","cxr","christmas island"],["🇨🇾","cyp","cyprus"],["🇨🇿","cze","czech republic"],["🇩🇪","deu","germany"],["🇩🇪","ger","germany"],["🇩🇯","dji","djibouti"],["🇩🇰","dnk","denmark"],["🇩🇲","dma","dominica"],["🇩🇴","dom","dominican republic"],["🇩🇿","dza","algeria"],["🇪🇨","ecu","ecuador"],["🇪🇪","est","estonia"],["🇪🇬","egy","egypt"],["🇪🇭","esh","western sahara"],["🇪🇷","eri","eritrea"],["🇪🇸","esp","spain"],["🇪🇹","eth","ethiopia"],["🇫🇮","fin","finland"],["🇫🇯","fji","fiji"],["🇫🇰","flk","falkland islands (malvinas)"],["🇫🇲","fsm","micronesia"],["🇫🇴","fro","faroe islands"],["🇫🇷","fra","france"],["🇬🇦","gab","gabon"],["🇬🇧","gbr","united kingdom"],["🇬🇩","grd","grenada"],["🇬🇫","guf","french guiana"],["🇬🇬","ggy","guernsey"],["🇬🇭","gha","ghana"],["🇬🇮","gib","gibraltar"],["🇬🇱","grl","greenland"],["🇬🇲","gmb","gambia"],["🇬🇳","gin","guinea"],["🇬🇵","glp","guadeloupe"],["🇬🇶","gnq","equatorial guinea"],["🇬🇷","grc","greece"],["🇬🇸","sgs","south georgia"],["🇬🇹","gtm","guatemala"],["🇬🇺","gum","guam"],["🇬🇼","gnb","guinea-bissau"],["🇬🇾","guy","guyana"],["🇭🇰","hkg","hong kong"],["🇭🇲","hmd","heard island and mcdonald islands"],["🇭🇳","hnd","honduras"],["🇭🇷","hrv","croatia"],["🇭🇹","hti","haiti"],["🇭🇺","hun","hungary"],["🇮🇩","idn","indonesia"],["🇮🇪","irl","ireland"],["🇮🇱","isr","israel"],["🇮🇲","imn","isle of man"],["🇮🇳","ind","india"],["🇮🇴","iot","british indian ocean territory"],["🇮🇶","irq","iraq"],["🇮🇷","irn","iran"],["🇮🇸","isl","iceland"],["🇮🇹","ita","italy"],["🇯🇪","jey","jersey"],["🇯🇲","jam","jamaica"],["🇯🇴","jor","jordan"],["🇯🇵","jpn","japan"],["🇰🇪","ken","kenya"],["🇰🇬","kgz","kyrgyzstan"],["🇰🇭","khm","cambodia"],["🇰🇮","kir","kiribati"],["🇰🇲","com","comoros"],["🇰🇳","kna","saint kitts and nevis"],["🇰🇵","prk","north korea"],["🇰🇷","kor","south korea"],["🇰🇼","kwt","kuwait"],["🇰🇾","cym","cayman islands"],["🇰🇿","kaz","kazakhstan"],["🇱🇦","lao","lao people's democratic republic"],["🇱🇧","lbn","lebanon"],["🇱🇨","lca","saint lucia"],["🇱🇮","lie","liechtenstein"],["🇱🇰","lka","sri lanka"],["🇱🇷","lbr","liberia"],["🇱🇸","lso","lesotho"],["🇱🇹","ltu","lithuania"],["🇱🇺","lux","luxembourg"],["🇱🇻","lva","latvia"],["🇱🇾","lby","libya"],["🇲🇦","mar","morocco"],["🇲🇨","mco","monaco"],["🇲🇩","mda","moldova"],["🇲🇪","mne","montenegro"],["🇲🇫","maf","saint martin (french part)"],["🇲🇬","mdg","madagascar"],["🇲🇭","mhl","marshall islands"],["🇲🇰","mkd","macedonia"],["🇲🇱","mli","mali"],["🇲🇲","mmr","myanmar"],["🇲🇳","mng","mongolia"],["🇲🇴","mac","macao"],["🇲🇵","mnp","northern mariana islands"],["🇲🇶","mtq","martinique"],["🇲🇷","mrt","mauritania"],["🇲🇸","msr","montserrat"],["🇲🇹","mlt","malta"],["🇲🇺","mus","mauritius"],["🇲🇻","mdv","maldives"],["🇲🇼","mwi","malawi"],["🇲🇽","mex","mexico"],["🇲🇾","mys","malaysia"],["🇲🇿","moz","mozambique"],["🇳🇦","nam","namibia"],["🇳🇨","ncl","new caledonia"],["🇳🇪","ner","niger"],["🇳🇫","nfk","norfolk island"],["🇳🇬","nga","nigeria"],["🇳🇮","nic","nicaragua"],["🇳🇱","nld","netherlands"],["🇳🇴","nor","norway"],["🇳🇵","npl","nepal"],["🇳🇷","nru","nauru"],["🇳🇺","niu","niue"],["🇳🇿","nzl","new zealand"],["🇴🇲","omn","oman"],["🇵🇦","pan","panama"],["🇵🇪","per","peru"],["🇵🇫","pyf","french polynesia"],["🇵🇬","png","papua new guinea"],["🇵🇭","phl","philippines"],["🇵🇰","pak","pakistan"],["🇵🇱","pol","poland"],["🇵🇲","spm","saint pierre and miquelon"],["🇵🇳","pcn","pitcairn"],["🇵🇷","pri","puerto rico"],["🇵🇸","pse","palestinian territory"],["🇵🇹","prt","portugal"],["🇵🇼","plw","palau"],["🇵🇾","pry","paraguay"],["🇶🇦","qat","qatar"],["🇷🇪","reu","réunion"],["🇷🇴","rou","romania"],["🇷🇸","srb","serbia"],["🇷🇺","rus","russia"],["🇷🇼","rwa","rwanda"],["🇸🇦","sau","saudi arabia"],["🇸🇧","slb","solomon islands"],["🇸🇨","syc","seychelles"],["🇸🇩","sdn","sudan"],["🇸🇪","swe","sweden"],["🇸🇬","sgp","singapore"],["🇸🇭","shn","saint helena, ascension and tristan da cunha"],["🇸🇮","svn","slovenia"],["🇸🇯","sjm","svalbard and jan mayen"],["🇸🇰","svk","slovakia"],["🇸🇱","sle","sierra leone"],["🇸🇲","smr","san marino"],["🇸🇳","sen","senegal"],["🇸🇴","som","somalia"],["🇸🇷","sur","suriname"],["🇸🇸","ssd","south sudan"],["🇸🇹","stp","sao tome and principe"],["🇸🇻","slv","el salvador"],["🇸🇽","sxm","sint maarten (dutch part)"],["🇸🇾","syr","syrian arab republic"],["🇸🇿","swz","swaziland"],["🇹🇨","tca","turks and caicos islands"],["🇹🇩","tcd","chad"],["🇹🇫","atf","french southern territories"],["🇹🇬","tgo","togo"],["🇹🇭","tha","thailand"],["🇹🇯","tjk","tajikistan"],["🇹🇰","tkl","tokelau"],["🇹🇱","tls","timor-leste"],["🇹🇲","tkm","turkmenistan"],["🇹🇳","tun","tunisia"],["🇹🇴","ton","tonga"],["🇹🇷","tur","turkey"],["🇹🇹","tto","trinidad and tobago"],["🇹🇻","tuv","tuvalu"],["🇹🇼","twn","taiwan"],["🇹🇿","tza","tanzania"],["🇺🇦","ukr","ukraine"],["🇺🇬","uga","uganda"],["🇺🇲","umi","united states minor outlying islands"],["🇺🇸","us","united states"],["🇺🇸","usa","united states"],["🇺🇾","ury","uruguay"],["🇺🇿","uzb","uzbekistan"],["🇻🇦","vat","vatican city"],["🇻🇨","vct","saint vincent and the grenadines"],["🇻🇪","ven","venezuela"],["🇻🇬","vgb","virgin islands, british"],["🇻🇮","vir","virgin islands, u.s."],["🇻🇳","vnm","viet nam"],["🇻🇺","vut","vanuatu"],["🇼🇫","wlf","wallis and futuna"],["🇼🇸","wsm","samoa"],["🇾🇪","yem","yemen"],["🇾🇹","myt","mayotte"],["🇿🇦","zaf","south africa"],["🇿🇲","zmb","zambia"],["🇿🇼 ","zwe","zimbabwe"],["🇺🇳","un","united nations"],["🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿","eng","england"],["🏴󠁧󠁢󠁳󠁣󠁴󠁿","sct","scotland"],["🏴󠁧󠁢󠁷󠁬󠁳󠁿","wal","wales"],["🇪🇺","eu","european union"]];let oi={flag:e=>{let t=Ne(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();let a=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${a[0]||""} [[${a[2]}|${i}]]`},flagcountry:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} [[${i[2]}]]`},flagcu:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} ${i[2]}`},flagicon:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`[[${i[2]}|${i[0]}]]`:""},flagdeco:e=>{let t=Ne(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(ri.find(e=>t.flag===e[1]||t.flag===e[2])||[])[0]||""},fb:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${i[2]} national football team|${i[2]}]]`:""},fbicon:e=>{let t=Ne(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?` [[${i[2]} national football team|${i[0]}]]`:""},flagathlete:e=>{let t=Ne(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ri.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${t.name||""}]] (${i[1].toUpperCase()})`:`[[${t.name||""}]]`}};ri.forEach(e=>{oi[e[1]]=()=>e[0]});var si=oi;const li=ai.titlecase;let ci={};["rh","rh2","yes","no","maybe","eliminated","lost","safe","active","site active","coming soon","good","won","nom","sho","longlisted","tba","success","operational","failure","partial","regional","maybecheck","partial success","partial failure","okay","yes-no","some","nonpartisan","pending","unofficial","unofficial2","usually","rarely","sometimes","any","varies","black","non-album single","unreleased","unknown","perhaps","depends","included","dropped","terminated","beta","table-experimental","free","proprietary","nonfree","needs","nightly","release-candidate","planned","scheduled","incorrect","no result","cmain","calso starring","crecurring","cguest","not yet","optional"].forEach(e=>{ci[e]=e=>{let t=Ne(e,["text"]);return t.text||li(t.template)}});[["active fire","Active"],["site active","Active"],["site inactive","Inactive"],["yes2",""],["no2",""],["ya","✅"],["na","❌"],["nom","Nominated"],["sho","Shortlisted"],["tba","TBA"],["maybecheck","✔️"],["okay","Neutral"],["n/a","N/A"],["sdash","—"],["dunno","?"],["draw",""],["cnone",""],["nocontest",""]].forEach(e=>{ci[e[0]]=t=>Ne(t,["text"]).text||e[1]});var ui=ci,pi=Object.assign({},{"·":"·",dot:"·",middot:"·","•":" • ",",":",","1/2":"1⁄2","1/3":"1⁄3","2/3":"2⁄3","1/4":"1⁄4","3/4":"3⁄4","–":"–",ndash:"–","en dash":"–","spaced ndash":" – ","—":"—",mdash:"—","em dash":"—","number sign":"#",ibeam:"I","&":"&",";":";",ampersand:"&",snds:" – ",snd:" – ","^":" ","!":"|","\\":" /","`":"`","=":"=",bracket:"[","[":"[","*":"*",asterisk:"*","long dash":"———",clear:"\n\n","h.":"ḥ",profit:"▲",loss:"▼",gain:"▲"},ii,ni,si,ui);let mi={};["goodreads author","twitter","facebook","instagram","tumblr","pinterest","espn nfl","espn nhl","espn fc","hockeydb","fifa player","worldcat","worldcat id","nfl player","ted speaker","playmate"].forEach(e=>{mi[e]=["id","name"]});var di=mi;let hi={};["imdb title","imdb name","imdb episode","imdb event","afi film","allmovie title","allgame","tcmdb title","discogs artist","discogs label","discogs release","discogs master","librivox author","musicbrainz artist","musicbrainz label","musicbrainz recording","musicbrainz release","musicbrainz work","youtube","goodreads book","dmoz"].forEach(e=>{hi[e]=["id","title","description","section"]});var gi=hi,ki={ipa:(e,t)=>{let i=Ne(e,["transcription","lang","audio"]);return i.lang=ai.getLang(i.template),i.template="ipa",t.push(i),""},ipac:(e,t)=>{let i=Ne(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=ai.getLang(i.template),i.template="ipac",t.push(i),""},quote:(e,t)=>{let i=Ne(e,["text","author"]);if(t.push(i),i.text){let e=`"${i.text}"`;return i.author&&(e+="\n\n",e+=" - "+i.author),e+"\n"}return""},"cite gnis":(e,t)=>{let i=Ne(e,["id","name","type"]);return i.type="gnis",i.template="citation",t.push(i),""},"spoken wikipedia":(e,t)=>{let i=Ne(e,["file","date"]);return i.template="audio",t.push(i),""},yel:(e,t)=>{let i=Ne(e,["min"]);return t.push(i),i.min?`yellow: ${i.min||""}'`:""},subon:(e,t)=>{let i=Ne(e,["min"]);return t.push(i),i.min?`sub on: ${i.min||""}'`:""},suboff:(e,t)=>{let i=Ne(e,["min"]);return t.push(i),i.min?`sub off: ${i.min||""}'`:""},sfn:(e,t,i,a)=>{let n=Ne(e,["author","year","location"]);return a&&(n.name=n.template,n.teplate=a),t.push(n),""},redirect:(e,t)=>{let i=Ne(e,["redirect"]),a=i.list||[],n=[];for(let e=0;e{let i=Ne(e),a={};Object.keys(ai.sisterProjects).forEach(e=>{!0===i.hasOwnProperty(e)&&(a[ai.sisterProjects[e]]=i[e])});let n={template:"sister project links",links:a};return t.push(n),""},"subject bar":(e,t)=>{let i=Ne(e);Object.keys(i).forEach(e=>{ai.sisterProjects.hasOwnProperty(e)&&(i[ai.sisterProjects[e]]=i[e],delete i[e])});let a={template:"subject bar",links:i};return t.push(a),""},gallery:(e,t)=>{let i=Ne(e),a=(i.list||[]).filter(e=>/^ *File ?:/.test(e));return a=a.map(e=>new O({file:e}).json()),i={template:"gallery",images:a},t.push(i),""},sky:(e,t)=>{let i=Ne(e,["asc_hours","asc_minutes","asc_seconds","dec_sign","dec_degrees","dec_minutes","dec_seconds","distance"]),a={template:"sky",ascension:{hours:i.asc_hours,minutes:i.asc_minutes,seconds:i.asc_seconds},declination:{sign:i.dec_sign,degrees:i.dec_degrees,minutes:i.dec_minutes,seconds:i.dec_seconds},distance:i.distance};return t.push(a),""},"medical cases chart":(e,t)=>{let i=["date","deathsExpr","recoveriesExpr","casesExpr","4thExpr","5thExpr","col1","col1Change","col2","col2Change"],a=Ne(e);a.data=a.data||"";let n=a.data.split("\n").map(e=>{let t=e.split(";"),a={options:new Map},n=0;for(let e=0;e{let i=Ne(e);i.x&&(i.x=i.x.split(",").map(e=>e.trim())),i.y&&(i.y=i.y.split(",").map(e=>e.trim()));let a=1;for(;i["y"+a];)i["y"+a]=i["y"+a].split(",").map(e=>e.trim()),a+=1;return t.push(i),""},"historical populations":(e,t)=>{let i=Ne(e);i.list=i.list||[];let a=[];for(let e=0;e{const i=/^jan /i,a=/^year /i;let n=Ne(e);const r=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];let o={},s=Object.keys(n).filter(e=>i.test(e));s=s.map(e=>e.replace(i,"")),s.forEach(e=>{o[e]=[],r.forEach(t=>{let i=`${t} ${e}`;if(n.hasOwnProperty(i)){let t=ai.toNumber(n[i]);delete n[i],o[e].push(t)}})}),n.byMonth=o;let l={};return Object.keys(n).forEach(e=>{if(a.test(e)){let t=e.replace(a,"");l[t]=n[e],delete n[e]}}),n.byYear=l,t.push(n),""},"weather box/concise c":(e,t)=>{let i=Ne(e);return i.list=i.list.map(e=>ai.toNumber(e)),i.byMonth={"high c":i.list.slice(0,12),"low c":i.list.slice(12,24),"rain mm":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"weather box/concise f":(e,t)=>{let i=Ne(e);return i.list=i.list.map(e=>ai.toNumber(e)),i.byMonth={"high f":i.list.slice(0,12),"low f":i.list.slice(12,24),"rain inch":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"climate chart":(e,t)=>{let i=Ne(e).list||[],a=i[0],n=i[38];i=i.slice(1),i=i.map(e=>(e&&"−"===e[0]&&(e=e.replace(/−/,"-")),e));let r=[];for(let e=0;e<36;e+=3)r.push({low:ai.toNumber(i[e]),high:ai.toNumber(i[e+1]),precip:ai.toNumber(i[e+2])});let o={template:"climate chart",data:{title:a,source:n,months:r}};return t.push(o),""}};let fi={"find a grave":["id","name","work","last","first","date","accessdate"],congbio:["id","name","date"],"hollywood walk of fame":["name"],"wide image":["file","width","caption"],audio:["file","text","type"],rp:["page"],"short description":["description"],"coord missing":["region"],unreferenced:["date"],"taxon info":["taxon","item"],"portuguese name":["first","second","suffix"],geo:["lat","lon","zoom"]};fi=Object.assign(fi,di,gi,ki);var bi=fi;var wi={math:(e,t)=>{let i=Ne(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},isbn:(e,t)=>{let i=Ne(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},"based on":(e,t)=>{let i=Ne(e,["title","author"]);return t.push(i),`${i.title} by ${i.author||""}`},"bbl to t":(e,t)=>{let i=Ne(e,["barrels"]);return t.push(i),"0"===i.barrels?i.barrels+" barrel":i.barrels+" barrels"},mpc:(e,t)=>{let i=Ne(e,["number","text"]);return t.push(i),`[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${i.text||i.number}]`},pengoal:(e,t)=>(t.push({template:"pengoal"}),"✅"),penmiss:(e,t)=>(t.push({template:"penmiss"}),"❌"),"ordered list":(e,t)=>{let i=Ne(e);return t.push(i),i.list=i.list||[],i.list.map((e,t)=>`${t+1}. ${e}`).join("\n\n")},"title year":(e,t,i,a,n)=>{let r=Ne(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b[0-9]{4}\b/);if(e)return e[0]}return r.nomatch||""},"title century":(e,t,i,a,n)=>{let r=Ne(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)(st|nd|rd|th)\b/);if(e)return e[1]||""}return r.nomatch||""},"title decade":(e,t,i,a,n)=>{let r=Ne(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)s\b/);if(e)return e[1]||""}return r.nomatch||""},nihongo:(e,t)=>{let i=Ne(e,["english","kanji","romaji","extra"]);t.push(i);let a=i.english||i.romaji||"";return i.kanji&&(a+=` (${i.kanji})`),a},marriage:(e,t)=>{let i=Ne(e,["spouse","from","to","end"]);t.push(i);let a=i.spouse||"";return i.from&&(i.to?a+=` (m. ${i.from}-${i.to})`:a+=` (m. ${i.from})`),a},"sent off":(e,t)=>{let i=Ne(e,["cards"]),a={template:"sent off",cards:i.cards,minutes:i.list||[]};return t.push(a),"sent off: "+a.minutes.map(e=>e+"'").join(", ")},transl:(e,t)=>{let i=Ne(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""},"collapsible list":(e,t)=>{let i=Ne(e);t.push(i);let a="";if(i.title&&(a+=`'''${i.title}'''\n\n`),!i.list){i.list=[];for(let e=1;e<10;e+=1)i[e]&&(i.list.push(i[e]),delete i[e])}return i.list=i.list.filter(e=>e),a+=i.list.join("\n\n"),a},"columns-list":(e,t)=>{let i=((Ne(e).list||[])[0]||"").split(/\n/).filter(e=>e);return i=i.map(e=>e.replace(/\*/,"")),t.push({template:"columns-list",list:i}),i=i.map(e=>"• "+e),i.join("\n\n")},height:(e,t)=>{let i=Ne(e);t.push(i);let a=[];return["m","cm","ft","in"].forEach(e=>{!0===i.hasOwnProperty(e)&&a.push(i[e]+e)}),a.join(" ")},sic:(e,t)=>{let i=Ne(e,["one","two","three"]),a=(i.one||"")+(i.two||"");return"?"===i.one&&(a=(i.two||"")+(i.three||"")),t.push({template:"sic",word:a}),"y"===i.nolink?a:a+" [sic]"},inrconvert:(e,t)=>{let i=Ne(e,["rupee_value","currency_formatting"]);t.push(i);const a={k:1e3,m:1e6,b:1e9,t:1e12,l:1e5,c:1e7,lc:1e12};if(i.currency_formatting){let e=a[i.currency_formatting]||1;i.rupee_value=i.rupee_value*e}return"inr "+(i.rupee_value||"")},frac:(e,t)=>{let i=Ne(e,["a","b","c"]),a={template:"sfrac"};return i.c?(a.integer=i.a,a.numerator=i.b,a.denominator=i.c):i.b?(a.numerator=i.a,a.denominator=i.b):(a.numerator=1,a.denominator=i.a),t.push(a),a.integer?`${a.integer} ${a.numerator}⁄${a.denominator}`:`${a.numerator}⁄${a.denominator}`},"winning percentage":(e,t)=>{let i=Ne(e,["wins","losses","ties"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=Number(i.ties)||0,o=a+n+r;"y"===i.ignore_ties&&(r=0),r&&(a+=r/2);let s=ai.percentage({numerator:a,denominator:o,decimals:1});return null===s?"":"."+10*s},winlosspct:(e,t)=>{let i=Ne(e,["wins","losses"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=ai.percentage({numerator:a,denominator:a+n,decimals:1});return null===r?"":(r="."+10*r,`${a||0} || ${n||0} || ${r||"-"}`)},"video game release":(e,t)=>{let i=["region","date","region2","date2","region3","date3","region4","date4"],a=Ne(e,i),n={template:"video game release",releases:[]};for(let e=0;e`${e.region}: ${e.date||""}`).join("\n\n")+"\n"},uss:(e,t)=>{let i=Ne(e,["name","id"]);return t.push(i),i.id?`[[USS ${i.name} (${i.id})|USS ''${i.name}'' (${i.id})]]`:`[[USS ${i.name}|USS ''${i.name}'']]`}};const yi={"£":"GB£","¥":"¥","৳":"৳","₩":"₩","€":"€","₱":"₱","₹":"₹","₽":"₽","cn¥":"CN¥","gb£":"GB£","india rs":"₹","indian rupee symbol":"₹","indian rupee":"₹","indian rupees":"₹","philippine peso":"₱","russian ruble":"₽","SK won":"₩","turkish lira":"TRY",a$:"A$",au$:"A$",aud:"A$",bdt:"BDT",brl:"BRL",ca$:"CA$",cad:"CA$",chf:"CHF",cny:"CN¥",czk:"czk",dkk:"dkk",dkk2:"dkk",euro:"€",gbp:"GB£",hk$:"HK$",hkd:"HK$",ils:"ILS",inr:"₹",jpy:"¥",myr:"MYR",nis:"ILS",nok:"NOK",nok2:"NOK",nz$:"NZ$",nzd:"NZ$",peso:"peso",pkr:"₨",r$:"BRL",rmb:"CN¥",rub:"₽",ruble:"₽",rupee:"₹",s$:"sgd",sek:"SEK",sek2:"SEK",sfr:"CHF",sgd:"sgd",shekel:"ILS",sheqel:"ILS",ttd:"TTD",us$:"US$",usd:"US$",yen:"¥",zar:"R"},$i=(e,t)=>{let i=Ne(e,["amount","code"]);t.push(i);let a=i.template||"";"currency"===a?(a=i.code,a||(i.code=a="usd")):""!==a&&"monnaie"!==a&&"unité"!==a&&"nombre"!==a&&"nb"!==a||(a=i.code),a=(a||"").toLowerCase(),"us"===a?i.code=a="usd":"uk"===a&&(i.code=a="gbp");let n=`${yi[a]||""}${i.amount||""}`;return i.code&&!yi[i.code.toLowerCase()]&&(n+=" "+i.code),n};let xi={currency:$i};Object.keys(yi).forEach(e=>{xi[e]=$i});var vi=xi;const ji=864e5,_i=function(e){return new Date(`${e.year}-${e.month||0}-${e.date||1}`).getTime()};var zi={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],timeSince:function(e){let t=new Date(e);if(isNaN(t.getTime()))return"";let i=(new Date).getTime()-t.getTime(),a="ago";i<0&&(a="from now",i=Math.abs(i));let n=i/1e3/60/60/24;return n<365?parseInt(n,10)+" days "+a:parseInt(n/365,10)+" years "+a},delta:function(e,t){e=_i(e);let i=(t=_i(t))-e,a={},n=Math.floor(i/31536e6,10);n>0&&(a.years=n,i-=31536e6*a.years);let r=Math.floor(i/2592e6,10);r>0&&(a.months=r,i-=2592e6*a.months);let o=Math.floor(i/ji,10);return o>0&&(a.days=o),a},toOrdinal:function(e){let t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"}};const Oi=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],Ei=Oi.reduce((e,t,i)=>(0===i||(e[t.toLowerCase()]=i),e),{}),Ci=function(e){return e<10?"0"+e:String(e)};var Si=function(e){let t=String(e.year||"");if(void 0!==e.month&&!0===Oi.hasOwnProperty(e.month))if(void 0===e.date)t=`${Oi[e.month]} ${e.year}`;else{if(t=`${Oi[e.month]} ${e.date}, ${e.year}`,void 0!==e.hour&&void 0!==e.minute){let i=`${Ci(e.hour)}:${Ci(e.minute)}`;void 0!==e.second&&(i=i+":"+Ci(e.second)),t=i+", "+t}e.tz&&(t+=` (${e.tz})`)}return t},Ni=function(e){let t={},i=["year","month","date","hour","minute","second"];for(let a=0;a{let i=Ne(e,["year","month","date","hour","minute","second","timezone"]),a=Ni([i.year,i.month,i.date||i.day]);return i.text=Si(a),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=` (${i.timezone})`),i.hour&&i.minute&&(i.second?i.text=`${i.hour}:${i.minute}:${i.second}, `+i.text:i.text=`${i.hour}:${i.minute}, `+i.text),i.text&&t.push(Li(i)),i.text},natural_date:(e,t)=>{let i=Ne(e,["text"]).text||"",a={};if(/^[0-9]{4}$/.test(i))a.year=parseInt(i,10);else{let e=i.replace(/[a-z]+\/[a-z]+/i,"");e=e.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");let t=new Date(e);!1===isNaN(t.getTime())&&(a.year=t.getFullYear(),a.month=t.getMonth()+1,a.date=t.getDate())}return t.push(Li(a)),i.trim()},one_year:(e,t)=>{let i=Ne(e,["year"]),a=Number(i.year);return t.push(Li({year:a})),String(a)},two_dates:(e,t)=>{let i=Ne(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){let e=Ni([i.birth_year,i.birth_month,i.birth_date]);return t.push(Li(e)),Si(e)}let a=Ni([i.death_year,i.death_month,i.death_date]);return t.push(Li(a)),Si(a)},age:e=>{let t=Pi(e);return qi(t.from,t.to).years||0},"diff-y":e=>{let t=Pi(e),i=qi(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":e=>{let t=Pi(e),i=qi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),a.join(", ")},"diff-ymd":e=>{let t=Pi(e),i=qi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-yd":e=>{let t=Pi(e),i=qi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-d":e=>{let t=Pi(e),i=qi(t.from,t.to),a=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")}};const Ti=["January","February","March","April","May","June","July","August","September","October","November","December"];var Di={currentday:()=>{let e=new Date;return String(e.getDate())},currentdayname:()=>{let e=new Date;return zi.days[e.getDay()]},currentmonth:()=>{let e=new Date;return Ti[e.getMonth()]},currentyear:()=>{let e=new Date;return String(e.getFullYear())},monthyear:()=>{let e=new Date;return Ti[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":()=>{let e=new Date;return e.setMonth(e.getMonth()-1),Ti[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":()=>{let e=new Date;return e.setMonth(e.getMonth()+1),Ti[e.getMonth()]+" "+e.getFullYear()},"time ago":e=>{let t=Ne(e,["date","fmt"]).date;return zi.timeSince(t)},"birth date and age":(e,t)=>{let i=Ne(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?Ai.natural_date(e,t):(t.push(i),i=Ni([i.year,i.month,i.day]),Si(i))},"birth year and age":(e,t)=>{let i=Ne(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return Ai.natural_date(e,t);t.push(i);let a=(new Date).getFullYear()-parseInt(i.birth_year,10);i=Ni([i.birth_year,i.birth_month]);let n=Si(i);return a&&(n+=` (age ${a})`),n},"death year and age":(e,t)=>{let i=Ne(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?Ai.natural_date(e,t):(t.push(i),i=Ni([i.death_year,i.death_month]),Si(i))},"birth date and age2":(e,t)=>{let i=Ne(e,["at_year","at_month","at_day","birth_year","birth_month","birth_day"]);return t.push(i),i=Ni([i.birth_year,i.birth_month,i.birth_day]),Si(i)},"birth based on age as of date":(e,t)=>{let i=Ne(e,["age","year","month","day"]);t.push(i);let a=parseInt(i.age,10),n=parseInt(i.year,10)-a;return n&&a?`${n} (age ${i.age})`:`(age ${i.age})`},"death date and given age":(e,t)=>{let i=Ne(e,["year","month","day","age"]);t.push(i),i=Ni([i.year,i.month,i.day]);let a=Si(i);return i.age&&(a+=` (age ${i.age})`),a},dts:e=>{e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");let t=Ne(e,["year","month","date","bc"]);return t.date&&t.month&&t.year?!0===/[a-z]/.test(t.month)?[t.month,t.date,t.year].join(" "):[t.year,t.month,t.date].join("-"):t.month&&t.year?[t.year,t.month].join("-"):t.year?(t.year<0&&(t.year=Math.abs(t.year)+" BC"),t.year):""},time:()=>{let e=new Date,t=Ni([e.getFullYear(),e.getMonth(),e.getDate()]);return Si(t)},millennium:e=>{let t=Ne(e,["year"]),i=Number(t.year);return i=parseInt(i/1e3,10)+1,t.abbr&&"y"===t.abbr?i<0?zi.toOrdinal(Math.abs(i))+" BC":""+zi.toOrdinal(i):zi.toOrdinal(i)+" millennium"},start:Ai.date,"start-date":Ai.natural_date,birthdeathage:Ai.two_dates,age:Ai.age,"age nts":Ai.age,"age in years":Ai["diff-y"],"age in years and months":Ai["diff-ym"],"age in years, months and days":Ai["diff-ymd"],"age in years and days":Ai["diff-yd"],"age in days":Ai["diff-d"]};function Ii(e){let t=e.pop(),i=Number(e[0]||0),a=Number(e[1]||0),n=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;let r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+a/60+n/3600)}const Mi=function(e){if("number"!=typeof e)return e;let t=1e5;return Math.round(e*t)/t},Ri={s:!0,w:!0};var Ui=function(e){let t=Ne(e);t=function(e){return e.list=e.list||[],e.list=e.list.map(t=>{let i=Number(t);if(!isNaN(i))return i;let a=t.split(/:/);return a.length>1?(e.props=e.props||{},e.props[a[0]]=a.slice(1).join(":"),null):t}),e.list=e.list.filter(e=>null!==e),e}(t);let i=function(e){const t=e.map(e=>typeof e).join("|");return 2===e.length&&"number|number"===t?{lat:e[0],lon:e[1]}:4===e.length&&"number|string|number|string"===t?(Ri[e[1].toLowerCase()]&&(e[0]*=-1),"w"===e[3].toLowerCase()&&(e[2]*=-1),{lat:e[0],lon:e[2]}):6===e.length?{lat:Ii(e.slice(0,3)),lon:Ii(e.slice(3))}:8===e.length?{lat:Ii(e.slice(0,4)),lon:Ii(e.slice(4))}:{}}(t.list);return t.lat=Mi(i.lat),t.lon=Mi(i.lon),t.template="coord",delete t.list,t};var Bi={coord:(e,t)=>{let i=Ui(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":`${i.lat||""}°N, ${i.lon||""}°W`}};const Ki=function(e,t,i,a){let n=Ne(e);return a&&(n.name=n.template,n.template=a),t.push(n),""};var Fi={persondata:Ki,taxobox:Ki,citation:Ki,portal:Ki,reflist:Ki,"cite book":Ki,"cite journal":Ki,"cite web":Ki,"commons cat":Ki,"election box candidate":Ki,"election box begin":Ki,main:Ki};const Wi={adx:"adx",aim:"aim",amex:"amex",asx:"asx",athex:"athex",b3:"b3","B3 (stock exchange)":"B3 (stock exchange)",barbadosse:"barbadosse",bbv:"bbv",bcba:"bcba",bcs:"bcs",bhse:"bhse",bist:"bist",bit:"bit","bm&f bovespa":"b3","bm&f":"b3",bmad:"bmad",bmv:"bmv","bombay stock exchange":"bombay stock exchange","botswana stock exchange":"botswana stock exchange",bpse:"bpse",bse:"bse",bsx:"bsx",bvb:"bvb",bvc:"bvc",bvl:"bvl",bvpasa:"bvpasa",bwse:"bwse","canadian securities exchange":"canadian securities exchange",cse:"cse",darse:"darse",dfm:"dfm",dse:"dse",euronext:"euronext",euronextparis:"euronextparis",fse:"fse",fwb:"fwb",gse:"gse",gtsm:"gtsm",idx:"idx",ise:"ise",iseq:"iseq",isin:"isin",jasdaq:"jasdaq",jse:"jse",kase:"kase",kn:"kn",krx:"krx",lse:"lse",luxse:"luxse","malta stock exchange":"malta stock exchange",mai:"mai",mcx:"mcx",mutf:"mutf",myx:"myx",nag:"nag","nasdaq dubai":"nasdaq dubai",nasdaq:"nasdaq",neeq:"neeq",nepse:"nepse",nex:"nex",nse:"nse",newconnect:"newconnect","nyse arca":"nyse arca",nyse:"nyse",nzx:"nzx","omx baltic":"omx baltic",omx:"omx",ose:"ose","otc expert":"otc expert","otc grey":"otc grey","otc pink":"otc pink",otcqb:"otcqb",otcqx:"otcqx","pfts ukraine stock exchange":"pfts ukraine stock exchange","philippine stock exchange":"philippine stock exchange",prse:"prse",psx:"psx",karse:"karse",qe:"qe","saudi stock exchange":"saudi stock exchange",sehk:"sehk","Stock Exchange of Thailand":"Stock Exchange of Thailand",set:"set",sgx:"sgx",sse:"sse",swx:"swx",szse:"szse",tase:"tase","tsx-v":"tsx-v",tsx:"tsx",tsxv:"tsxv",ttse:"ttse",twse:"twse",tyo:"tyo",wbag:"wbag",wse:"wse","zagreb stock exchange":"zagreb stock exchange","zimbabwe stock exchange":"zimbabwe stock exchange",zse:"zse"},Yi=(e,t)=>{let i=Ne(e,["ticketnumber","code"]);t.push(i);let a=i.template||"";""===a&&(a=i.code),a=(a||"").toLowerCase();let n=Wi[a]||"";return i.ticketnumber&&(n=`${n}: ${i.ticketnumber}`),i.code&&!Wi[i.code.toLowerCase()]&&(n+=" "+i.code),n},Zi={};Object.keys(Wi).forEach(e=>{Zi[e]=Yi});var Hi=Zi;const Gi=function(e){return 1===(e=String(e)).length&&(e="0"+e),e},Vi=function(e,t,i){e[`rd${t}-team${Gi(i)}`]&&(i=Gi(i));let a=e[`rd${t}-score${i}`],n=Number(a);return!1===isNaN(n)&&(a=n),{team:e[`rd${t}-team${i}`],score:a,seed:e[`rd${t}-seed${i}`]}};var Ji=function(e){let t=[],i=Ne(e);for(let e=1;e<7;e+=1){let a=[];for(let t=1;t<16;t+=2){let n=`rd${e}-team`;if(!i[n+t]&&!i[n+Gi(t)])break;{let n=Vi(i,e,t),r=Vi(i,e,t+1);a.push([n,r])}}a.length>0&&t.push(a)}return{template:"playoffbracket",rounds:t}};var Xi={"4teambracket":function(e,t){let i=Ji(e);return t.push(i),""},player:(e,t)=>{let i=Ne(e,["number","country","name","dl"]);t.push(i);let a=`[[${i.name}]]`;if(i.country){let e=(i.country||"").toLowerCase(),t=ri.find(t=>e===t[1]||e===t[2])||[];t&&t[0]&&(a=t[0]+" "+a)}return i.number&&(a=i.number+" "+a),a},goal:(e,t)=>{let i={template:"goal",data:[]},a=Ne(e).list||[];for(let e=0;e{let t=e.note;return t&&(t=` (${t})`),e.min+"'"+t}).join(", "),n},"sports table":(e,t)=>{let i=Ne(e),a={};Object.keys(i).filter(e=>/^team[0-9]/.test(e)).map(e=>i[e].toLowerCase()).forEach(e=>{a[e]={name:i["name_"+e],win:Number(i["win_"+e])||0,loss:Number(i["loss_"+e])||0,tie:Number(i["tie_"+e])||0,otloss:Number(i["otloss_"+e])||0,goals_for:Number(i["gf_"+e])||0,goals_against:Number(i["ga_"+e])||0}});let n={date:i.update,header:i.table_header,teams:a};t.push(n)}},Qi=Object.assign({},{mlbplayer:{props:["number","name","il"],out:"name"},syntaxhighlight:{props:[],out:"code"},samp:{props:["1"],out:"1"},sub:{props:["text"],out:"text"},sup:{props:["text"],out:"text"},chem2:{props:["equation"],out:"equation"},ill:{props:["text","lan1","text1","lan2","text2"],out:"text"},abbr:{props:["abbr","meaning","ipa"],out:"abbr"}},wi,vi,Di,Bi,Fi,Hi,Ji,Xi,Ji,Xi);let ea=Object.assign({},pi,bi,Qi);Object.keys(ei).forEach(e=>{ea[e]=ea[ei[e]]});var ta=ea;const{isArray:ia,isObject:aa}=r,na=["0","1","2","3","4","5","6","7","8","9"];var ra=function(e,t){let i=e.name;if(!0===Ft.hasOwnProperty(i))return[""];if(!0===Vt(i)){let t=Ne(e.body,[],"raw");return["",Jt(t)]}if(!0===/^cite [a-z]/.test(i)){let t=Ne(e.body);return t.type=t.template,t.template="citation",["",t]}if(!0===ta.hasOwnProperty(i)){if("number"==typeof ta[i]){return[Ne(e.body,na)[String(ta[i])]||""]}if("string"==typeof ta[i])return[ta[i]];if(!0===ia(ta[i])){return["",Ne(e.body,ta[i])]}if(!0===aa(ta[i])){let t=Ne(e.body,ta[i].props);return[t[ta[i].out],t]}if("function"==typeof ta[i]){let a=[];return[ta[i](e.body,a,Ne,null,t),a[0]]}}let a=Ne(e.body);return 0===Object.keys(a).length&&(a=null),["",a]};var oa=function(e,t){let i=Object.keys(e.data).reduce((t,i)=>(e.data[i]&&(t[i]=e.data[i].json()),t),{});return!0===t.encode&&(i=G(i)),i};const{isArray:sa}=r,la=(e="")=>(e=(e=e.toLowerCase()).replace(/[-_]/g," ")).trim(),ca=function(e,t){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},ua={type:function(){return this._type},links:function(e){let t=[];if(Object.keys(this.data).forEach(e=>{this.data[e].links().forEach(e=>t.push(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},image:function(){let e=this.data.image||this.data.image2||this.data.logo||this.data.image_skyline||this.data.image_flag;if(!e)return null;let t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new O(t)},get:function(e){let t=Object.keys(this.data);if("string"==typeof e){let i=la(e);for(let e=0;e{for(let i=0;i(this.data[t]&&(e[t]=this.data[t].text()),e),{})}};Object.keys(ua).forEach(e=>{ca.prototype[e]=ua[e]}),ca.prototype.data=ca.prototype.keyValue,ca.prototype.template=ca.prototype.type,ca.prototype.images=ca.prototype.image;var pa=ca;const ma=we,da={text:function(){let e=this._text||"";return ma(e).text()},json:function(){return this.data||{}},wikitext:function(){return this.wiki||""}},ha=function(e,t="",i=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_text",{enumerable:!1,value:t}),Object.defineProperty(this,"wiki",{enumerable:!1,value:i})};Object.keys(da).forEach(e=>{ha.prototype[e]=da[e]});var ga=ha;const ka=/^(cite |citation)/i,fa={citation:!0,refn:!0,harvnb:!0,source:!0};var ba=function(e,t){let i={infoboxes:[],templates:[],references:[]};return e.forEach(e=>{let a=e.json,n=a.template||a.type||a.name;if(!0!==fa[n]&&!0!==ka.test(n))return"infobox"===a.template&&"yes"!==a.subbox?(a.domain=t,a.data=a.data||{},void i.infoboxes.push(new pa(a,e.wiki))):void i.templates.push(new ga(a,e.text,e.wiki));i.references.push(new Pe(a,e.wiki))}),i};var wa=function(e,t){let{list:i,wiki:a}=function(e,t){let i=[],a=Kt(e);const n=function(a,r){a.parent=r,a.children&&a.children.length>0&&a.children.forEach(e=>n(e,a));let[o,s]=ra(a,t);a.wiki=o,s&&i.push({name:a.name,wiki:a.body,text:o,json:s});const l=function(e,t,i){e.parent&&(e.parent.body=e.parent.body.replace(t,i),l(e.parent,t,i))};l(a,a.body,a.wiki),e=e.replace(a.body,a.wiki)};return a.forEach(e=>n(e,null)),a.forEach(t=>{e=e.replace(t.body,t.wiki)}),{list:i,wiki:e}}(e._wiki,t),n=t?t._domain:null,{infoboxes:r,references:o,templates:s}=ba(i,n);e._infoboxes=e._infoboxes||[],e._references=e._references||[],e._templates=e._templates||[],e._infoboxes=e._infoboxes.concat(r),e._references=e._references.concat(o),e._templates=e._templates.concat(s),e._wiki=a};const ya=we;var $a=function(e,t,i){e.text=e.text.replace(/]*?)>([\s\S]+?)<\/gallery>/g,(a,n,r)=>{let o=r.split(/\n/g);return o=o.filter(e=>e&&""!==e.trim()),o=o.map(e=>{let i=e.split(/\|/),a={file:i[0].trim(),lang:t.lang(),domain:t.domain()},n=new O(a).json(),r=i.slice(1).join("|");return""!==r&&(n.caption=ya(r)),n}),o.length>0&&e.templates.push({template:"gallery",images:o,pos:i.title}),""})};var xa=function(e){e.text=e.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,t=>{let i={_wiki:t,_templates:[]};wa(i);let a=i._templates.map(e=>e.json()),n=a.find(e=>"election box"===e.template)||{},r=a.filter(e=>"election box candidate"===e.template),o=a.find(e=>"election box gain"===e.template||"election box hold"===e.template)||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:n.title,candidates:r,summary:o.data}),""})};const va={coach:["team","year","g","w","l","w-l%","finish","pg","pw","pl","pw-l%"],player:["year","team","gp","gs","mpg","fg%","3p%","ft%","rpg","apg","spg","bpg","ppg"],roster:["player","gp","gs","mpg","fg%","3fg%","ft%","rpg","apg","spg","bpg","ppg"]};var ja=function(e){e.text=e.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,(t,i)=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();let a="! "+va[i].join(" !! "),n=Qe("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"NBA "+i+" statistics",data:n}),""})};var _a=function(e){e.text=e.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,t=>{let i=function(e){let t=["#","date","opponent","score","win","loss","save","attendance","record"];return!0===/\|stadium=y/i.test(e)&&t.splice(7,0,"stadium"),!0===/\|time=y/i.test(e)&&t.splice(7,0,"time"),!0===/\|box=y/i.test(e)&&t.push("box"),t}(t);t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{mlb game log (section|month) end\}\}/i,"");let a="! "+i.join(" !! "),n=Qe("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mlb game log section",data:n}),""})};let za=["res","record","opponent","method","event","date","round","time","location","notes"];var Oa=function(e){e.text=e.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,t=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");let i="! "+za.join(" !! "),a=Qe("{|\n"+i+"\n"+t+"\n|}");return a=a.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mma record start",data:a}),""})};const Ea=we;var Ca=function(e){e.text=e.text.replace(/]*?)>([\s\S]+?)<\/math>/g,(t,i,a)=>{let n=Ea(a).text();return e.templates.push({template:"math",formula:n,raw:a}),n&&n.length<12?n:""}),e.text=e.text.replace(/]*?)>([\s\S]+?)<\/chem>/g,(t,i,a)=>(e.templates.push({template:"chem",data:a}),""))};const Sa={heading:Ke,table:lt,paragraphs:Dt,templates:wa,references:Me,startEndTemplates:function(e,t){const i={templates:[],text:e._wiki};return xa(i),$a(i,t,e),Ca(i),_a(i),Oa(i),ja(i),i.templates=i.templates.map(e=>new ga(e)),i}},Na={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0};class qa{constructor(e,t){let i={doc:t,title:e.title||"",depth:e.depth,wiki:e.wiki||"",templates:[],tables:[],infoboxes:[],references:[],paragraphs:[]};Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})});const a=Sa.startEndTemplates(this,t);this._wiki=a.text,this._templates=this._templates.concat(a.templates),Sa.references(this),Sa.templates(this,t),Sa.table(this),Sa.paragraphs(this,t)}title(){return this._title||""}index(){if(!this._doc)return null;let e=this._doc.sections().indexOf(this);return-1===e?null:e}depth(){return this._depth}indentation(){return this.depth()}sentences(){return this.paragraphs().reduce((e,t)=>e.concat(t.sentences()),[])}paragraphs(){return this._paragraphs||[]}links(e){let t=[];if(this.infoboxes().forEach(e=>{t.push(e.links())}),this.sentences().forEach(e=>{t.push(e.links())}),this.tables().forEach(e=>{t.push(e.links())}),this.lists().forEach(e=>{t.push(e.links())}),t=t.reduce((e,t)=>e.concat(t),[]).filter(e=>void 0!==e),"string"==typeof e){let i=t.find(t=>t.page().toLowerCase()===e.toLowerCase());return void 0===i?[]:[i]}return t}tables(){return this._tables||[]}templates(e){let t=this._templates||[];return"string"==typeof e?(e=e.toLowerCase(),t.filter(t=>t.data.template===e||t.data.name===e)):t}infoboxes(e){let t=this._infoboxes||[];return"string"==typeof e?(e=(e=e.replace(/^infobox /i,"")).trim().toLowerCase(),t.filter(t=>t._type===e)):t}coordinates(){return[...this.templates("coord"),...this.templates("coor")].map(e=>e.json())}lists(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.lists())}),e}interwiki(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.interwiki())}),e}images(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.images())}),e}references(){return this._references||[]}remove(){if(!this._doc)return null;let e={};e[this.title()]=!0,this.children().forEach(t=>e[t.title()]=!0);let t=this._doc.sections();return t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),this._doc._sections=t,this._doc}nextSibling(){if(!this._doc)return null;let e=this._doc.sections();for(let t=(this.index()||0)+1;tthis.depth())for(let e=i+1;ethis.depth();e+=1)a.push(t[e]);return"string"==typeof e?a.find(t=>t.title().toLowerCase()===e.toLowerCase()):a}sections(e){return this.children(e)}parent(){if(!this._doc)return null;let e=this._doc.sections();for(let t=this.index()||0;t>=0;t-=1)if(e[t]&&e[t].depth()t.text(e)).join("\n\n")}wikitext(){return this._wiki}json(e){return e=d(e,Na),J(this,e)}}qa.prototype.citations=qa.prototype.references;const La={sentences:"sentence",paragraphs:"paragraph",links:"link",tables:"table",templates:"template",infoboxes:"infobox",coordinates:"coordinate",lists:"list",images:"image",references:"reference",citations:"citation"};Object.keys(La).forEach(e=>{let t=La[e];qa.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}});var Pa=qa;const Aa=new RegExp("^("+k.references.join("|")+"):?","i"),Ta=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,Da={heading:Ke};var Ia=function(e){let t=[],i=e._wiki.split(Ta);for(let a=0;a!0!==Aa.test(t.title())||t.paragraphs().length>0||t.templates().length>0||(e[i+1]&&e[i+1].depth()>t.depth()&&(e[i+1]._depth-=1),!1))}(t)};const Ma=new RegExp("\\[\\[:?("+k.categories.join("|")+"):(.{2,178}?)]](w{0,10})","ig"),Ra=new RegExp("^\\[\\[:?("+k.categories.join("|")+"):","ig");const Ua={section:Ia,categories:function(e){const t=[];let i=e.match(Ma);i&&i.forEach((function(e){(e=(e=(e=e.replace(Ra,"")).replace(/\|?[ \*]?\]\]$/i,"")).replace(/\|.*/,""))&&!e.match(/[\[\]]/)&&t.push(e.trim())}));const a=e.replace(Ma,"");return[t,a]}},Ba={tables:!0,lists:!0,paragraphs:!0};class Ka{constructor(e,t){let i={pageID:(t=t||{}).pageID||t.id||null,namespace:t.namespace||t.ns||null,lang:t.lang||t.language||null,domain:t.domain||null,title:t.title||null,type:"page",redirectTo:null,wikidata:t.wikidata||null,wiki:e||"",categories:[],sections:[],coordinates:[]};if(Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})}),!0===M(this._wiki)){this._type="redirect",this._redirectTo=R(this._wiki);const[e,t]=Ua.categories(this._wiki);return this._categories=e,void(this._wiki=t)}this._wiki=Y(this._wiki);const[a,n]=Ua.categories(this._wiki);this._categories=a,this._wiki=n,this._sections=Ua.section(this)}title(e){if(void 0!==e)return this._title=e,e;if(this._title)return this._title;let t=null,i=this.sentence();return i&&(t=i.bold()),t}pageID(e){return void 0!==e&&(this._pageID=e),this._pageID||null}wikidata(e){return void 0!==e&&(this._wikidata=e),this._wikidata||null}domain(e){return void 0!==e&&(this._domain=e),this._domain||null}language(e){return void 0!==e&&(this._lang=e),this._lang||null}url(){let e=this.title();if(!e)return null;let t=this.language()||"en",i=this.domain()||"wikipedia.org";return e=e.replace(/ /g,"_"),e=encodeURIComponent(e),`https://${t}.${i}/wiki/${e}`}namespace(e){return void 0!==e&&(this._namespace=e),this._namespace||null}isRedirect(){return"redirect"===this._type}redirectTo(){return this._redirectTo}isDisambiguation(){return x(this)}categories(e){let t=this._categories||[];return"number"==typeof e?[t[e]]:t}sections(e){let t=this._sections||[];if(t.forEach(e=>{e._doc=this}),"string"==typeof e){let i=e.toLowerCase().trim();return t.filter(e=>e.title().toLowerCase()===i)}return"number"==typeof e?[t[e]]:t}paragraphs(e){let t=[];return this.sections().forEach(e=>{t=t.concat(e.paragraphs())}),"number"==typeof e?[t[e]]:t}sentences(e){let t=[];return this.sections().forEach(e=>{t=t.concat(e.sentences())}),"number"==typeof e?[t[e]]:t}images(e){let t=m(this,"images",null);return this.infoboxes().forEach(e=>{let i=e.image();i&&t.unshift(i)}),this.templates().forEach(e=>{"gallery"===e.data.template&&(e.data.images=e.data.images||[],e.data.images.forEach(e=>{e instanceof O||(e.language=this.language(),e.domain=this.domain(),e=new O(e)),t.push(e)}))}),"number"==typeof e?[t[e]]:t}links(e){return m(this,"links",e)}interwiki(e){return m(this,"interwiki",e)}lists(e){return m(this,"lists",e)}tables(e){return m(this,"tables",e)}templates(e){return m(this,"templates",e)}references(e){return m(this,"references",e)}citations(e){return this.references(e)}coordinates(e){return m(this,"coordinates",e)}infoboxes(e){let t=m(this,"infoboxes",e);return t=t.sort((e,t)=>Object.keys(e.data).length>Object.keys(t.data).length?-1:1),t}text(e){if(e=d(e,Ba),!0===this.isRedirect())return"";return this.sections().map(t=>t.text(e)).join("\n\n")}json(e){return e=d(e,Ba),g(this,e)}wikitext(){return this._wiki||""}debug(){return console.log("\n"),this.sections().forEach(e=>{let t=" - ";for(let i=0;i{let t=Fa[e];Ka.prototype[t]=function(t){return this[e](t)[0]||null}}),Ka.prototype.lang=Ka.prototype.language,Ka.prototype.ns=Ka.prototype.namespace,Ka.prototype.plaintext=Ka.prototype.text,Ka.prototype.isDisambig=Ka.prototype.isDisambiguation,Ka.prototype.citations=Ka.prototype.references,Ka.prototype.redirectsTo=Ka.prototype.redirectTo,Ka.prototype.redirect=Ka.prototype.redirectTo,Ka.prototype.redirects=Ka.prototype.redirectTo;var Wa=Ka;var Ya=function(e){let t=(e=e.filter(e=>e)).map(e=>new Wa(e.wiki,e.meta));return 0===t.length?null:1===t.length?t[0]:t};var Za=function(e){let t,i=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return t=e.noOrigin?"":e.origin||e.Origin||"*",{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":i,"User-Agent":i,Origin:t,"Accept-Encoding":"gzip"},redirect:"follow"}};const Ha=/^https?:\/\//,Ga={lang:"en",wiki:"wikipedia",domain:void 0,follow_redirects:!0,path:"api.php"};var Va=function(e,t,i){"string"==typeof t&&(t={lang:t}),(t={...Ga,...t}).title=e,"string"==typeof e&&Ha.test(e)&&(t={...t,...n(e)});const r=u(t),o=Za(t);return a(r,o).then(e=>e.json()).then(e=>{let a=p(e,t);return a=Ya(a),i&&i(null,a),a}).catch(e=>(console.error(e),i&&i(e,null),null))};const Ja=function(e,t){return new Wa(e,t)},Xa={Doc:Wa,Section:Pa,Paragraph:gt,Sentence:ue,Image:O,Infobox:pa,Link:te,List:zt,Reference:Pe,Table:rt,Template:ga,http:function(e,t){return a(e,t).then((function(e){return e.json()}))},wtf:Ja};Ja.fetch=function(e,t,i,a){return Va(e,t,i)},Ja.plugin=Ja.extend=function(e){return e(Xa,ta,Wt),this},Ja.version="9.0.0";var Qa=Ja;export default Qa; diff --git a/builds/wtf_wikipedia.js b/builds/wtf_wikipedia.js index 84ae140d..8cda1312 100644 --- a/builds/wtf_wikipedia.js +++ b/builds/wtf_wikipedia.js @@ -1,4 +1,4 @@ -/* wtf_wikipedia 8.5.1 MIT */ +/* wtf_wikipedia 9.0.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('isomorphic-unfetch')) : typeof define === 'function' && define.amd ? define(['isomorphic-unfetch'], factory) : @@ -264,6 +264,15 @@ arr.push(t); }); }); + + if (typeof clue === 'number') { + if (arr[clue] === undefined) { + return []; + } + + return [arr[clue]]; + } + return arr; }; @@ -847,7 +856,23 @@ const i18n_templates = i18n.disambig_templates.reduce((h, str) => { h[str] = true; return h; - }, {}); + }, {}); // look for '... may refer to' + + const byText = function (s) { + if (!s) { + return false; + } + + let txt = s.text(); + + if (txt !== null && txt[0]) { + if (/. may (also)? refer to\b/i.test(txt) === true) { + return true; + } + } + + return false; + }; /** * Parses the wikitext to find out if this page is a disambiguation * @@ -856,9 +881,10 @@ * @returns {boolean} an indication if the document is a disambiguation page */ + const isDisambig = function (doc) { // check for a {{disambig}} template - let templates = doc.templates(); + let templates = doc.templates().map(tmpl => tmpl.json()); let found = templates.find(obj => { return _disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); }); @@ -875,22 +901,14 @@ } //try 'may refer to' on first line for en-wiki? - let s = doc.sentences()[0]; - - if (s) { - let firstLine = s.text(); - - if (firstLine !== null && firstLine[0]) { - if (/. may refer to\b/i.test(firstLine) === true) { - return true; - } - } + if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { + return true; } return false; }; - var disambig = isDisambig; + var isDisambig_1 = isDisambig; const defaults$a = { caption: true, @@ -1015,6 +1033,9 @@ }, text: function () { return ''; + }, + wikitext: function () { + return this.data.wiki || ''; } }; Object.keys(methods$8).forEach(k => { @@ -2364,7 +2385,7 @@ if (options.templates === true) { - let templates = section.templates(); + let templates = section.templates().map(tmpl => tmpl.json()); if (templates.length > 0) { data.templates = templates; //encode them, for mongodb @@ -2431,7 +2452,10 @@ this.data.text = str; } - return this.data.text || this.data.page || ''; + let txt = this.data.text || this.data.page || ''; // remove bold/italics + + txt = txt.replace(/''+/g, ''); + return txt; }, json: function () { let obj = { @@ -2455,6 +2479,10 @@ return obj; }, + wikitext: function () { + let txt = this.data.raw || ''; + return txt; + }, page: function (str) { if (str !== undefined) { this.data.page = str; @@ -2543,8 +2571,8 @@ let wiki = data.text; let links = parse$8(wiki) || []; data.links = links.map(link => { - wiki = wiki.replace(link.raw, link.text || link.page || ''); - delete link.raw; + wiki = wiki.replace(link.raw, link.text || link.page || ''); // delete link.raw + return new Link_1(link); }); wiki = removeLinks(wiki); @@ -2685,6 +2713,9 @@ json: function (options) { return toJson$3(this, options); }, + wikitext: function () { + return this.data.wiki || ''; + }, isEmpty: function () { return this.data.text === ''; } @@ -2724,10 +2755,10 @@ const abbreviations = _abbreviations.concat('[^]][^]]'); const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); - const acronym_reg = new RegExp("[ |.|'|[][A-Z].? *?$", 'i'); - const elipses_reg = new RegExp('\\.\\.\\.* +?$'); - const circa_reg = / c\. $/; - const hasWord = new RegExp('[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]', 'iu'); //turn a nested array into one array + const acronym_reg = /[ .'][A-Z].? *?$/i; + const elipses_reg = /\.\.\.* +?$/; + const circa_reg = / c\.\s$/; + const hasWord = /\p{Letter}/iu; //turn a nested array into one array const flatten = function (arr) { let all = []; @@ -2873,6 +2904,7 @@ function fromText(str) { let obj = { + wiki: str, text: str }; //pull-out the [[links]] @@ -2973,7 +3005,7 @@ //every value in {{tmpl|a|b|c}} needs a name //here we come up with names for them - const hasKey = /^[a-z0-9\u00C0-\u00FF\u4e00-\u9faf\._\- '()œ]+=/iu; //templates with these properties are asking for trouble + const hasKey = /^[\p{Letter}0-9\._\- '()œ]+=/iu; //templates with these properties are asking for trouble const reserved = { template: true, @@ -3150,11 +3182,15 @@ var toJSON = parser; - const Reference = function (data) { + const Reference = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$5 = { @@ -3185,6 +3221,9 @@ text: function () { return ''; //nah, skip these. }, + wikitext: function () { + return this.wiki || ''; + }, json: function (options = {}) { let json = this.data || {}; //encode them, for mongodb @@ -3229,17 +3268,23 @@ const parseRefs = function (section) { let references = []; let wiki = section._wiki; - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (_a, tmpl) { + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl); if (obj) { - references.push(obj); + references.push({ + json: obj, + wiki: all + }); } wiki = wiki.replace(tmpl, ''); } else { - references.push(parseInline(tmpl)); + references.push({ + json: parseInline(tmpl), + wiki: all + }); } return ' '; @@ -3247,17 +3292,23 @@ wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' '); // - wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (a, tmpl) { + wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl); if (obj) { - references.push(obj); + references.push({ + json: obj, + wiki: tmpl + }); } wiki = wiki.replace(tmpl, ''); } else { - references.push(parseInline(tmpl)); + references.push({ + json: parseInline(tmpl), + wiki: all + }); } return ' '; @@ -3265,7 +3316,7 @@ wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' '); // - section._references = references.map(r => new Reference_1(r)); + section._references = references.map(obj => new Reference_1(obj.json, obj.wiki)); section._wiki = wiki; }; @@ -3649,11 +3700,15 @@ return key; }; - const Table = function (data) { + const Table = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki + }); }; const methods$4 = { @@ -3677,20 +3732,29 @@ }, get(keys) { - // string gets a flat-list + // normalize mappings + let have = this.data[0] || {}; + let mapping = Object.keys(have).reduce((h, k) => { + h[normalize$1(k)] = k; + return h; + }, {}); // string gets a flat-list + if (typeof keys === 'string') { let key = normalize$1(keys); + key = mapping[key] || key; return this.data.map(row => { return row[key] ? row[key].text() : null; }); } // array gets obj-list - keys = keys.map(normalize$1); + keys = keys.map(normalize$1).map(k => mapping[k] || k); return this.data.map(row => { return keys.reduce((h, k) => { if (row[k]) { h[k] = row[k].text(); + } else { + h[k] = ''; } return h; @@ -3715,6 +3779,10 @@ text() { return ''; + }, + + wikitext() { + return this._wiki || ''; } }; @@ -3765,7 +3833,7 @@ let data = parse$5(str); if (data && data.length > 0) { - tables.push(new Table_1(data)); + tables.push(new Table_1(data, str)); } } }); @@ -3860,6 +3928,9 @@ json: function (options) { options = setDefaults_1(options, defaults$4); return toJson_1$1(this, options); + }, + wikitext: function () { + return this.data.wiki; } }; methods$3.citations = methods$3.references; @@ -3999,7 +4070,8 @@ let obj = { file: file, lang: doc._lang, - domain: doc._domain + domain: doc._domain, + wiki: img }; //try to grab other metadata, too img = img.replace(/^\[\[/, ''); @@ -4049,18 +4121,22 @@ const defaults$3 = {}; - const toText$1 = (list, options) => { + const toText$2 = (list, options) => { return list.map(s => { let str = s.text(options); return ' * ' + str; }).join('\n'); }; - const List = function (data) { + const List = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$2 = { @@ -4091,7 +4167,11 @@ }, text() { - return toText$1(this.data); + return toText$2(this.data); + }, + + wikitext() { + return this.wiki || ''; } }; @@ -4168,7 +4248,7 @@ } } - paragraph.lists = lists.map(l => new List_1(l)); + paragraph.lists = lists.map(l => new List_1(l, wiki)); paragraph.wiki = theRest.join('\n'); }; @@ -4466,7 +4546,6 @@ cricon: 'flagicon', sfrac: 'frac', sqrt: 'radic', - cite: 'citation', 'unreferenced section': 'unreferenced', redir: 'redirect', sisterlinks: 'sister project links', @@ -4474,6 +4553,9 @@ }; //multiple aliases let multi = { + date: ['byline', 'dateline'], + //wikinews + citation: ['cite', 'source', 'source-pr', 'source-science'], flagcountry: ['cr', 'cr-rt'], trunc: ['str left', 'str crop'], percentage: ['pct', 'percentage'], @@ -4548,7 +4630,10 @@ asterisk: '*', 'long dash': '———', clear: '\n\n', - 'h.': 'ḥ' + 'h.': 'ḥ', + profit: '▲', + loss: '▼', + gain: '▲' }; let templates$9 = { @@ -5635,7 +5720,6 @@ 'short description': ['description'], 'coord missing': ['region'], unreferenced: ['date'], - uss: ['ship', 'id'], 'taxon info': ['taxon', 'item'], //https://en.wikipedia.org/wiki/Template:Taxon_info 'portuguese name': ['first', 'second', 'suffix'], @@ -6032,6 +6116,17 @@ list.push(template); let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); return '\n' + str + '\n'; + }, + // https://en.m.wikipedia.org/wiki/Template:USS + uss: (tmpl, list) => { + let obj = toJSON(tmpl, ['name', 'id']); + list.push(obj); + + if (obj.id) { + return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; + } + + return `[[USS ${obj.name}|USS ''${obj.name}'']]`; } }; var functions = templates$3; @@ -6359,7 +6454,7 @@ return String(num); }; - const toText = function (date) { + const toText$1 = function (date) { //eg '1995' let str = String(date.year || ''); @@ -6391,7 +6486,7 @@ }; var _format = { - toText: toText, + toText: toText$1, ymd: ymd }; // console.log(toText(ymd([2018, 3, 28]))); @@ -7360,27 +7455,27 @@ } = helpers; const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; //this gets all the {{template}} objects and decides how to parse them - const parseTemplate = function (tmpl, list, doc) { + const parseTemplate = function (tmpl, doc) { let name = tmpl.name; // dont bother with some junk templates if (_ignore.hasOwnProperty(name) === true) { - return ''; + return ['']; } //{{infobox settlement...}} if (_infobox.isInfobox(name) === true) { - let obj = toJSON(tmpl.body, [], 'raw'); - list.push(_infobox.format(obj)); - return ''; + let obj = toJSON(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) + + return ['', _infobox.format(obj)]; } //cite book, cite arxiv... if (/^cite [a-z]/.test(name) === true) { let obj = toJSON(tmpl.body); obj.type = obj.template; - obj.template = 'citation'; - list.push(obj); - return ''; + obj.template = 'citation'; // list.push(obj) + + return ['', obj]; } // ok, here we go! //parse some known templates @@ -7390,49 +7485,48 @@ if (typeof custom[name] === 'number') { let obj = toJSON(tmpl.body, nums); let key = String(custom[name]); - return obj[key] || ''; + return [obj[key] || '']; } //handle string-syntax if (typeof custom[name] === 'string') { - return custom[name]; + return [custom[name]]; } //handle array sytax if (isArray$1(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name]); - list.push(obj); - return ''; + let obj = toJSON(tmpl.body, custom[name]); // list.push(obj) + + return ['', obj]; } //handle object sytax if (isObject(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name].props); - list.push(obj); - return obj[custom[name].out]; + let obj = toJSON(tmpl.body, custom[name].props); // list.push(obj) + + return [obj[custom[name].out], obj]; } //handle function syntax if (typeof custom[name] === 'function') { // let json = toJSON(tmpl.body) //(tmpl, list, alias, doc) - return custom[name](tmpl.body, list, toJSON, null, doc); + let arr = []; + let txt = custom[name](tmpl.body, arr, toJSON, null, doc); + return [txt, arr[0]]; } - } // if (doc) { - // doc._missing_templates[name] = doc._missing_templates[name] || 0 - // doc._missing_templates[name] += 1 - // } - //an unknown template with data, so just keep it. + } //an unknown template with data, so just keep it. let json = toJSON(tmpl.body); - if (list && Object.keys(json).length > 0) { - list.push(json); + if (Object.keys(json).length === 0) { + // list.push(json) + json = null; } //..then remove it - return ''; + return ['', json]; }; var parse$3 = parseTemplate; @@ -7466,13 +7560,17 @@ }; //a formal key-value data table about a topic - const Infobox = function (obj) { + const Infobox = function (obj, wiki) { this._type = obj.type; this.domain = obj.domain; Object.defineProperty(this, 'data', { enumerable: false, value: obj.data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$1 = { @@ -7496,7 +7594,7 @@ return arr; }, image: function () { - let s = this.data.image || this.data.image2 || this.data.logo; + let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag; if (!s) { return null; @@ -7551,6 +7649,9 @@ options = options || {}; return toJson_1(this, options); }, + wikitext: function () { + return this.wiki || ''; + }, keyValue: function () { return Object.keys(this.data).reduce((h, k) => { if (this.data[k]) { @@ -7570,20 +7671,33 @@ Infobox.prototype.images = Infobox.prototype.image; var Infobox_1 = Infobox; + const toText = _04Sentence.fromText; const methods = { text: function () { - return ''; + let str = this._text || ''; + return toText(str).text(); }, json: function () { - return this.data; + return this.data || {}; + }, + wikitext: function () { + return this.wiki || ''; } }; - const Template = function (data) { + const Template = function (data, text = '', wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_text', { + enumerable: false, + value: text + }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; Object.keys(methods).forEach(k => { @@ -7591,7 +7705,7 @@ }); var Template_1 = Template; - const isCitation = new RegExp('^(cite |citation)', 'i'); + const isCitation = /^(cite |citation)/i; const referenceTypes = { citation: true, refn: true, @@ -7600,33 +7714,34 @@ }; // split Infoboxes from templates and references - const sortOut = function (keep, domain) { + const sortOut = function (list, domain) { let res = { infoboxes: [], templates: [], references: [] }; //remove references and infoboxes from our list - keep.forEach(obj => { - let kind = obj.template || obj.type || obj.name; // is it a Reference? + list.forEach(obj => { + let json = obj.json; + let kind = json.template || json.type || json.name; // is it a Reference? if (referenceTypes[kind] === true || isCitation.test(kind) === true) { - res.references.push(new Reference_1(obj)); + res.references.push(new Reference_1(json, obj.wiki)); return; } // is it an Infobox? - if (obj.template === 'infobox' && obj.subbox !== 'yes') { - obj.domain = domain; //infoboxes need this for images, i guess + if (json.template === 'infobox' && json.subbox !== 'yes') { + json.domain = domain; //infoboxes need this for images, i guess - obj.data = obj.data || {}; //validate it a little + json.data = json.data || {}; //validate it a little - res.infoboxes.push(new Infobox_1(obj)); + res.infoboxes.push(new Infobox_1(json, obj.wiki)); return; } // otherwise, it's just a template - res.templates.push(new Template_1(obj)); + res.templates.push(new Template_1(json, obj.text, obj.wiki)); }); return res; }; @@ -7646,7 +7761,18 @@ } //parse template into json, return replacement wikitext - obj.wiki = parse$3(obj, list, doc); //remove the text from every parent + let [text, json] = parse$3(obj, doc); + obj.wiki = text; + + if (json) { + list.push({ + name: obj.name, + wiki: obj.body, + text: text, + json: json + }); + } //remove the text from every parent + const removeIt = function (node, body, out) { if (node.parent) { @@ -7998,7 +8124,7 @@ /** * the Section class represents the different sections of the article. * we look for the == title == syntax and split and parse the sections from there - * + * * @class */ @@ -8173,12 +8299,11 @@ templates(clue) { - let arr = this._templates || []; - arr = arr.map(t => t.json()); + let arr = this._templates || []; // arr = arr.map((t) => t.json()) if (typeof clue === 'string') { clue = clue.toLowerCase(); - return arr.filter(o => o.template === clue || o.name === clue); + return arr.filter(o => o.data.template === clue || o.data.name === clue); } return arr; @@ -8213,7 +8338,7 @@ coordinates() { let arr = [...this.templates('coord'), ...this.templates('coor')]; - return arr; + return arr.map(tmpl => tmpl.json()); } /** * returns all lists in the section @@ -8482,6 +8607,16 @@ options = setDefaults_1(options, defaults$2); return this.paragraphs().map(p => p.text(options)).join('\n\n'); } + /** + * returns original wiki markup + * + * @returns {string} the original markup + */ + + + wikitext() { + return this._wiki; + } /** * returns a json version of the section * @@ -8641,9 +8776,9 @@ }; /** * The document class is the main entry point of wtf_wikipedia. - * this class represents an article of wikipedia. + * this class represents an article of wikipedia. * from here you can go to the infoboxes or paragraphs - * + * * @class */ @@ -8863,7 +8998,7 @@ isDisambiguation() { - return disambig(this); + return isDisambig_1(this); } /** * If a clue is available return the category at that index @@ -8873,8 +9008,14 @@ */ - categories() { - return this._categories || []; + categories(clue) { + let arr = this._categories || []; + + if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; } /** * returns the sections of the document @@ -8900,6 +9041,8 @@ return arr.filter(s => { return s.title().toLowerCase() === str; }); + } else if (typeof clue === 'number') { + return [arr[clue]]; } return arr; @@ -8909,31 +9052,41 @@ * * If the clue is a number then it returns the paragraph at that index * Else it returns all paragraphs in an array - * + * @param {number | string} [clue] given index of a paragraph * @returns {object | object[]} the selected paragraph or an array of all paragraphs */ - paragraphs() { + paragraphs(clue) { let arr = []; this.sections().forEach(s => { arr = arr.concat(s.paragraphs()); }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** * if no clue is provided, it compiles an array of sentences in the wiki text. * if the clue is provided it return the sentence at the provided index - * + * @param {number | string} [clue] given index of a sentence * @returns {object[]|object} an array of sentences or a single sentence */ - sentences() { + sentences(clue) { let arr = []; this.sections().forEach(sec => { arr = arr.concat(sec.sentences()); }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** @@ -8945,7 +9098,7 @@ */ - images() { + images(clue) { let arr = _sectionMap(this, 'images', null); //grab image from infobox, first this.infoboxes().forEach(info => { @@ -8957,9 +9110,9 @@ }); //look for 'gallery' templates, too this.templates().forEach(obj => { - if (obj.template === 'gallery') { - obj.images = obj.images || []; - obj.images.forEach(img => { + if (obj.data.template === 'gallery') { + obj.data.images = obj.data.images || []; + obj.data.images.forEach(img => { if (!(img instanceof Image_1)) { img.language = this.language(); img.domain = this.domain(); @@ -8970,6 +9123,11 @@ }); } }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** @@ -9117,6 +9275,16 @@ options = setDefaults_1(options, defaults$1); return toJson$6(this, options); } + /** + * return original wiki markup + * + * @returns {string} markup text + */ + + + wikitext() { + return this._wiki || ''; + } /** * prints the title of every section * @@ -9162,11 +9330,6 @@ Document.prototype[sing] = function (clue) { let arr = this[k](clue); - - if (typeof clue === 'number') { - return arr[clue]; - } - return arr[0] || null; }; }); @@ -9233,7 +9396,8 @@ 'Content-Type': 'application/json', 'Api-User-Agent': agent, 'User-Agent': agent, - Origin: origin + Origin: origin, + 'Accept-Encoding': 'gzip' }, redirect: 'follow' }; @@ -9323,7 +9487,7 @@ var _fetch = fetch$1; - var _version = '8.5.1'; + var _version = '9.0.0'; /** * use the native client-side fetch function diff --git a/builds/wtf_wikipedia.mjs b/builds/wtf_wikipedia.mjs index 453e7199..2fcbb54f 100644 --- a/builds/wtf_wikipedia.mjs +++ b/builds/wtf_wikipedia.mjs @@ -1,4 +1,4 @@ -/* wtf_wikipedia 8.5.1 MIT */ +/* wtf_wikipedia 9.0.0 MIT */ import isomorphicUnfetch from 'isomorphic-unfetch'; /** @@ -256,6 +256,15 @@ const sectionMap = function (doc, fn, clue) { arr.push(t); }); }); + + if (typeof clue === 'number') { + if (arr[clue] === undefined) { + return []; + } + + return [arr[clue]]; + } + return arr; }; @@ -839,7 +848,23 @@ const inTitle = new RegExp('. \\((' + i18n.disambig_titles.join('|') + ')\\)$', const i18n_templates = i18n.disambig_templates.reduce((h, str) => { h[str] = true; return h; -}, {}); +}, {}); // look for '... may refer to' + +const byText = function (s) { + if (!s) { + return false; + } + + let txt = s.text(); + + if (txt !== null && txt[0]) { + if (/. may (also)? refer to\b/i.test(txt) === true) { + return true; + } + } + + return false; +}; /** * Parses the wikitext to find out if this page is a disambiguation * @@ -848,9 +873,10 @@ const i18n_templates = i18n.disambig_templates.reduce((h, str) => { * @returns {boolean} an indication if the document is a disambiguation page */ + const isDisambig = function (doc) { // check for a {{disambig}} template - let templates = doc.templates(); + let templates = doc.templates().map(tmpl => tmpl.json()); let found = templates.find(obj => { return _disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); }); @@ -867,22 +893,14 @@ const isDisambig = function (doc) { } //try 'may refer to' on first line for en-wiki? - let s = doc.sentences()[0]; - - if (s) { - let firstLine = s.text(); - - if (firstLine !== null && firstLine[0]) { - if (/. may refer to\b/i.test(firstLine) === true) { - return true; - } - } + if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { + return true; } return false; }; -var disambig = isDisambig; +var isDisambig_1 = isDisambig; const defaults$a = { caption: true, @@ -1007,6 +1025,9 @@ const methods$8 = { }, text: function () { return ''; + }, + wikitext: function () { + return this.data.wiki || ''; } }; Object.keys(methods$8).forEach(k => { @@ -2356,7 +2377,7 @@ const toJSON$2 = function (section, options) { if (options.templates === true) { - let templates = section.templates(); + let templates = section.templates().map(tmpl => tmpl.json()); if (templates.length > 0) { data.templates = templates; //encode them, for mongodb @@ -2423,7 +2444,10 @@ const methods$7 = { this.data.text = str; } - return this.data.text || this.data.page || ''; + let txt = this.data.text || this.data.page || ''; // remove bold/italics + + txt = txt.replace(/''+/g, ''); + return txt; }, json: function () { let obj = { @@ -2447,6 +2471,10 @@ const methods$7 = { return obj; }, + wikitext: function () { + let txt = this.data.raw || ''; + return txt; + }, page: function (str) { if (str !== undefined) { this.data.page = str; @@ -2535,8 +2563,8 @@ const getLinks = function (data) { let wiki = data.text; let links = parse$8(wiki) || []; data.links = links.map(link => { - wiki = wiki.replace(link.raw, link.text || link.page || ''); - delete link.raw; + wiki = wiki.replace(link.raw, link.text || link.page || ''); // delete link.raw + return new Link_1(link); }); wiki = removeLinks(wiki); @@ -2677,6 +2705,9 @@ const methods$6 = { json: function (options) { return toJson$3(this, options); }, + wikitext: function () { + return this.data.wiki || ''; + }, isEmpty: function () { return this.data.text === ''; } @@ -2716,10 +2747,10 @@ var _abbreviations = ['ad', 'adj', 'adm', 'adv', 'al', 'alta', 'approx', 'apr', const abbreviations = _abbreviations.concat('[^]][^]]'); const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); -const acronym_reg = new RegExp("[ |.|'|[][A-Z].? *?$", 'i'); -const elipses_reg = new RegExp('\\.\\.\\.* +?$'); -const circa_reg = / c\. $/; -const hasWord = new RegExp('[a-zа-яぁ-ゟ][a-zа-яぁ-ゟ゠-ヿ]', 'iu'); //turn a nested array into one array +const acronym_reg = /[ .'][A-Z].? *?$/i; +const elipses_reg = /\.\.\.* +?$/; +const circa_reg = / c\.\s$/; +const hasWord = /\p{Letter}/iu; //turn a nested array into one array const flatten = function (arr) { let all = []; @@ -2865,6 +2896,7 @@ function postprocess(line) { function fromText(str) { let obj = { + wiki: str, text: str }; //pull-out the [[links]] @@ -2965,7 +2997,7 @@ var _01PipeSplitter = pipeSplitter; //every value in {{tmpl|a|b|c}} needs a name //here we come up with names for them -const hasKey = /^[a-z0-9\u00C0-\u00FF\u4e00-\u9faf\._\- '()œ]+=/iu; //templates with these properties are asking for trouble +const hasKey = /^[\p{Letter}0-9\._\- '()œ]+=/iu; //templates with these properties are asking for trouble const reserved = { template: true, @@ -3142,11 +3174,15 @@ const parser = function (tmpl, order = [], fmt) { var toJSON = parser; -const Reference = function (data) { +const Reference = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$5 = { @@ -3177,6 +3213,9 @@ const methods$5 = { text: function () { return ''; //nah, skip these. }, + wikitext: function () { + return this.wiki || ''; + }, json: function (options = {}) { let json = this.data || {}; //encode them, for mongodb @@ -3221,17 +3260,23 @@ const parseInline = function (str) { const parseRefs = function (section) { let references = []; let wiki = section._wiki; - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (_a, tmpl) { + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl); if (obj) { - references.push(obj); + references.push({ + json: obj, + wiki: all + }); } wiki = wiki.replace(tmpl, ''); } else { - references.push(parseInline(tmpl)); + references.push({ + json: parseInline(tmpl), + wiki: all + }); } return ' '; @@ -3239,17 +3284,23 @@ const parseRefs = function (section) { wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' '); // - wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (a, tmpl) { + wiki = wiki.replace(/ ?]{0,200}?>([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { if (hasCitation(tmpl)) { let obj = parseCitation(tmpl); if (obj) { - references.push(obj); + references.push({ + json: obj, + wiki: tmpl + }); } wiki = wiki.replace(tmpl, ''); } else { - references.push(parseInline(tmpl)); + references.push({ + json: parseInline(tmpl), + wiki: all + }); } return ' '; @@ -3257,7 +3308,7 @@ const parseRefs = function (section) { wiki = wiki.replace(/ ?<[ \/]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ \/]?> ?/g, ' '); // - section._references = references.map(r => new Reference_1(r)); + section._references = references.map(obj => new Reference_1(obj.json, obj.wiki)); section._wiki = wiki; }; @@ -3641,11 +3692,15 @@ const normalize$1 = function (key = '') { return key; }; -const Table = function (data) { +const Table = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki + }); }; const methods$4 = { @@ -3669,20 +3724,29 @@ const methods$4 = { }, get(keys) { - // string gets a flat-list + // normalize mappings + let have = this.data[0] || {}; + let mapping = Object.keys(have).reduce((h, k) => { + h[normalize$1(k)] = k; + return h; + }, {}); // string gets a flat-list + if (typeof keys === 'string') { let key = normalize$1(keys); + key = mapping[key] || key; return this.data.map(row => { return row[key] ? row[key].text() : null; }); } // array gets obj-list - keys = keys.map(normalize$1); + keys = keys.map(normalize$1).map(k => mapping[k] || k); return this.data.map(row => { return keys.reduce((h, k) => { if (row[k]) { h[k] = row[k].text(); + } else { + h[k] = ''; } return h; @@ -3707,6 +3771,10 @@ const methods$4 = { text() { return ''; + }, + + wikitext() { + return this._wiki || ''; } }; @@ -3757,7 +3825,7 @@ const findTables = function (section) { let data = parse$5(str); if (data && data.length > 0) { - tables.push(new Table_1(data)); + tables.push(new Table_1(data, str)); } } }); @@ -3852,6 +3920,9 @@ const methods$3 = { json: function (options) { options = setDefaults_1(options, defaults$4); return toJson_1$1(this, options); + }, + wikitext: function () { + return this.data.wiki; } }; methods$3.citations = methods$3.references; @@ -3991,7 +4062,8 @@ const oneImage = function (img, doc) { let obj = { file: file, lang: doc._lang, - domain: doc._domain + domain: doc._domain, + wiki: img }; //try to grab other metadata, too img = img.replace(/^\[\[/, ''); @@ -4041,18 +4113,22 @@ var image = parseImages; const defaults$3 = {}; -const toText$1 = (list, options) => { +const toText$2 = (list, options) => { return list.map(s => { let str = s.text(options); return ' * ' + str; }).join('\n'); }; -const List = function (data) { +const List = function (data, wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$2 = { @@ -4083,7 +4159,11 @@ const methods$2 = { }, text() { - return toText$1(this.data); + return toText$2(this.data); + }, + + wikitext() { + return this.wiki || ''; } }; @@ -4160,7 +4240,7 @@ const parseList = function (paragraph) { } } - paragraph.lists = lists.map(l => new List_1(l)); + paragraph.lists = lists.map(l => new List_1(l, wiki)); paragraph.wiki = theRest.join('\n'); }; @@ -4458,7 +4538,6 @@ let aliases = { cricon: 'flagicon', sfrac: 'frac', sqrt: 'radic', - cite: 'citation', 'unreferenced section': 'unreferenced', redir: 'redirect', sisterlinks: 'sister project links', @@ -4466,6 +4545,9 @@ let aliases = { }; //multiple aliases let multi = { + date: ['byline', 'dateline'], + //wikinews + citation: ['cite', 'source', 'source-pr', 'source-science'], flagcountry: ['cr', 'cr-rt'], trunc: ['str left', 'str crop'], percentage: ['pct', 'percentage'], @@ -4540,7 +4622,10 @@ var hardcoded = { asterisk: '*', 'long dash': '———', clear: '\n\n', - 'h.': 'ḥ' + 'h.': 'ḥ', + profit: '▲', + loss: '▼', + gain: '▲' }; let templates$9 = { @@ -5627,7 +5712,6 @@ let templates$4 = { 'short description': ['description'], 'coord missing': ['region'], unreferenced: ['date'], - uss: ['ship', 'id'], 'taxon info': ['taxon', 'item'], //https://en.wikipedia.org/wiki/Template:Taxon_info 'portuguese name': ['first', 'second', 'suffix'], @@ -6024,6 +6108,17 @@ let templates$3 = { list.push(template); let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); return '\n' + str + '\n'; + }, + // https://en.m.wikipedia.org/wiki/Template:USS + uss: (tmpl, list) => { + let obj = toJSON(tmpl, ['name', 'id']); + list.push(obj); + + if (obj.id) { + return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; + } + + return `[[USS ${obj.name}|USS ''${obj.name}'']]`; } }; var functions = templates$3; @@ -6351,7 +6446,7 @@ const pad = function (num) { return String(num); }; -const toText = function (date) { +const toText$1 = function (date) { //eg '1995' let str = String(date.year || ''); @@ -6383,7 +6478,7 @@ const toText = function (date) { }; var _format = { - toText: toText, + toText: toText$1, ymd: ymd }; // console.log(toText(ymd([2018, 3, 28]))); @@ -7352,27 +7447,27 @@ const { } = helpers; const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; //this gets all the {{template}} objects and decides how to parse them -const parseTemplate = function (tmpl, list, doc) { +const parseTemplate = function (tmpl, doc) { let name = tmpl.name; // dont bother with some junk templates if (_ignore.hasOwnProperty(name) === true) { - return ''; + return ['']; } //{{infobox settlement...}} if (_infobox.isInfobox(name) === true) { - let obj = toJSON(tmpl.body, [], 'raw'); - list.push(_infobox.format(obj)); - return ''; + let obj = toJSON(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) + + return ['', _infobox.format(obj)]; } //cite book, cite arxiv... if (/^cite [a-z]/.test(name) === true) { let obj = toJSON(tmpl.body); obj.type = obj.template; - obj.template = 'citation'; - list.push(obj); - return ''; + obj.template = 'citation'; // list.push(obj) + + return ['', obj]; } // ok, here we go! //parse some known templates @@ -7382,49 +7477,48 @@ const parseTemplate = function (tmpl, list, doc) { if (typeof custom[name] === 'number') { let obj = toJSON(tmpl.body, nums); let key = String(custom[name]); - return obj[key] || ''; + return [obj[key] || '']; } //handle string-syntax if (typeof custom[name] === 'string') { - return custom[name]; + return [custom[name]]; } //handle array sytax if (isArray$1(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name]); - list.push(obj); - return ''; + let obj = toJSON(tmpl.body, custom[name]); // list.push(obj) + + return ['', obj]; } //handle object sytax if (isObject(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name].props); - list.push(obj); - return obj[custom[name].out]; + let obj = toJSON(tmpl.body, custom[name].props); // list.push(obj) + + return [obj[custom[name].out], obj]; } //handle function syntax if (typeof custom[name] === 'function') { // let json = toJSON(tmpl.body) //(tmpl, list, alias, doc) - return custom[name](tmpl.body, list, toJSON, null, doc); + let arr = []; + let txt = custom[name](tmpl.body, arr, toJSON, null, doc); + return [txt, arr[0]]; } - } // if (doc) { - // doc._missing_templates[name] = doc._missing_templates[name] || 0 - // doc._missing_templates[name] += 1 - // } - //an unknown template with data, so just keep it. + } //an unknown template with data, so just keep it. let json = toJSON(tmpl.body); - if (list && Object.keys(json).length > 0) { - list.push(json); + if (Object.keys(json).length === 0) { + // list.push(json) + json = null; } //..then remove it - return ''; + return ['', json]; }; var parse$3 = parseTemplate; @@ -7458,13 +7552,17 @@ const normalize = (str = '') => { }; //a formal key-value data table about a topic -const Infobox = function (obj) { +const Infobox = function (obj, wiki) { this._type = obj.type; this.domain = obj.domain; Object.defineProperty(this, 'data', { enumerable: false, value: obj.data }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; const methods$1 = { @@ -7488,7 +7586,7 @@ const methods$1 = { return arr; }, image: function () { - let s = this.data.image || this.data.image2 || this.data.logo; + let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag; if (!s) { return null; @@ -7543,6 +7641,9 @@ const methods$1 = { options = options || {}; return toJson_1(this, options); }, + wikitext: function () { + return this.wiki || ''; + }, keyValue: function () { return Object.keys(this.data).reduce((h, k) => { if (this.data[k]) { @@ -7562,20 +7663,33 @@ Infobox.prototype.template = Infobox.prototype.type; Infobox.prototype.images = Infobox.prototype.image; var Infobox_1 = Infobox; +const toText = _04Sentence.fromText; const methods = { text: function () { - return ''; + let str = this._text || ''; + return toText(str).text(); }, json: function () { - return this.data; + return this.data || {}; + }, + wikitext: function () { + return this.wiki || ''; } }; -const Template = function (data) { +const Template = function (data, text = '', wiki = '') { Object.defineProperty(this, 'data', { enumerable: false, value: data }); + Object.defineProperty(this, '_text', { + enumerable: false, + value: text + }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); }; Object.keys(methods).forEach(k => { @@ -7583,7 +7697,7 @@ Object.keys(methods).forEach(k => { }); var Template_1 = Template; -const isCitation = new RegExp('^(cite |citation)', 'i'); +const isCitation = /^(cite |citation)/i; const referenceTypes = { citation: true, refn: true, @@ -7592,33 +7706,34 @@ const referenceTypes = { }; // split Infoboxes from templates and references -const sortOut = function (keep, domain) { +const sortOut = function (list, domain) { let res = { infoboxes: [], templates: [], references: [] }; //remove references and infoboxes from our list - keep.forEach(obj => { - let kind = obj.template || obj.type || obj.name; // is it a Reference? + list.forEach(obj => { + let json = obj.json; + let kind = json.template || json.type || json.name; // is it a Reference? if (referenceTypes[kind] === true || isCitation.test(kind) === true) { - res.references.push(new Reference_1(obj)); + res.references.push(new Reference_1(json, obj.wiki)); return; } // is it an Infobox? - if (obj.template === 'infobox' && obj.subbox !== 'yes') { - obj.domain = domain; //infoboxes need this for images, i guess + if (json.template === 'infobox' && json.subbox !== 'yes') { + json.domain = domain; //infoboxes need this for images, i guess - obj.data = obj.data || {}; //validate it a little + json.data = json.data || {}; //validate it a little - res.infoboxes.push(new Infobox_1(obj)); + res.infoboxes.push(new Infobox_1(json, obj.wiki)); return; } // otherwise, it's just a template - res.templates.push(new Template_1(obj)); + res.templates.push(new Template_1(json, obj.text, obj.wiki)); }); return res; }; @@ -7638,7 +7753,18 @@ const allTemplates = function (wiki, doc) { } //parse template into json, return replacement wikitext - obj.wiki = parse$3(obj, list, doc); //remove the text from every parent + let [text, json] = parse$3(obj, doc); + obj.wiki = text; + + if (json) { + list.push({ + name: obj.name, + wiki: obj.body, + text: text, + json: json + }); + } //remove the text from every parent + const removeIt = function (node, body, out) { if (node.parent) { @@ -7990,7 +8116,7 @@ const defaults$2 = { /** * the Section class represents the different sections of the article. * we look for the == title == syntax and split and parse the sections from there - * + * * @class */ @@ -8165,12 +8291,11 @@ class Section { templates(clue) { - let arr = this._templates || []; - arr = arr.map(t => t.json()); + let arr = this._templates || []; // arr = arr.map((t) => t.json()) if (typeof clue === 'string') { clue = clue.toLowerCase(); - return arr.filter(o => o.template === clue || o.name === clue); + return arr.filter(o => o.data.template === clue || o.data.name === clue); } return arr; @@ -8205,7 +8330,7 @@ class Section { coordinates() { let arr = [...this.templates('coord'), ...this.templates('coor')]; - return arr; + return arr.map(tmpl => tmpl.json()); } /** * returns all lists in the section @@ -8474,6 +8599,16 @@ class Section { options = setDefaults_1(options, defaults$2); return this.paragraphs().map(p => p.text(options)).join('\n\n'); } + /** + * returns original wiki markup + * + * @returns {string} the original markup + */ + + + wikitext() { + return this._wiki; + } /** * returns a json version of the section * @@ -8633,9 +8768,9 @@ const defaults$1 = { }; /** * The document class is the main entry point of wtf_wikipedia. - * this class represents an article of wikipedia. + * this class represents an article of wikipedia. * from here you can go to the infoboxes or paragraphs - * + * * @class */ @@ -8855,7 +8990,7 @@ class Document { isDisambiguation() { - return disambig(this); + return isDisambig_1(this); } /** * If a clue is available return the category at that index @@ -8865,8 +9000,14 @@ class Document { */ - categories() { - return this._categories || []; + categories(clue) { + let arr = this._categories || []; + + if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; } /** * returns the sections of the document @@ -8892,6 +9033,8 @@ class Document { return arr.filter(s => { return s.title().toLowerCase() === str; }); + } else if (typeof clue === 'number') { + return [arr[clue]]; } return arr; @@ -8901,31 +9044,41 @@ class Document { * * If the clue is a number then it returns the paragraph at that index * Else it returns all paragraphs in an array - * + * @param {number | string} [clue] given index of a paragraph * @returns {object | object[]} the selected paragraph or an array of all paragraphs */ - paragraphs() { + paragraphs(clue) { let arr = []; this.sections().forEach(s => { arr = arr.concat(s.paragraphs()); }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** * if no clue is provided, it compiles an array of sentences in the wiki text. * if the clue is provided it return the sentence at the provided index - * + * @param {number | string} [clue] given index of a sentence * @returns {object[]|object} an array of sentences or a single sentence */ - sentences() { + sentences(clue) { let arr = []; this.sections().forEach(sec => { arr = arr.concat(sec.sentences()); }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** @@ -8937,7 +9090,7 @@ class Document { */ - images() { + images(clue) { let arr = _sectionMap(this, 'images', null); //grab image from infobox, first this.infoboxes().forEach(info => { @@ -8949,9 +9102,9 @@ class Document { }); //look for 'gallery' templates, too this.templates().forEach(obj => { - if (obj.template === 'gallery') { - obj.images = obj.images || []; - obj.images.forEach(img => { + if (obj.data.template === 'gallery') { + obj.data.images = obj.data.images || []; + obj.data.images.forEach(img => { if (!(img instanceof Image_1)) { img.language = this.language(); img.domain = this.domain(); @@ -8962,6 +9115,11 @@ class Document { }); } }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + return arr; } /** @@ -9109,6 +9267,16 @@ class Document { options = setDefaults_1(options, defaults$1); return toJson$6(this, options); } + /** + * return original wiki markup + * + * @returns {string} markup text + */ + + + wikitext() { + return this._wiki || ''; + } /** * prints the title of every section * @@ -9154,11 +9322,6 @@ Object.keys(singular).forEach(k => { Document.prototype[sing] = function (clue) { let arr = this[k](clue); - - if (typeof clue === 'number') { - return arr[clue]; - } - return arr[0] || null; }; }); @@ -9225,7 +9388,8 @@ const makeHeaders = function (options) { 'Content-Type': 'application/json', 'Api-User-Agent': agent, 'User-Agent': agent, - Origin: origin + Origin: origin, + 'Accept-Encoding': 'gzip' }, redirect: 'follow' }; @@ -9315,7 +9479,7 @@ const fetch$1 = function (title, options, callback) { var _fetch = fetch$1; -var _version = '8.5.1'; +var _version = '9.0.0'; /** * use the native client-side fetch function diff --git a/changelog.md b/changelog.md index 44653d84..1afafa57 100644 --- a/changelog.md +++ b/changelog.md @@ -27,6 +27,17 @@ big cleanup of .fetch() (thanks wouter!), 'parse' param for templates. - **[new]** - set new infoboxes using .extend() - deprecate wtf-plugin-category (move to wtf-plugin-api) +- plugin-api 0.0.1 +- plugin-classify 1.0.0 +- plugin-disambig 0.0.1 +- plugin-image 0.3.0 +- plugin-person 0.2.0 +- plugin-summary 0.3.0 +- plugin-wikitext 1.1.0 +- plugin-wikinews 0.0.1 +- plugin-wikivoyage 0.0.1 +- plugin-wiktionary 0.0.1 + #### 8.5.1 - fix reference json encoding for mongodb diff --git a/package.json b/package.json index b93a9b76..ed4801e8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "wtf_wikipedia", "description": "parse wikiscript into json", - "version": "8.5.1", + "version": "9.0.0", "author": "Spencer Kelly (http://spencermounta.in)", "repository": { "type": "git", @@ -33,6 +33,7 @@ "test:types": "ts-node ./tests/types/index.ts", "test:unit": "tape ./tests/unit/**/*.test.js | tap-dancer", "test": "npm run test:unit && npm run test:integration && npm run test:plugins", + "testb": "TESTENV=prod npm run test", "watch": "amble ./scratch.js" }, "bin": { diff --git a/plugins/classify/builds/wtf-plugin-classify.js b/plugins/classify/builds/wtf-plugin-classify.js index 8e151006..b504b3f8 100644 --- a/plugins/classify/builds/wtf-plugin-classify.js +++ b/plugins/classify/builds/wtf-plugin-classify.js @@ -1,4 +1,4 @@ -/* wtf-plugin-classify 0.2.0 MIT */ +/* wtf-plugin-classify 1.0.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -1586,7 +1586,7 @@ schema = setId(schema, ''); var schema_1 = schema; - let mappings = { + let mappings$5 = { categories: {}, descriptions: {}, infoboxes: {}, @@ -1594,7 +1594,7 @@ templates: {}, titles: {} }; - let patterns = { + let patterns$4 = { categories: [], descriptions: [], infoboxes: [], @@ -1607,42 +1607,42 @@ if (node.id) { // collect mappings node.categories.mapping.forEach(str => { - mappings.categories[str] = node.id; + mappings$5.categories[str] = node.id; }); node.descriptions.mapping = node.descriptions.mapping || []; node.descriptions.mapping.forEach(str => { - mappings.descriptions[str] = node.id; + mappings$5.descriptions[str] = node.id; }); node.infoboxes.mapping.forEach(str => { - mappings.infoboxes[str] = node.id; + mappings$5.infoboxes[str] = node.id; }); node.sections.mapping.forEach(str => { - mappings.sections[str] = node.id; + mappings$5.sections[str] = node.id; }); node.templates.mapping.forEach(str => { - mappings.templates[str] = node.id; + mappings$5.templates[str] = node.id; }); node.titles.mapping.forEach(str => { - mappings.titles[str] = node.id; + mappings$5.titles[str] = node.id; }); // collect patterns node.categories.patterns.forEach(reg => { - patterns.categories.push([reg, node.id]); + patterns$4.categories.push([reg, node.id]); }); node.descriptions.patterns.forEach(reg => { - patterns.descriptions.push([reg, node.id]); + patterns$4.descriptions.push([reg, node.id]); }); node.infoboxes.patterns.forEach(reg => { - patterns.infoboxes.push([reg, node.id]); + patterns$4.infoboxes.push([reg, node.id]); }); node.sections.patterns.forEach(reg => { - patterns.sections.push([reg, node.id]); + patterns$4.sections.push([reg, node.id]); }); node.templates.patterns.forEach(reg => { - patterns.templates.push([reg, node.id]); + patterns$4.templates.push([reg, node.id]); }); node.titles.patterns.forEach(reg => { - patterns.titles.push([reg, node.id]); + patterns$4.titles.push([reg, node.id]); }); } @@ -1655,12 +1655,12 @@ doNode(schema_1); var _dataFns = { - patterns, - mappings + patterns: patterns$4, + mappings: mappings$5 }; const { - mappings: mappings$1 + mappings: mappings$4 } = _dataFns; const byInfobox = function (doc) { @@ -1675,9 +1675,9 @@ type = type.replace(/ /g, '_'); type = type.trim(); - if (mappings$1.infoboxes.hasOwnProperty(type)) { + if (mappings$4.infoboxes.hasOwnProperty(type)) { found.push({ - type: mappings$1.infoboxes[type], + type: mappings$4.infoboxes[type], reason: type }); } @@ -1703,8 +1703,8 @@ var _byPattern = byPattern; const { - patterns: patterns$1, - mappings: mappings$2 + patterns: patterns$3, + mappings: mappings$3 } = _dataFns; const byCategory = function (doc) { @@ -1721,16 +1721,16 @@ for (let i = 0; i < cats.length; i++) { const category = cats[i]; // try our 1-to-1 mapping - if (mappings$2.categories.hasOwnProperty(category)) { + if (mappings$3.categories.hasOwnProperty(category)) { found.push({ - type: mappings$2.categories[category], + type: mappings$3.categories[category], reason: category }); continue; } // loop through our patterns - let match = _byPattern(category, patterns$1.categories); + let match = _byPattern(category, patterns$3.categories); if (match) { found.push({ @@ -1747,19 +1747,19 @@ const { patterns: patterns$2, - mappings: mappings$3 + mappings: mappings$2 } = _dataFns; const byTemplate = function (doc) { - let templates = doc.templates(); + let templates = doc.templates().map(tmpl => tmpl.json()); let found = []; for (let i = 0; i < templates.length; i++) { const title = templates[i].template; - if (mappings$3.templates.hasOwnProperty(title)) { + if (mappings$2.templates.hasOwnProperty(title)) { found.push({ - type: mappings$3.templates[title], + type: mappings$2.templates[title], reason: title }); } else { @@ -1781,7 +1781,7 @@ var byTemplate_1 = byTemplate; const { - mappings: mappings$4 + mappings: mappings$1 } = _dataFns; const fromSection = function (doc) { @@ -1795,9 +1795,9 @@ for (let i = 0; i < titles.length; i++) { const title = titles[i]; - if (mappings$4.sections.hasOwnProperty(title)) { + if (mappings$1.sections.hasOwnProperty(title)) { found.push({ - type: mappings$4.sections[title], + type: mappings$1.sections[title], reason: title }); } @@ -1809,10 +1809,10 @@ var bySection = fromSection; const { - patterns: patterns$3, - mappings: mappings$5 + patterns: patterns$1, + mappings } = _dataFns; - const paren = /\((.*)\)$/; + const paren$1 = /\((.*)\)$/; const byTitle = function (doc) { let title = doc.title(); @@ -1822,7 +1822,7 @@ } //look at parentheses like 'Tornado (film)' - let m = title.match(paren); + let m = title.match(paren$1); if (!m) { return []; @@ -1833,15 +1833,15 @@ inside = inside.replace(/_/g, ' '); inside = inside.trim(); //look at known parentheses - if (mappings$5.titles.hasOwnProperty(inside)) { + if (mappings.titles.hasOwnProperty(inside)) { return [{ - type: mappings$5.titles[inside], + type: mappings.titles[inside], reason: inside }]; } // look at regex - let match = _byPattern(title, patterns$3.titles); + let match = _byPattern(title, patterns$1.titles); if (match) { return [{ @@ -1856,7 +1856,7 @@ var byTitle_1 = byTitle; const { - patterns: patterns$4 + patterns } = _dataFns; const byDescription = function (doc) { @@ -1866,7 +1866,7 @@ let desc = tmpl.description || ''; desc = desc.toLowerCase(); // loop through our patterns - let match = _byPattern(desc, patterns$4.descriptions); + let match = _byPattern(desc, patterns.descriptions); if (match) { return [{ @@ -1887,14 +1887,14 @@ name: true, 'given name': true }; - const paren$1 = /\((.*)\)$/; + const paren = /\((.*)\)$/; const listOf = /^list of ./; const disambig = /\(disambiguation\)/; const skipPage = function (doc) { let title = doc.title() || ''; //look at parentheses like 'Tornado (film)' - let m = title.match(paren$1); + let m = title.match(paren); if (!m) { return null; diff --git a/plugins/classify/builds/wtf-plugin-classify.js.map b/plugins/classify/builds/wtf-plugin-classify.js.map index 8264fd0a..dfdca415 100644 --- a/plugins/classify/builds/wtf-plugin-classify.js.map +++ b/plugins/classify/builds/wtf-plugin-classify.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-classify.js","sources":["../schema/Person/Athlete/AmericanFootballPlayer.js","../schema/Person/Athlete/BaseballPlayer.js","../schema/Person/Athlete/FootballPlayer.js","../schema/Person/Athlete/BasketballPlayer.js","../schema/Person/Athlete/HockeyPlayer.js","../schema/Person/Athlete/index.js","../schema/Person/Actor.js","../schema/Person/Politician.js","../schema/Person/Musician.js","../schema/Person/Author.js","../schema/Person/index.js","../schema/Place/Jurisdiction/City.js","../schema/Place/Jurisdiction/Country.js","../schema/Place/Jurisdiction/index.js","../schema/Place/Structure/Bridge.js","../schema/Place/Structure/Airport.js","../schema/Place/Structure/index.js","../schema/Place/BodyOfWater.js","../schema/Place/index.js","../schema/Organization/MusicalGroup.js","../schema/Organization/Company.js","../schema/Organization/SportsTeam.js","../schema/Organization/PoliticalParty.js","../schema/Organization/index.js","../schema/Event/Disaster.js","../schema/Event/Election.js","../schema/Event/MilitaryConflict.js","../schema/Event/SportsEvent.js","../schema/Event/index.js","../schema/Creation/CreativeWork/Album.js","../schema/Creation/CreativeWork/Book.js","../schema/Creation/CreativeWork/Film.js","../schema/Creation/CreativeWork/TVShow.js","../schema/Creation/CreativeWork/Play.js","../schema/Creation/CreativeWork/Song.js","../schema/Creation/CreativeWork/VideoGame.js","../schema/Creation/CreativeWork/index.js","../schema/Creation/MedicalCondition.js","../schema/Creation/Organism.js","../schema/Creation/Product.js","../schema/Creation/index.js","../schema/index.js","../schema/_data-fns.js","../src/byInfobox/index.js","../src/_byPattern.js","../src/byCategory/index.js","../src/byTemplate/index.js","../src/bySection/index.js","../src/byTitle/index.js","../src/byDescription/index.js","../src/_skip/index.js","../src/score.js","../src/index.js"],"sourcesContent":["module.exports = {\n name: 'AmericanFootballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BaseballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['baseball year'],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'FootballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BasketballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'HockeyPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Athlete',\n //\n properties: {\n leagues: () => {},\n },\n children: {\n AmericanFootballPlayer: require('./AmericanFootballPlayer'),\n BaseballPlayer: require('./BaseballPlayer'),\n FootballPlayer: require('./FootballPlayer'),\n BasketballPlayer: require('./BasketballPlayer'),\n HockeyPlayer: require('./HockeyPlayer'),\n },\n //\n categories: {\n mapping: [],\n patterns: [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/],\n },\n //\n descriptions: {\n patterns: [/(hockey|soccer|backetball|football) player/],\n },\n //\n infoboxes: {\n mapping: [\n 'afl_biography',\n 'alpine_ski_racer',\n 'athlete',\n 'baseball_biography',\n 'basketball_biography',\n 'boxer',\n 'cfl_player',\n 'cricketer',\n 'cyclist',\n 'field_hockey_player',\n 'figure_skater',\n 'gaa_player',\n 'golfer',\n 'gymnast',\n 'ice_hockey_player',\n 'lacrosse_player',\n 'martial_artist',\n 'mlb_player',\n 'nba_biography',\n 'nfl_biography',\n 'nfl_player',\n 'professional_wrestler',\n 'rugby_biography',\n 'rugby_league_biography',\n 'skier',\n 'squash_player',\n 'swimmer',\n 'tennis_biography',\n 'volleyball_biography',\n 'volleyball_player',\n 'hockey team player',\n 'football biography',\n 'baseball biography',\n 'ice hockey player',\n 'nfl player',\n 'basketball biography',\n 'professional wrestler',\n 'tennis biography',\n 'afl biography',\n 'nfl biography',\n 'rugby biography',\n 'rugby league biography',\n 'nba biography',\n 'figure skater',\n 'gaa player',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/sport-bio-stub$/],\n },\n //\n titles: {\n mapping: [\n 'american football player',\n 'football player',\n 'gaelic footballer',\n 'athlete',\n 'boxer',\n 'cricketer',\n 'footballer',\n 'wrestler',\n 'golfer',\n 'swimmer',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Actor',\n //\n children: {},\n properties: {\n films: () => {},\n tv_shows: () => {},\n },\n //\n categories: {\n mapping: ['male actors from new york city'],\n patterns: [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/],\n },\n //\n descriptions: {\n patterns: [/(actor|actress)/],\n },\n //\n infoboxes: {\n mapping: ['actor'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/actor-stub$/],\n },\n //\n titles: {\n mapping: ['actor', 'actress'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Politician',\n //\n children: {},\n properties: {\n parties: () => {},\n },\n //\n categories: {\n mapping: [\n 'uk mps 2001–05',\n 'uk mps 1997–2001',\n 'uk mps 2005–10',\n 'uk mps 1992–97',\n 'labour party (uk) mps for english constituencies',\n 'conservative party (uk) mps for english constituencies',\n 'uk mps 1987–92',\n 'uk mps 2010–15',\n 'democratic party members of the united states house of representatives',\n 'republican party members of the united states house of representatives',\n 'uk mps 1983–87',\n 'democratic party state governors of the united states',\n 'california republicans',\n 'british secretaries of state',\n 'democratic party united states senators',\n 'uk mps 2015–17',\n 'republican party united states senators',\n 'republican party state governors of the united states',\n 'california democrats',\n 'uk mps 1979–83',\n 'uk mps 2017–',\n ],\n patterns: [\n /politicians from ./,\n /politician stubs$/,\n /. (democrats|republicans|politicians)$/,\n /mayors of ./,\n ],\n },\n //\n descriptions: {\n patterns: [/(politician|member of parliament)/],\n },\n //\n infoboxes: {\n mapping: [\n 'canadianmp',\n 'governor',\n 'indian_politician',\n 'mp',\n 'officeholder',\n 'politician',\n 'politician_(general)',\n 'president',\n 'roman_emperor',\n 'state_representative',\n 'state_senator',\n 'congressman',\n 'prime minister',\n 'indian politician',\n 'senator',\n 'state representative',\n 'state senator',\n 'us cabinet official',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['list of united states senators congress'],\n patterns: [/(politician|mayor)-stub$/],\n },\n //\n titles: {\n mapping: [\n 'australian politician',\n 'canadian politician',\n 'politician',\n 'british politician',\n 'governor',\n 'irish politician',\n 'mayor',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Musician',\n //\n children: {},\n properties: {\n groups: () => {},\n instruments: () => {},\n },\n //\n categories: {\n mapping: [\n 'american male guitarists',\n 'american singer-songwriters',\n 'american male singers',\n 'american rock singers',\n 'american rock guitarists',\n '21st-century american singers',\n 'lead guitarists',\n 'african-american musicians',\n 'english male singers',\n 'american male singer-songwriters',\n 'american rock songwriters',\n 'american record producers',\n 'american country singer-songwriters',\n '20th-century american guitarists',\n 'english songwriters',\n '20th-century american pianists',\n 'songwriters from new york (state)',\n 'african-american singers',\n 'american blues singers',\n 'american pop singers',\n 'male guitarists',\n 'american country singers',\n 'blues hall of fame inductees',\n 'american male songwriters',\n 'songwriters from california',\n 'english rock guitarists',\n 'american folk singers',\n 'english rock singers',\n 'english singer-songwriters',\n 'african-american male rappers',\n 'african-american jazz musicians',\n '20th-century english singers',\n 'american female singer-songwriters',\n 'jewish american musicians',\n 'american blues guitarists',\n '20th-century conductors (music)',\n 'american female singers',\n 'american jazz bandleaders',\n 'american jazz pianists',\n 'american soul singers',\n 'american female guitarists',\n 'american multi-instrumentalists',\n 'american country guitarists',\n 'english record producers',\n 'songwriters from texas',\n 'american composers',\n 'singers from california',\n 'american folk guitarists',\n 'lgbt singers',\n 'american buskers',\n 'guitarists from california',\n 'feminist musicians',\n 'big band bandleaders',\n '20th-century composers',\n 'african-american songwriters',\n 'british rhythm and blues boom musicians',\n 'alternative rock singers',\n '21st-century american guitarists',\n 'american alternative rock musicians',\n 'musicians from los angeles',\n 'rhythm guitarists',\n 'american session musicians',\n 'jazz musicians from new orleans',\n 'alternative rock guitarists',\n '20th-century women musicians',\n 'male film score composers',\n 'african-american singer-songwriters',\n 'american jazz singers',\n '21st-century english singers',\n 'singers from new york city',\n 'american acoustic guitarists',\n 'musicians from new york city',\n 'slide guitarists',\n 'guitarists from texas',\n 'vaudeville performers',\n ],\n patterns: [/musicians from ./, /(singers|songwriters|painters|poets)/],\n },\n //\n descriptions: {\n patterns: [/(singer|musicianrapper|drummer)/, /(keyboard|guitar|bass) player/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/(musician|singer)-stub$/],\n },\n //\n titles: {\n mapping: ['composer', 'musician', 'rapper', 'singer'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Author',\n //\n children: {},\n properties: {\n works: () => {},\n },\n //\n categories: {\n mapping: [\n '20th-century american novelists',\n 'american male novelists',\n 'american film directors',\n '21st-century american novelists',\n 'american film producers',\n 'american male screenwriters',\n 'american science fiction writers',\n '20th-century english novelists',\n 'english male poets',\n 'american male short story writers',\n 'american political writers',\n 'english male novelists',\n '20th-century american writers',\n '19th-century male writers',\n 'american male writers',\n '20th-century women writers',\n '20th-century male writers',\n 'german male writers',\n '21st-century american writers',\n 'french male writers',\n 'jewish american writers',\n 'writers from new york city',\n '21st-century women writers',\n 'english male writers',\n ],\n patterns: [/novelists from ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Person',\n children: {\n Athlete: require('./Athlete'),\n Actor: require('./Actor'),\n Politician: require('./Politician'),\n Musician: require('./Musician'),\n Author: require('./Author'),\n },\n properties: {\n birth_date: () => {},\n birth_place: () => {},\n nationality: () => {},\n death_date: () => {},\n death_place: () => {},\n },\n //\n categories: {\n mapping: [\n 'living people',\n 'possibly living people',\n 'year of birth unknown',\n 'fellows of the royal society',\n 'members of the privy council of the united kingdom',\n 'american people of english descent',\n 'guggenheim fellows',\n 'harvard university alumni',\n 'american military personnel of world war ii',\n 'knights bachelor',\n 'american roman catholics',\n 'knights of the garter',\n 'presidential medal of freedom recipients',\n 'commanders of the order of the british empire',\n 'people educated at eton college',\n 'alumni of trinity college, cambridge',\n 'foreign members of the royal society',\n 'american people of scottish descent',\n 'american memoirists',\n 'members of the french academy of sciences',\n 'united states army soldiers',\n 'officers of the order of the british empire',\n 'deaths from pneumonia',\n 'burials at père lachaise cemetery',\n 'deaths from cancer in california',\n 'year of birth missing (living people)',\n 'knights of the golden fleece',\n 'columbia university alumni',\n 'alumni of the university of edinburgh',\n 'american people of russian-jewish descent',\n 'yale university alumni',\n 'american atheists',\n 'people of the tudor period',\n 'tony award winners',\n 'members of the académie française',\n 'united states army officers',\n 'persons of national historic significance (canada)',\n '20th-century american businesspeople',\n 'american television producers',\n 'american journalists',\n 'american male journalists',\n 'american male comedians',\n 'princeton university alumni',\n 'university of paris alumni',\n 'american episcopalians',\n 'american women novelists',\n 'phi beta kappa members',\n '20th-century american poets',\n 'bafta winners (people)',\n \"members of the queen's privy council for canada\",\n 'american presbyterians',\n 'fellows of the american academy of arts and sciences',\n 'members of the united states national academy of sciences',\n 'members of the royal swedish academy of sciences',\n '20th-century american short story writers',\n 'american nobel laureates',\n 'harvard university faculty',\n 'roman catholic monarchs',\n 'popes',\n 'italian popes',\n ],\n patterns: [\n /[0-9]{4} births/,\n /[0-9]{4} deaths/,\n /people of .* descent/,\n /^deaths from /,\n /^(people|philanthropists|writers) from ./,\n / (players|alumni)$/,\n /(alumni|fellows) of .$/,\n /(people|writer) stubs$/,\n /(american|english) (fe)?male ./,\n /(american|english) (architects|people)/,\n ],\n },\n //\n descriptions: {\n patterns: [/(artist|painter|poet|writer|celebrity|activist)/],\n },\n //\n infoboxes: {\n mapping: [\n 'adult_biography',\n 'architect',\n 'chef',\n 'chess_player',\n 'christian_leader',\n 'college_coach',\n 'college_football_player',\n 'comedian',\n 'comics_creator',\n 'criminal',\n 'engineer',\n 'fashion_designer',\n 'football_biography',\n 'gridiron_football_person',\n 'handball_biography',\n 'hindu_leader',\n 'horseracing_personality',\n 'judge',\n 'mass_murderer',\n 'medical_person',\n 'military_person',\n 'model',\n 'monarch',\n 'nascar_driver',\n 'person',\n 'philosopher',\n 'police_officer',\n 'presenter',\n 'racing_driver',\n 'religious_biography',\n 'royalty',\n 'sportsperson',\n 'wrc_driver',\n 'writer',\n 'snooker player',\n 'military person',\n 'college coach',\n 'f1 driver',\n 'gridiron football person',\n 'racing driver',\n 'martial artist',\n 'chinese-language singer and actor',\n 'astronaut',\n 'nascar driver',\n 'adult biography',\n 'coa wide',\n 'chess player',\n 'pageant titleholder',\n\n //religious person\n 'archbishop',\n 'minister',\n 'saint',\n 'bishop',\n 'christian leader',\n 'religious biography',\n // artist\n 'artist',\n 'comics creator',\n // academic\n 'economist',\n 'scholar',\n 'scientist',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'early life',\n 'personal life',\n 'career',\n 'career statistics',\n 'playing career',\n 'life and career',\n 'early life and education',\n 'film and television credits',\n 'filmography',\n 'selected filmography',\n 'works',\n 'life',\n 'family',\n 'political career',\n 'early career',\n 'later life',\n 'early life and career',\n 'later years',\n 'death and legacy',\n 'work',\n 'novels',\n 'later career',\n 'international',\n 'selected works',\n 'writings',\n 'professional career',\n 'retirement',\n 'poetry',\n 'marriage',\n 'electoral history',\n 'military career',\n 'international career',\n 'parliamentary career',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'persondata',\n 'writer',\n 'ted speaker',\n 's-aft',\n 's-bef',\n 's-start',\n 'marriage',\n 's-off',\n 's-par',\n 'internet archive author',\n 'ribbon devices',\n 's-reg',\n 'find a grave',\n 'gutenberg author',\n 's-new',\n 'other people',\n 'medalgold',\n 'medal',\n 'mlby',\n 's-vac',\n 's-hou',\n 'librivox author',\n 'blp sources',\n 's-ppo',\n 'nbay',\n ],\n patterns: [/-bio-stub$/],\n },\n //\n titles: {\n mapping: [\n 'murder victim',\n 'academic',\n 'author',\n 'businessman',\n 'cyclist',\n 'diplomat',\n 'director',\n 'drummer',\n 'journalist',\n 'judge',\n 'minister',\n 'poet',\n 'priest',\n 'american football',\n 'ice hockey',\n 'soccer',\n 'rugby league',\n 'rugby union',\n 'field hockey',\n 'tennis',\n 'writer',\n 'vc',\n 'racing driver',\n 'architect',\n 'comedian',\n 'british army officer',\n 'general',\n 'broadcaster',\n 'engineer',\n 'physician',\n 'soldier',\n 'royal navy officer',\n 'producer',\n 'lawyer',\n 'activist',\n 'inventor',\n\n 'artist',\n 'painter',\n 'cartoonist',\n 'novelist',\n 'photographer',\n 'playwright',\n 'bishop',\n 'theologian',\n 'historian',\n 'philosopher',\n 'mathematician',\n 'astronomer',\n 'economist',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'City',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [\n /^cities and towns in ./,\n /(municipalities|settlements|villages|localities|townships) in ./,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'swiss town',\n 'city japan',\n 'municipality br',\n 'russian town',\n 'south african town 2011',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'sister cities',\n 'neighbourhoods',\n 'churches',\n 'parks and recreation',\n 'public transportation',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Country',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: ['international relations'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['country'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Jurisdiction',\n children: {\n City: require('./City'),\n Country: require('./Country'),\n },\n properties: {\n population: () => {},\n leader: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n '2010 census',\n '2000 census',\n 'economy',\n 'transportation',\n 'government',\n 'communities',\n 'transport',\n 'culture',\n 'sports',\n 'adjacent counties',\n 'major highways',\n 'notable residents',\n 'tourism',\n 'cities',\n 'population',\n 'unincorporated communities',\n 'infrastructure',\n 'schools',\n 'rail',\n 'census-designated places',\n 'towns',\n 'local government',\n 'points of interest',\n 'attractions',\n 'demographics',\n 'climate',\n 'notable people',\n 'townships',\n 'recreation',\n 'arts and culture',\n 'governance',\n 'administrative divisions',\n 'landmarks',\n 'demography',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Bridge',\n //\n children: {},\n properties: {\n length: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Airport',\n //\n children: {},\n properties: {\n airlines: () => {},\n runways: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Structure',\n //\n children: {\n Bridge: require('./Bridge'),\n Airport: require('./Airport'),\n },\n properties: {\n date_created: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [\n /(buildings|bridges) completed in /,\n /airports established in ./,\n /(airports|bridges) in ./,\n /buildings and structures in ./,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'airport',\n 'bridge',\n 'building',\n 'power_station',\n 'religious_building',\n 'stadium',\n 'uk school',\n 'military structure',\n 'religious building',\n 'shopping mall',\n 'lighthouse',\n 'power station',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BodyOfWater',\n //\n children: {},\n properties: {},\n //\n categories: {\n mapping: [],\n patterns: [/(rivers|lakes|tributaries) of ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['body_of_water', 'lake', 'river', 'sea', 'body of water'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-river-stub$/],\n },\n //\n titles: {\n mapping: ['river'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Place',\n children: {\n Jurisdiction: require('./Jurisdiction'),\n Structure: require('./Structure'),\n BodyOfWater: require('./BodyOfWater'),\n },\n properties: {\n location: () => {},\n coordinates: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [\n /populated places/,\n /landforms of ./,\n /railway stations/,\n /parks in ./,\n / district$/,\n /geography stubs$/,\n /sports venue stubs$/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'amusement_park',\n 'ancient_site',\n 'australian_place',\n 'casino',\n 'cemetery',\n 'church',\n 'cricket_ground',\n 'dam',\n 'feature_on_mars',\n 'former_country',\n 'former_subdivision',\n 'french_commune',\n 'german_location',\n 'golf_facility',\n 'historic_site',\n 'hospital',\n 'hotel',\n 'islands',\n 'israel_village',\n 'italian_comune',\n 'launch_pad',\n 'military_memorial',\n 'military_structure',\n 'monument',\n 'mountain',\n 'mountain_pass',\n 'mountain_range',\n 'museum',\n 'neighborhood_portland_or',\n 'oil_field',\n 'park',\n 'prison',\n 'province_or_territory_of_canada',\n 'road',\n 'road_small',\n 'russian_inhabited_locality',\n 'russian_town',\n 'russian_urban-type_settlement',\n 'school',\n 'scotland_council_area',\n 'settlement',\n 'shopping_mall',\n 'south_african_subplace_2011',\n 'state',\n 'station',\n 'street',\n 'swiss_town',\n 'temple',\n 'town_at',\n 'u.s._metropolitan_area',\n 'u.s._state',\n 'uk_constituency',\n 'uk_disused_station',\n 'uk_place',\n 'uk_school',\n 'unesco_world_heritage_site',\n 'university_of_notre_dame_residence_hall',\n 'venue',\n 'waterfall',\n 'windmill',\n 'zoo',\n 'ecoregion',\n 'uk place',\n 'italian comune',\n 'geobox',\n 'australian place',\n 'french commune',\n 'german location',\n 'u.s. county',\n 'former country',\n 'road small',\n 'lunar crater',\n 'gb station',\n 'greek dimos',\n 'uk constituency main',\n 'finnish municipality/population count',\n 'ancient site',\n 'mountain range',\n 'london station',\n 'former subdivision',\n 'uk station',\n 'historic site',\n 'world heritage site',\n 'diocese',\n 'uk disused station',\n 'belgium municipality',\n 'uk constituency',\n 'theatre',\n 'canada electoral district',\n 'nycs',\n 'mountain pass',\n 'kommune',\n 'historic subdivision',\n 'u.s. congressional district',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: ['geography', 'geology', 'location', 'coat of arms'],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'coord',\n 'weather box',\n 'us census population',\n 'jct',\n 'geographic location',\n 'representative',\n 'historical populations',\n 'wikivoyage-inline',\n 'election box',\n 'zh',\n 'wide image',\n ],\n patterns: [/-geo-stub$/],\n },\n //\n titles: {\n mapping: [\n 'cape verde',\n 'cedar busway station',\n 'delhi metro',\n 'erie county, new york',\n 'new jersey',\n 'new orleans',\n 'new york City Subway',\n 'new york',\n 'new zealand',\n 'north carolina',\n 'northern ireland',\n 'sri lanka',\n 'uk parliament constituency',\n 'united kingdom',\n 'united states',\n 'alaska',\n 'argentina',\n 'arkansas',\n 'australia',\n 'barbados',\n 'brazil',\n 'california',\n 'canada',\n 'chad',\n 'chicago',\n 'colombia',\n 'connecticut',\n 'dominica',\n 'edmonton',\n 'france',\n 'georgia',\n 'india',\n 'israel',\n 'japan',\n 'manhattan',\n 'michigan',\n 'nigeria',\n 'oklahoma',\n 'ontario',\n 'pennsylvania',\n 'portugal',\n 'province',\n 'spain',\n 'sudan',\n 'texas',\n 'uk',\n 'va',\n 'Virginia',\n 'volcano',\n 'washington',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'MusicalGroup',\n //\n children: {},\n properties: {\n albums: () => {},\n },\n //\n categories: {\n mapping: [\n 'musical quartets',\n 'musical duos',\n 'musical trios',\n 'musical quintets',\n 'english rock music groups',\n 'english new wave musical groups',\n 'african-american musical groups',\n '21st-century american musicians',\n 'american alternative metal musical groups',\n 'english pop music groups',\n 'art rock musical groups',\n 'english post-punk music groups',\n ],\n patterns: [\n /musical groups from /,\n /musical groups (dis)?established in [0-9]{4}/,\n /musical group stubs/,\n /. music(al)? (groups|duos|trios|quartets|quintets)$/,\n ],\n },\n //\n descriptions: {\n patterns: [/rock band/],\n },\n //\n infoboxes: {\n mapping: ['musical_artist'],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'band members',\n 'albums',\n 'studio albums',\n 'compilation albums',\n 'live albums',\n 'compilations',\n 'eps',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: ['allmusic'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'band',\n 'american band',\n 'australian band',\n 'canadian band',\n 'uk band',\n 'japanese band',\n 'swedish band',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Company',\n //\n children: {},\n //\n categories: {\n mapping: [\n 'companies listed on the new york stock exchange',\n 'jazz record labels',\n 'video game development companies',\n 'american record labels',\n 'companies listed on nasdaq',\n 'video game companies of the united states',\n 'companies formerly listed on the london stock exchange',\n 'multinational companies headquartered in the united states',\n 'companies listed on the tokyo stock exchange',\n 're-established companies',\n 'companies based in new york city',\n 'defunct video game companies',\n 'companies formed by merger',\n 'entertainment companies based in california',\n ],\n patterns: [/companies (established|based) in ./],\n },\n //\n descriptions: {\n patterns: [/(company|subsidary)/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: ['products'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-company-stub$/],\n },\n //\n titles: {\n mapping: ['company', 'newspaper', 'restaurant', 'retailer', 'store'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'SportsTeam',\n //\n children: {},\n properties: {\n coaches: () => {},\n },\n //\n categories: {\n mapping: [\n 'football clubs in england',\n 'english football league clubs',\n 'southern football league clubs',\n 'football clubs in scotland',\n 'premier league clubs',\n 'national basketball association teams',\n ],\n patterns: [\n /football clubs in ./,\n /(basketball|hockey|baseball|football) teams (in|established) ./,\n ],\n },\n //\n descriptions: {\n patterns: [/(basketball|hockey|soccer|football|sports) team/],\n },\n //\n infoboxes: {\n mapping: [\n 'basketball_club',\n 'pro_hockey_team',\n 'college_ice_hockey_team',\n 'college_soccer_team',\n 'cricket_team',\n 'football_club',\n 'non_test_cricket_team',\n 'non-profit',\n 'rugby_league_club',\n 'rugby_league_representative_team',\n 'rugby_team',\n 'baseball team',\n 'football club',\n 'rugby team',\n 'national football team',\n 'basketball club',\n 'hockey team',\n 'rugby league club',\n 'football club infobox',\n 'cricket team',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: ['coaching staff', 'head coaches', 'team records', 'current squad'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-sport-team-stub$/],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'PoliticalParty',\n //\n children: {},\n //\n categories: {\n mapping: ['social democratic parties'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [/political party/],\n },\n //\n infoboxes: {\n mapping: ['political_party', 'political party'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['political party'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Organization',\n //\n children: {\n MusicalGroup: require('./MusicalGroup'),\n Company: require('./Company'),\n SportsTeam: require('./SportsTeam'),\n PoliticalParty: require('./PoliticalParty'),\n },\n properties: {\n leaders: () => {},\n members: () => {},\n },\n //\n categories: {\n mapping: [\n 'japanese brands',\n 'american jazz composers',\n 'scouting in the united states',\n 'car brands',\n 'government-owned airlines',\n 'baptist denominations in north america',\n 'baptist denominations established in the 20th century',\n 'land-grant universities and colleges',\n 'organizations based in washington, d.c.',\n 'video game publishers',\n 'defunct motor vehicle manufacturers of the united states',\n 'alternative rock groups from california',\n ],\n patterns: [\n /(organi[sz]ations|publications) based in /,\n /(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,\n /(secondary|primary) schools/,\n /military units/,\n /magazines/,\n /organi[sz]ation stubs$/,\n ],\n },\n //\n descriptions: {\n patterns: [/(charity|organization|ngo)/],\n },\n //\n infoboxes: {\n mapping: [\n 'airline',\n 'broadcasting_network',\n 'cbb_team',\n 'choir',\n 'college',\n 'company',\n 'dot-com_company',\n 'film_awards',\n 'film_festival',\n 'football_league',\n 'gaa_club',\n 'government_agency',\n 'government_cabinet',\n 'journal',\n 'laboratory',\n 'law_enforcement_agency',\n 'legislature',\n 'library',\n 'military_unit',\n 'national_military',\n 'ncaa_football_school',\n 'newspaper',\n 'nobility',\n 'organization',\n 'public_transit',\n 'publisher',\n 'radio_station',\n 'rail_line',\n 'rail_service',\n 'record_label',\n 'school_district',\n 'sport_governing_body',\n 'sports_league',\n 'television_channel',\n 'tv_channel',\n 'u.s._cabinet',\n 'u.s._legislation',\n 'uk_legislation',\n 'university',\n 'v8_supercar_team',\n 'former monarchy',\n 'criminal organization',\n 'radio station',\n 'military unit',\n 'government agency',\n 'rail line',\n 'record label',\n 'school district',\n 'tv channel',\n 'sports league',\n 'football league',\n 'worldscouting',\n 'sg rail',\n 'law enforcement agency',\n 'uk legislation',\n 'public transit',\n 'us university ranking',\n 'television channel',\n 'bus transit',\n 'union',\n 'broadcasting network',\n 'christian denomination',\n 'film awards',\n 'gaa club',\n 'fraternity',\n 'rail',\n 'rail service',\n 'national military',\n 'sport governing body',\n 'political party/seats',\n 'athletic conference',\n 'film festival',\n 'dot-com company',\n 'india university ranking',\n 'uk university rankings',\n 'government cabinet',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'founding',\n 'founders',\n 'members',\n 'athletics',\n 'notable alumni',\n 'academics',\n 'campus',\n 'organization',\n 'student life',\n 'rankings',\n 'fleet',\n 'research',\n 'formation',\n 'operations',\n 'players',\n 'alumni',\n 'former members',\n 'presidents',\n 'membership',\n 'current members',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: ['composition bar', 'fs player', 'y', 'n', 'rws'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'group',\n 'journal',\n 'am',\n 'fm',\n 'wehrmacht',\n 'tv channel',\n 'british band',\n 'organization',\n 'airline',\n 'publisher',\n 'brand',\n 'record label',\n 'union army',\n 'defunct',\n 'tv network',\n 'department store',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Disaster',\n children: {},\n properties: {\n casualties: () => {},\n },\n //\n categories: {\n mapping: ['retired atlantic hurricanes'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'aircraft_accident',\n 'airliner_accident',\n 'earthquake',\n 'hurricane',\n 'pandemic',\n 'airliner accident',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Election',\n children: {},\n //\n categories: {\n mapping: ['presidential elections in ireland'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['election'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['election summary party with leaders'],\n patterns: [/-election-stub$/],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'MilitaryConflict',\n children: {},\n //\n categories: {\n mapping: [\n 'wars involving the united kingdom',\n 'proxy wars',\n 'new zealand wars',\n 'battles between england and scotland',\n 'conflicts in 1943',\n 'last stand battles',\n 'battles and conflicts without fatalities',\n 'guerrilla wars',\n '20th-century conflicts',\n '20th-century revolutions',\n 'sieges involving japan',\n 'revolution-based civil wars',\n ],\n patterns: [/conflicts (in|of) [0-9]{4}/, /(wars|battles|conflicts) (involving|of|in) ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['military_conflict', 'military conflict', 'civil conflict', 'civilian attack'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'SportsEvent',\n children: {},\n properties: {\n winners: () => {},\n },\n //\n categories: {\n mapping: [\n '1904 summer olympics events',\n '1900 summer olympics events',\n '2002 winter olympics events',\n ],\n patterns: [\n /. league seasons$/,\n /^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'athletics_championships',\n 'badminton_event',\n 'boxingmatch',\n 'fila_wrestling_event',\n 'football_club_season',\n 'football_country_season',\n 'football_league_season',\n 'football_match',\n 'football_tournament_season',\n 'little_league_world_series',\n 'nba_season',\n 'ncaa_baseball_conference_tournament',\n 'ncaa_football_single_game',\n 'ncaa_team_season',\n 'nfl_season',\n 'nfl_single_game',\n 'sports_season',\n 'tennis_event',\n 'tennis_grand_slam_events',\n 'wrestling_event',\n 'football tournament',\n 'olympic event',\n 'international football competition',\n 'wrestling event',\n 'sports season',\n 'cycling race report',\n 'ncaa team season',\n 'cricket tournament',\n 'football match',\n 'world series expanded',\n 'mma event',\n 'nfl season',\n 'nfl draft',\n 'athletics championships',\n 'football club season',\n 'canadian football game',\n 'australian rules football season',\n 'football tournament season',\n 'international ice hockey competition',\n 'cricket tour',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Event',\n properties: {\n dates: () => {},\n places: () => {},\n },\n children: {\n Disaster: require('./Disaster'),\n Election: require('./Election'),\n MilitaryConflict: require('./MilitaryConflict'),\n SportsEvent: require('./SportsEvent'),\n },\n //\n categories: {\n mapping: [\n 'years in literature',\n 'years in music',\n 'years in film',\n 'united states supreme court cases',\n 'leap years in the gregorian calendar',\n \"governor general's awards\",\n 'eurovision song contest by year',\n 'grammy awards ceremonies',\n 'united kingdom in the eurovision song contest',\n 'manned soyuz missions',\n 'american civil liberties union litigation',\n 'may',\n 'october',\n 'missions to the moon',\n 'world war ii british commando raids',\n 'july',\n 'december',\n 'september',\n 'november',\n 'january',\n 'june',\n 'august',\n 'april',\n 'february',\n 'march',\n 'conflicts in 1944',\n 'missions to mars',\n 'luna program',\n 'conflicts in 1942',\n 'special air service',\n 'soft landings on the moon',\n 'may observances',\n 'first events',\n 'recent years',\n 'elections not won by the popular vote winner',\n 'conflicts in 1864',\n '1862 in the american civil war',\n 'new york (state) in the american revolution',\n 'march observances',\n 'public holidays in the united states',\n '1944 in france',\n 'december observances',\n '20th century american trials',\n 'african-american civil rights movement (1954–68)',\n 'october observances',\n 'spring holidays',\n 'years in aviation',\n 'national days',\n 'summer holidays',\n 'apollo program',\n ],\n patterns: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'beauty_pageant',\n 'civil_conflict',\n 'concert_tour',\n 'court_case',\n 'event',\n 'historical_era',\n 'holiday',\n 'horseraces',\n 'individual_snooker_tournament',\n 'legislative_term',\n 'music_festival',\n 'nfl_draft',\n 'pba_draft',\n 'reality_music_competition',\n 'recurring_event',\n 'song_contest',\n 'summit',\n 'grand prix race report',\n 'recurring event',\n 'music festival',\n 'football league season',\n 'scotus case',\n 'court case',\n 'concert tour',\n 'international labour organization convention',\n 'song contest',\n 'australian year',\n 'individual darts tournament',\n 'beauty pageant',\n 'historical event',\n 'grand prix motorcycle race report',\n 'international handball competition',\n 'coa case',\n 'individual snooker tournament',\n 'esc national year',\n 'indy500',\n 'national political convention',\n 'referendum',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'aftermath',\n 'births',\n 'deaths',\n 'battle',\n 'results',\n 'prelude',\n 'may',\n 'june',\n 'march',\n 'december',\n 'october',\n 'july',\n 'august',\n 'april',\n 'november',\n 'february',\n 'september',\n 'january',\n 'incumbents',\n 'casualties',\n 'july to december',\n 'january to june',\n 'medal table',\n 'campaign',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'esc',\n 'year nav',\n 'year dab',\n 'goal',\n 'flagiocmedalist',\n 'm1 year in topic',\n 'year nav topic5',\n 'bc year in topic',\n 'flagiocathlete',\n 'year article header',\n ],\n patterns: [],\n },\n //\n titles: {\n mapping: ['festival', '25 m', 'world war ii', 'conmebol', 'music festival', 'world war i'],\n patterns: [/ \\((19|20)[0-9]{2}\\)$/],\n },\n}\n","module.exports = {\n name: 'Album',\n children: {},\n //\n categories: {\n mapping: ['albums recorded at abbey road studios'],\n patterns: [/[0-9]{4}.*? albums/, /^albums /, / albums$/, /album stubs$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['album'],\n patterns: [],\n },\n //\n sections: {\n mapping: ['track listing'],\n patterns: [],\n },\n //\n templates: {\n mapping: ['track listing', 'tracklist'],\n patterns: [/-album-stub$/],\n },\n //\n titles: {\n mapping: ['album'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Book',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/(film|novel) stubs$/, /[0-9]{4}.*? (poems|novels)/, / (poems|novels)$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['book'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-novel-stub$/],\n },\n //\n titles: {\n mapping: ['book', 'novel'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Film',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/[0-9]{4}.*? films/, / films$/, /^films /],\n },\n //\n descriptions: {\n patterns: [/[0-9]{4} film/],\n },\n //\n infoboxes: {\n mapping: ['film'],\n patterns: [],\n },\n //\n sections: {\n mapping: ['cast'],\n patterns: [],\n },\n //\n templates: {\n mapping: ['imdb title', 'film date', 'rotten-tomatoes'],\n patterns: [/-film-stub$/],\n },\n //\n titles: {\n mapping: ['movie'],\n patterns: [/ \\([0-9]{4} film\\)$/],\n },\n}\n","module.exports = {\n name: 'TVShow',\n children: {},\n properties: {\n seasons: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [/television series/],\n },\n //\n descriptions: {\n patterns: [/television series/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['episode list'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'tv series',\n 'game show',\n 'u.s. tv series',\n 'uk tv series',\n 'australian tv series',\n 'u.s. game show',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Play',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['play'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-play-stub$/],\n },\n //\n titles: {\n mapping: ['play'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Song',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/[0-9]{4}.*? songs/, /^songs /, / songs$/, /song stubs$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['song'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'VideoGame',\n children: {},\n properties: {\n platforms: () => {},\n },\n //\n categories: {\n mapping: [\n 'dos games',\n 'virtual console games',\n 'mac os games',\n 'amiga games',\n 'arcade games',\n 'commodore 64 games',\n 'nintendo entertainment system games',\n 'playstation (console) games',\n 'ios games',\n 'super nintendo entertainment system games',\n 'video game sequels',\n 'game boy advance games',\n 'first-person shooters',\n 'playstation network games',\n 'linux games',\n 'atari st games',\n 'playstation 2 games',\n 'game boy games',\n 'zx spectrum games',\n 'mario universe games',\n 'multiplayer online games',\n 'mobile games',\n 'android (operating system) games',\n 'platform games',\n 'xbox 360 live arcade games',\n 'sega genesis games',\n ],\n patterns: [/video games/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['video game'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['video game'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'CreativeWork',\n children: {\n Album: require('./Album'),\n Book: require('./Book'),\n Film: require('./Film'),\n TVShow: require('./TVShow'),\n Play: require('./Play'),\n Song: require('./Song'),\n VideoGame: require('./VideoGame'),\n },\n //\n properties: {\n genre: () => {},\n },\n //\n categories: {\n mapping: [\n 'operas',\n 'american science fiction novels',\n 'broadway musicals',\n 'debut novels',\n 'the twilight zone (1959 tv series) episodes',\n 'united states national recording registry recordings',\n 'macos games',\n 'virtual console games for wii u',\n 'american monthly magazines',\n 'broadway plays',\n 'interactive achievement award winners',\n 'doubleday (publisher) books',\n '19th-century classical composers',\n 'film soundtracks',\n 'universal deluxe editions',\n 'best picture academy award winners',\n 'shōnen manga',\n 'west end musicals',\n 'sequel novels',\n 'dystopian novels',\n 'american comic strips',\n 'american road movies',\n 'chemical elements',\n 'amstrad cpc games',\n 'neo-noir',\n 'fiction with unreliable narrators',\n 'best drama picture golden globe winners',\n 'adventure anime and manga',\n ],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'artwork',\n 'book_series',\n 'broadcast',\n 'comic_book_title',\n 'comic_strip',\n 'doctor_who_episode',\n 'hollywood_cartoon',\n 'magazine',\n 'musical',\n 'musical_composition',\n 'opera',\n 'painting',\n 'radio_show',\n 'song',\n 'song_contest_entry',\n 'television_episode',\n 'television_season',\n 'treaty',\n 'video_game',\n 'anthem',\n 'television episode',\n 'comic book title',\n 'song contest entry',\n 'short story',\n 'hollywood cartoon',\n 'radio show',\n 'simpsons episode',\n 'musical composition',\n 'book series',\n 'comic strip',\n 'television season',\n 'comics organization',\n 'doctor who episode',\n 'animanga/other',\n 'graphic novel',\n 'rpg',\n 'big finish',\n 'vg series',\n 'name module',\n 'comics story arc',\n 'video game series',\n 'futurama episode',\n 'comics character and title',\n 'comics meta series',\n 'webcomic',\n 'the goodies episode',\n 'audio drama',\n 'sw comics',\n 'media franchise',\n 'folk tale',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'plot',\n 'reception',\n 'charts',\n 'release',\n 'plot summary',\n 'gameplay',\n 'characters',\n 'box office',\n 'accolades',\n 'soundtrack',\n 'adaptations',\n 'synopsis',\n 'home media',\n 'weekly charts',\n 'themes',\n 'publication history',\n 'filming',\n 'year-end charts',\n 'casting',\n 'release and reception',\n 'commercial performance',\n 'composition',\n 'album',\n 'setting',\n 'chart positions',\n 'release history',\n 'charts and certifications',\n 'sequels',\n 'chart performance',\n 'sequel',\n 'recordings',\n 'story',\n 'editions',\n 'in other media',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'rating',\n 'certification table entry',\n 'albumchart',\n 'music',\n 'album ratings',\n 'album chart',\n 'singles',\n 'isbnt',\n 'singlechart',\n 'tcmdb title',\n 'mojo title',\n 'based on',\n 'amg movie',\n 'duration',\n ],\n patterns: [/-song-stub$/],\n },\n //\n titles: {\n mapping: [\n 'season 2',\n 'season 3',\n 'season 4',\n 'season 5',\n 'the twilight zone',\n 'ballet',\n 'magazine',\n 'miniseries',\n 'music',\n 'opera',\n 'painting',\n 'series',\n 'single',\n 'song',\n 'soundtrack',\n 'ep',\n 'comics',\n 'musical',\n 'manga',\n 'star trek: the next generation',\n 'star trek: deep space nine',\n 'buffy the vampire slayer',\n 'angel',\n 'the outer limits',\n 'star trek: voyager',\n 'short story',\n 'seinfeld',\n 'star trek: enterprise',\n 'poem',\n 'tv',\n 'uk series',\n 'doctor who',\n 'david bowie song',\n 'caravaggio',\n 'the beach boys song',\n 'video',\n 'audio drama',\n 'babylon 5',\n 'madonna song',\n ],\n patterns: [/ \\((.*? )song\\)$/],\n },\n}\n","module.exports = {\n name: 'MedicalCondition',\n //\n children: {},\n properties: {\n causes: () => {},\n treatments: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['medical condition (new)', 'medical condition', 'disease'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Organism',\n //\n children: {},\n properties: {\n // taxonomy: () => {},\n // members: () => {},\n },\n //\n categories: {\n mapping: [\n 'taxa named by carl linnaeus',\n 'ornamental trees',\n 'birds by common name',\n 'living fossils',\n 'taxa named by john edward gray',\n 'phelsuma',\n 'multituberculates',\n 'angiosperm orders',\n 'cimolodonts',\n 'urban animals',\n 'flowers',\n 'geckos',\n 'herbs',\n 'spices',\n 'skinks',\n 'cretaceous mammals',\n 'commercial fish',\n 'paleocene mammals',\n 'bird families',\n 'edible nuts and seeds',\n 'invasive plant species',\n 'leaf vegetables',\n 'root vegetables',\n 'corvus (genus)',\n 'insects in culture',\n 'ducks',\n 'agamidae',\n 'edge species',\n 'tropical fruit',\n 'pinus',\n 'tropical agriculture',\n 'indian spices',\n 'paleocene genus extinctions',\n 'epiphytic orchids',\n 'crops',\n 'fruits originating in asia',\n 'calidris',\n 'ptilodontoids',\n 'plants and pollinators',\n 'mammal families',\n 'marine edible fish',\n 'taxa named by leopold fitzinger',\n 'setophaga',\n 'shorebirds',\n 'berries',\n 'megafauna',\n 'animal dance',\n 'animal phyla',\n 'american inventions',\n 'entheogens',\n 'crops originating from the americas',\n 'non-timber forest products',\n 'geese',\n ],\n patterns: [\n /(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,\n / first appearances/,\n / . described in [0-9]{4}/,\n /. (phyla|genera)$/,\n /. taxonomic families$/,\n /plants used in ./,\n / (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'speciesbox',\n 'automatic taxobox',\n 'dogbreed',\n 'dog breed',\n 'cat breed',\n 'grape variety',\n 'taxobox',\n 'subspeciesbox',\n 'mycomorphbox',\n 'paraphyletic group',\n 'nutritional value',\n 'infraspeciesbox',\n 'horse',\n 'haplogroup',\n 'bird',\n 'bird/population',\n 'medical resources',\n 'nc name',\n 'pig breed',\n 'botanical product',\n 'cattle breed',\n 'horse breed',\n 'poultry breed',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'habitat',\n 'morphology',\n 'phylogeny',\n 'distribution and diversity',\n 'distribution and habitat',\n 'reproduction and development',\n 'taxonomy and phylogeny',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'taxonbar',\n 'wikispecies',\n 'animalia',\n 'chordata',\n 'cnidaria',\n 'porifera',\n 'epicaridea',\n 'mammals',\n 'phlyctaeniidae',\n 'carnivora',\n 'clade',\n 'life on earth',\n 'orders of insects',\n 'coleoptera',\n 'insects in culture',\n 'living things in culture',\n 'eukaryota classification',\n 'iucn status',\n 'extinct',\n 'fossil range',\n 'internetbirdcollection',\n 'vireo',\n 'angle bracket',\n 'wikispecies-inline',\n 'iucn map',\n 'xeno-canto species',\n 'avibase',\n 'cladex',\n 'birdlife',\n 'fossilrange',\n ],\n patterns: [],\n },\n //\n titles: {\n mapping: ['plant', 'genus', 'fish', 'bird'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Product',\n //\n children: {},\n properties: {},\n //\n categories: {\n mapping: [],\n patterns: [/products introduced in ./, /musical instruments/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'automobile',\n 'beverage',\n 'cpu',\n 'electric_vehicle',\n 'gpu',\n 'mobile_phone',\n 'motorcycle',\n 'synthesizer',\n 'television',\n 'card game',\n 'computer',\n 'laboratory equipment',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['computer game', 'candy', 'board game', 'card game', 'automobile'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Creation',\n children: {\n CreativeWork: require('./CreativeWork'),\n MedicalCondition: require('./MedicalCondition'),\n Organism: require('./Organism'),\n Product: require('./Product'),\n },\n //\n properties: {\n creators: () => {},\n date: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","let schema = {\n children: {\n Person: require('./Person'),\n Place: require('./Place'),\n Organization: require('./Organization'),\n Event: require('./Event'),\n Creation: require('./Creation'),\n },\n}\n\n// generate slash-based ids by descending recursively\nconst setId = function (root, id) {\n if (root.name) {\n root.id = id + '/' + root.name\n } else {\n root.id = ''\n }\n if (root.children) {\n Object.keys(root.children).forEach((k) => {\n setId(root.children[k], root.id)\n })\n }\n return root\n}\n\nschema = setId(schema, '')\n\nmodule.exports = schema\n","const schema = require('./index')\n\nlet mappings = {\n categories: {},\n descriptions: {},\n infoboxes: {},\n sections: {},\n templates: {},\n titles: {},\n}\nlet patterns = {\n categories: [],\n descriptions: [],\n infoboxes: [],\n sections: [],\n templates: [],\n titles: [],\n}\n\nconst doNode = function (node) {\n if (node.id) {\n // collect mappings\n node.categories.mapping.forEach((str) => {\n mappings.categories[str] = node.id\n })\n node.descriptions.mapping = node.descriptions.mapping || []\n node.descriptions.mapping.forEach((str) => {\n mappings.descriptions[str] = node.id\n })\n node.infoboxes.mapping.forEach((str) => {\n mappings.infoboxes[str] = node.id\n })\n node.sections.mapping.forEach((str) => {\n mappings.sections[str] = node.id\n })\n node.templates.mapping.forEach((str) => {\n mappings.templates[str] = node.id\n })\n node.titles.mapping.forEach((str) => {\n mappings.titles[str] = node.id\n })\n // collect patterns\n node.categories.patterns.forEach((reg) => {\n patterns.categories.push([reg, node.id])\n })\n node.descriptions.patterns.forEach((reg) => {\n patterns.descriptions.push([reg, node.id])\n })\n node.infoboxes.patterns.forEach((reg) => {\n patterns.infoboxes.push([reg, node.id])\n })\n node.sections.patterns.forEach((reg) => {\n patterns.sections.push([reg, node.id])\n })\n node.templates.patterns.forEach((reg) => {\n patterns.templates.push([reg, node.id])\n })\n node.titles.patterns.forEach((reg) => {\n patterns.titles.push([reg, node.id])\n })\n }\n\n if (node.children) {\n Object.keys(node.children).forEach((k) => {\n doNode(node.children[k])\n })\n }\n}\ndoNode(schema)\nmodule.exports = { patterns, mappings }\n","const { mappings } = require('../../schema/_data-fns')\n\nconst byInfobox = function (doc) {\n let infoboxes = doc.infoboxes()\n let found = []\n for (let i = 0; i < infoboxes.length; i++) {\n let inf = infoboxes[i]\n let type = inf.type()\n\n type = type.toLowerCase()\n // type = type.replace(/^(category|categorie|kategori): ?/i, '')\n type = type.replace(/ /g, '_')\n type = type.trim()\n\n if (mappings.infoboxes.hasOwnProperty(type)) {\n found.push({ type: mappings.infoboxes[type], reason: type })\n }\n }\n return found\n}\nmodule.exports = byInfobox\n","const byPattern = function (str, patterns) {\n for (let i = 0; i < patterns.length; i += 1) {\n let reg = patterns[i][0]\n if (reg.test(str) === true) {\n return patterns[i][1]\n }\n }\n return null\n}\nmodule.exports = byPattern\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byCategory = function (doc) {\n let found = []\n let cats = doc.categories()\n // clean them up a bit\n cats = cats.map((cat) => {\n cat = cat.toLowerCase()\n cat = cat.replace(/^(category|categorie|kategori): ?/i, '')\n cat = cat.replace(/_/g, ' ')\n return cat.trim()\n })\n // loop through each\n for (let i = 0; i < cats.length; i++) {\n const category = cats[i]\n // try our 1-to-1 mapping\n if (mappings.categories.hasOwnProperty(category)) {\n found.push({ type: mappings.categories[category], reason: category })\n continue\n }\n // loop through our patterns\n let match = byPattern(category, patterns.categories)\n if (match) {\n found.push({ type: match, reason: category })\n }\n }\n return found\n}\nmodule.exports = byCategory\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byTemplate = function (doc) {\n let templates = doc.templates()\n let found = []\n for (let i = 0; i < templates.length; i++) {\n const title = templates[i].template\n if (mappings.templates.hasOwnProperty(title)) {\n found.push({ type: mappings.templates[title], reason: title })\n } else {\n // try regex-list on it\n let type = byPattern(title, patterns.templates)\n if (type) {\n found.push({ type: type, reason: title })\n }\n }\n }\n return found\n}\n\nmodule.exports = byTemplate\n","const { mappings } = require('../../schema/_data-fns')\n\nconst fromSection = function (doc) {\n let found = []\n let titles = doc.sections().map((s) => {\n let str = s.title()\n str = str.toLowerCase().trim()\n return str\n })\n for (let i = 0; i < titles.length; i++) {\n const title = titles[i]\n if (mappings.sections.hasOwnProperty(title)) {\n found.push({ type: mappings.sections[title], reason: title })\n }\n }\n return found\n}\nmodule.exports = fromSection\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\nconst paren = /\\((.*)\\)$/\n\nconst byTitle = function (doc) {\n let title = doc.title()\n if (!title) {\n return []\n }\n //look at parentheses like 'Tornado (film)'\n let m = title.match(paren)\n if (!m) {\n return []\n }\n let inside = m[1] || ''\n inside = inside.toLowerCase()\n inside = inside.replace(/_/g, ' ')\n inside = inside.trim()\n\n //look at known parentheses\n if (mappings.titles.hasOwnProperty(inside)) {\n return [{ type: mappings.titles[inside], reason: inside }]\n }\n\n // look at regex\n let match = byPattern(title, patterns.titles)\n if (match) {\n return [{ type: match, reason: title }]\n }\n return []\n}\nmodule.exports = byTitle\n","const { patterns } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byDescription = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl && tmpl.description) {\n let desc = tmpl.description || ''\n desc = desc.toLowerCase()\n // loop through our patterns\n let match = byPattern(desc, patterns.descriptions)\n if (match) {\n return [{ type: match, reason: desc }]\n }\n }\n return []\n}\nmodule.exports = byDescription\n","const skip = {\n disambiguation: true,\n surname: true,\n name: true,\n 'given name': true,\n}\nconst paren = /\\((.*)\\)$/\nconst listOf = /^list of ./\nconst disambig = /\\(disambiguation\\)/\n\nconst skipPage = function (doc) {\n let title = doc.title() || ''\n\n //look at parentheses like 'Tornado (film)'\n let m = title.match(paren)\n if (!m) {\n return null\n }\n let inside = m[1] || ''\n inside = inside.toLowerCase()\n inside = inside.replace(/_/g, ' ')\n inside = inside.trim()\n\n //look at known parentheses\n if (skip.hasOwnProperty(inside)) {\n return true\n }\n //try a regex\n if (listOf.test(title) === true) {\n return true\n }\n if (disambig.test(title) === true) {\n return true\n }\n return false\n}\nmodule.exports = skipPage\n","const topk = function (arr) {\n let obj = {}\n arr.forEach((a) => {\n obj[a] = obj[a] || 0\n obj[a] += 1\n })\n let res = Object.keys(obj).map((k) => [k, obj[k]])\n res = res.sort((a, b) => {\n if (a[1] > b[1]) {\n return -1\n } else if (a[1] < b[1]) {\n return 1\n }\n return 0\n })\n return res\n}\n\nconst parse = function (cat) {\n let split = cat.split(/\\//)\n return {\n root: split[1],\n child: split[2],\n }\n}\n\nconst getScore = function (detail) {\n let types = []\n Object.keys(detail).forEach((k) => {\n detail[k].forEach((obj) => {\n types.push(parse(obj.type))\n })\n })\n // find top parent\n let roots = types.map((obj) => obj.root).filter((s) => s)\n let tops = topk(roots)\n let top = tops[0]\n if (!top) {\n return {\n detail: detail,\n type: null,\n score: 0,\n }\n }\n let root = top[0]\n // score as % of results\n let score = top[1] / types.length\n // punish low counts\n if (top[1] === 1) {\n score *= 0.75\n }\n if (top[1] === 2) {\n score *= 0.85\n }\n if (top[1] === 3) {\n score *= 0.95\n }\n // if the second root is good\n if (tops[1]) {\n if (tops[1][1] === tops[0][1]) {\n score *= 0.5 //tie\n } else {\n score *= 0.8\n }\n }\n\n // find 2nd level\n let children = types.filter((o) => o.root === root && o.child).map((obj) => obj.child)\n let topKids = topk(children)\n top = topKids[0]\n let type = root\n if (top) {\n type = `${root}/${top[0]}`\n // punish for any conflicting children\n if (topKids.length > 1) {\n score *= 0.7\n }\n // punish for low count\n if (top[1] === 1) {\n score *= 0.8\n }\n }\n return {\n root: root,\n type: type,\n score: score,\n details: detail,\n }\n}\nmodule.exports = getScore\n","const byInfobox = require('./byInfobox')\nconst byCategory = require('./byCategory')\nconst byTemplate = require('./byTemplate')\nconst bySection = require('./bySection')\nconst byTitle = require('./byTitle')\nconst byDescription = require('./byDescription')\nconst skipPage = require('./_skip')\nconst score = require('./score')\n\nconst plugin = function (models) {\n //add a new method to main class\n models.Doc.prototype.classify = function (options) {\n let doc = this\n let res = {}\n\n //dont classify these\n if (skipPage(doc, options)) {\n return score(res, options)\n }\n\n //look for 'infobox person', etc\n res.infobox = byInfobox(doc, options)\n\n //look for '{{coord}}'\n res.template = byTemplate(doc, options)\n\n //look for '==early life=='\n res.section = bySection(doc, options)\n\n //look for 'foo (film)'\n res.title = byTitle(doc, options)\n\n //look for 'foo (film)'\n res.description = byDescription(doc, options)\n\n //look for 'Category: 1992 Births', etc\n res.category = byCategory(doc, options)\n return score(res, options)\n }\n}\nmodule.exports = plugin\n"],"names":["name","children","categories","mapping","patterns","descriptions","infoboxes","sections","templates","titles","properties","leagues","AmericanFootballPlayer","require$$0","BaseballPlayer","require$$1","FootballPlayer","require$$2","BasketballPlayer","require$$3","HockeyPlayer","require$$4","films","tv_shows","parties","groups","instruments","works","Athlete","Actor","Politician","Musician","Author","birth_date","birth_place","nationality","death_date","death_place","City","Country","population","leader","length","airlines","runways","Bridge","Airport","date_created","Jurisdiction","Structure","BodyOfWater","location","coordinates","albums","coaches","MusicalGroup","Company","SportsTeam","PoliticalParty","leaders","members","casualties","winners","dates","places","Disaster","Election","MilitaryConflict","SportsEvent","seasons","platforms","Album","Book","Film","TVShow","Play","Song","require$$5","VideoGame","require$$6","genre","causes","treatments","CreativeWork","MedicalCondition","Organism","Product","creators","date","schema","Person","Place","Organization","Event","Creation","setId","root","id","Object","keys","forEach","k","mappings","doNode","node","str","reg","push","byInfobox","doc","found","i","inf","type","toLowerCase","replace","trim","hasOwnProperty","reason","byPattern","test","byCategory","cats","map","cat","category","match","byTemplate","title","template","fromSection","s","paren","byTitle","m","inside","byDescription","tmpl","description","desc","skip","disambiguation","surname","listOf","disambig","skipPage","topk","arr","obj","a","res","sort","b","parse","split","child","getScore","detail","types","roots","filter","tops","top","score","o","topKids","details","plugin","models","Doc","prototype","classify","options","infobox","section","bySection"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-classify.js","sources":["../schema/Person/Athlete/AmericanFootballPlayer.js","../schema/Person/Athlete/BaseballPlayer.js","../schema/Person/Athlete/FootballPlayer.js","../schema/Person/Athlete/BasketballPlayer.js","../schema/Person/Athlete/HockeyPlayer.js","../schema/Person/Athlete/index.js","../schema/Person/Actor.js","../schema/Person/Politician.js","../schema/Person/Musician.js","../schema/Person/Author.js","../schema/Person/index.js","../schema/Place/Jurisdiction/City.js","../schema/Place/Jurisdiction/Country.js","../schema/Place/Jurisdiction/index.js","../schema/Place/Structure/Bridge.js","../schema/Place/Structure/Airport.js","../schema/Place/Structure/index.js","../schema/Place/BodyOfWater.js","../schema/Place/index.js","../schema/Organization/MusicalGroup.js","../schema/Organization/Company.js","../schema/Organization/SportsTeam.js","../schema/Organization/PoliticalParty.js","../schema/Organization/index.js","../schema/Event/Disaster.js","../schema/Event/Election.js","../schema/Event/MilitaryConflict.js","../schema/Event/SportsEvent.js","../schema/Event/index.js","../schema/Creation/CreativeWork/Album.js","../schema/Creation/CreativeWork/Book.js","../schema/Creation/CreativeWork/Film.js","../schema/Creation/CreativeWork/TVShow.js","../schema/Creation/CreativeWork/Play.js","../schema/Creation/CreativeWork/Song.js","../schema/Creation/CreativeWork/VideoGame.js","../schema/Creation/CreativeWork/index.js","../schema/Creation/MedicalCondition.js","../schema/Creation/Organism.js","../schema/Creation/Product.js","../schema/Creation/index.js","../schema/index.js","../schema/_data-fns.js","../src/byInfobox/index.js","../src/_byPattern.js","../src/byCategory/index.js","../src/byTemplate/index.js","../src/bySection/index.js","../src/byTitle/index.js","../src/byDescription/index.js","../src/_skip/index.js","../src/score.js","../src/index.js"],"sourcesContent":["module.exports = {\n name: 'AmericanFootballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BaseballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['baseball year'],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'FootballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BasketballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'HockeyPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Athlete',\n //\n properties: {\n leagues: () => {},\n },\n children: {\n AmericanFootballPlayer: require('./AmericanFootballPlayer'),\n BaseballPlayer: require('./BaseballPlayer'),\n FootballPlayer: require('./FootballPlayer'),\n BasketballPlayer: require('./BasketballPlayer'),\n HockeyPlayer: require('./HockeyPlayer'),\n },\n //\n categories: {\n mapping: [],\n patterns: [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/],\n },\n //\n descriptions: {\n patterns: [/(hockey|soccer|backetball|football) player/],\n },\n //\n infoboxes: {\n mapping: [\n 'afl_biography',\n 'alpine_ski_racer',\n 'athlete',\n 'baseball_biography',\n 'basketball_biography',\n 'boxer',\n 'cfl_player',\n 'cricketer',\n 'cyclist',\n 'field_hockey_player',\n 'figure_skater',\n 'gaa_player',\n 'golfer',\n 'gymnast',\n 'ice_hockey_player',\n 'lacrosse_player',\n 'martial_artist',\n 'mlb_player',\n 'nba_biography',\n 'nfl_biography',\n 'nfl_player',\n 'professional_wrestler',\n 'rugby_biography',\n 'rugby_league_biography',\n 'skier',\n 'squash_player',\n 'swimmer',\n 'tennis_biography',\n 'volleyball_biography',\n 'volleyball_player',\n 'hockey team player',\n 'football biography',\n 'baseball biography',\n 'ice hockey player',\n 'nfl player',\n 'basketball biography',\n 'professional wrestler',\n 'tennis biography',\n 'afl biography',\n 'nfl biography',\n 'rugby biography',\n 'rugby league biography',\n 'nba biography',\n 'figure skater',\n 'gaa player',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/sport-bio-stub$/],\n },\n //\n titles: {\n mapping: [\n 'american football player',\n 'football player',\n 'gaelic footballer',\n 'athlete',\n 'boxer',\n 'cricketer',\n 'footballer',\n 'wrestler',\n 'golfer',\n 'swimmer',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Actor',\n //\n children: {},\n properties: {\n films: () => {},\n tv_shows: () => {},\n },\n //\n categories: {\n mapping: ['male actors from new york city'],\n patterns: [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/],\n },\n //\n descriptions: {\n patterns: [/(actor|actress)/],\n },\n //\n infoboxes: {\n mapping: ['actor'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/actor-stub$/],\n },\n //\n titles: {\n mapping: ['actor', 'actress'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Politician',\n //\n children: {},\n properties: {\n parties: () => {},\n },\n //\n categories: {\n mapping: [\n 'uk mps 2001–05',\n 'uk mps 1997–2001',\n 'uk mps 2005–10',\n 'uk mps 1992–97',\n 'labour party (uk) mps for english constituencies',\n 'conservative party (uk) mps for english constituencies',\n 'uk mps 1987–92',\n 'uk mps 2010–15',\n 'democratic party members of the united states house of representatives',\n 'republican party members of the united states house of representatives',\n 'uk mps 1983–87',\n 'democratic party state governors of the united states',\n 'california republicans',\n 'british secretaries of state',\n 'democratic party united states senators',\n 'uk mps 2015–17',\n 'republican party united states senators',\n 'republican party state governors of the united states',\n 'california democrats',\n 'uk mps 1979–83',\n 'uk mps 2017–',\n ],\n patterns: [\n /politicians from ./,\n /politician stubs$/,\n /. (democrats|republicans|politicians)$/,\n /mayors of ./,\n ],\n },\n //\n descriptions: {\n patterns: [/(politician|member of parliament)/],\n },\n //\n infoboxes: {\n mapping: [\n 'canadianmp',\n 'governor',\n 'indian_politician',\n 'mp',\n 'officeholder',\n 'politician',\n 'politician_(general)',\n 'president',\n 'roman_emperor',\n 'state_representative',\n 'state_senator',\n 'congressman',\n 'prime minister',\n 'indian politician',\n 'senator',\n 'state representative',\n 'state senator',\n 'us cabinet official',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['list of united states senators congress'],\n patterns: [/(politician|mayor)-stub$/],\n },\n //\n titles: {\n mapping: [\n 'australian politician',\n 'canadian politician',\n 'politician',\n 'british politician',\n 'governor',\n 'irish politician',\n 'mayor',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Musician',\n //\n children: {},\n properties: {\n groups: () => {},\n instruments: () => {},\n },\n //\n categories: {\n mapping: [\n 'american male guitarists',\n 'american singer-songwriters',\n 'american male singers',\n 'american rock singers',\n 'american rock guitarists',\n '21st-century american singers',\n 'lead guitarists',\n 'african-american musicians',\n 'english male singers',\n 'american male singer-songwriters',\n 'american rock songwriters',\n 'american record producers',\n 'american country singer-songwriters',\n '20th-century american guitarists',\n 'english songwriters',\n '20th-century american pianists',\n 'songwriters from new york (state)',\n 'african-american singers',\n 'american blues singers',\n 'american pop singers',\n 'male guitarists',\n 'american country singers',\n 'blues hall of fame inductees',\n 'american male songwriters',\n 'songwriters from california',\n 'english rock guitarists',\n 'american folk singers',\n 'english rock singers',\n 'english singer-songwriters',\n 'african-american male rappers',\n 'african-american jazz musicians',\n '20th-century english singers',\n 'american female singer-songwriters',\n 'jewish american musicians',\n 'american blues guitarists',\n '20th-century conductors (music)',\n 'american female singers',\n 'american jazz bandleaders',\n 'american jazz pianists',\n 'american soul singers',\n 'american female guitarists',\n 'american multi-instrumentalists',\n 'american country guitarists',\n 'english record producers',\n 'songwriters from texas',\n 'american composers',\n 'singers from california',\n 'american folk guitarists',\n 'lgbt singers',\n 'american buskers',\n 'guitarists from california',\n 'feminist musicians',\n 'big band bandleaders',\n '20th-century composers',\n 'african-american songwriters',\n 'british rhythm and blues boom musicians',\n 'alternative rock singers',\n '21st-century american guitarists',\n 'american alternative rock musicians',\n 'musicians from los angeles',\n 'rhythm guitarists',\n 'american session musicians',\n 'jazz musicians from new orleans',\n 'alternative rock guitarists',\n '20th-century women musicians',\n 'male film score composers',\n 'african-american singer-songwriters',\n 'american jazz singers',\n '21st-century english singers',\n 'singers from new york city',\n 'american acoustic guitarists',\n 'musicians from new york city',\n 'slide guitarists',\n 'guitarists from texas',\n 'vaudeville performers',\n ],\n patterns: [/musicians from ./, /(singers|songwriters|painters|poets)/],\n },\n //\n descriptions: {\n patterns: [/(singer|musicianrapper|drummer)/, /(keyboard|guitar|bass) player/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/(musician|singer)-stub$/],\n },\n //\n titles: {\n mapping: ['composer', 'musician', 'rapper', 'singer'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Author',\n //\n children: {},\n properties: {\n works: () => {},\n },\n //\n categories: {\n mapping: [\n '20th-century american novelists',\n 'american male novelists',\n 'american film directors',\n '21st-century american novelists',\n 'american film producers',\n 'american male screenwriters',\n 'american science fiction writers',\n '20th-century english novelists',\n 'english male poets',\n 'american male short story writers',\n 'american political writers',\n 'english male novelists',\n '20th-century american writers',\n '19th-century male writers',\n 'american male writers',\n '20th-century women writers',\n '20th-century male writers',\n 'german male writers',\n '21st-century american writers',\n 'french male writers',\n 'jewish american writers',\n 'writers from new york city',\n '21st-century women writers',\n 'english male writers',\n ],\n patterns: [/novelists from ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Person',\n children: {\n Athlete: require('./Athlete'),\n Actor: require('./Actor'),\n Politician: require('./Politician'),\n Musician: require('./Musician'),\n Author: require('./Author'),\n },\n properties: {\n birth_date: () => {},\n birth_place: () => {},\n nationality: () => {},\n death_date: () => {},\n death_place: () => {},\n },\n //\n categories: {\n mapping: [\n 'living people',\n 'possibly living people',\n 'year of birth unknown',\n 'fellows of the royal society',\n 'members of the privy council of the united kingdom',\n 'american people of english descent',\n 'guggenheim fellows',\n 'harvard university alumni',\n 'american military personnel of world war ii',\n 'knights bachelor',\n 'american roman catholics',\n 'knights of the garter',\n 'presidential medal of freedom recipients',\n 'commanders of the order of the british empire',\n 'people educated at eton college',\n 'alumni of trinity college, cambridge',\n 'foreign members of the royal society',\n 'american people of scottish descent',\n 'american memoirists',\n 'members of the french academy of sciences',\n 'united states army soldiers',\n 'officers of the order of the british empire',\n 'deaths from pneumonia',\n 'burials at père lachaise cemetery',\n 'deaths from cancer in california',\n 'year of birth missing (living people)',\n 'knights of the golden fleece',\n 'columbia university alumni',\n 'alumni of the university of edinburgh',\n 'american people of russian-jewish descent',\n 'yale university alumni',\n 'american atheists',\n 'people of the tudor period',\n 'tony award winners',\n 'members of the académie française',\n 'united states army officers',\n 'persons of national historic significance (canada)',\n '20th-century american businesspeople',\n 'american television producers',\n 'american journalists',\n 'american male journalists',\n 'american male comedians',\n 'princeton university alumni',\n 'university of paris alumni',\n 'american episcopalians',\n 'american women novelists',\n 'phi beta kappa members',\n '20th-century american poets',\n 'bafta winners (people)',\n \"members of the queen's privy council for canada\",\n 'american presbyterians',\n 'fellows of the american academy of arts and sciences',\n 'members of the united states national academy of sciences',\n 'members of the royal swedish academy of sciences',\n '20th-century american short story writers',\n 'american nobel laureates',\n 'harvard university faculty',\n 'roman catholic monarchs',\n 'popes',\n 'italian popes',\n ],\n patterns: [\n /[0-9]{4} births/,\n /[0-9]{4} deaths/,\n /people of .* descent/,\n /^deaths from /,\n /^(people|philanthropists|writers) from ./,\n / (players|alumni)$/,\n /(alumni|fellows) of .$/,\n /(people|writer) stubs$/,\n /(american|english) (fe)?male ./,\n /(american|english) (architects|people)/,\n ],\n },\n //\n descriptions: {\n patterns: [/(artist|painter|poet|writer|celebrity|activist)/],\n },\n //\n infoboxes: {\n mapping: [\n 'adult_biography',\n 'architect',\n 'chef',\n 'chess_player',\n 'christian_leader',\n 'college_coach',\n 'college_football_player',\n 'comedian',\n 'comics_creator',\n 'criminal',\n 'engineer',\n 'fashion_designer',\n 'football_biography',\n 'gridiron_football_person',\n 'handball_biography',\n 'hindu_leader',\n 'horseracing_personality',\n 'judge',\n 'mass_murderer',\n 'medical_person',\n 'military_person',\n 'model',\n 'monarch',\n 'nascar_driver',\n 'person',\n 'philosopher',\n 'police_officer',\n 'presenter',\n 'racing_driver',\n 'religious_biography',\n 'royalty',\n 'sportsperson',\n 'wrc_driver',\n 'writer',\n 'snooker player',\n 'military person',\n 'college coach',\n 'f1 driver',\n 'gridiron football person',\n 'racing driver',\n 'martial artist',\n 'chinese-language singer and actor',\n 'astronaut',\n 'nascar driver',\n 'adult biography',\n 'coa wide',\n 'chess player',\n 'pageant titleholder',\n\n //religious person\n 'archbishop',\n 'minister',\n 'saint',\n 'bishop',\n 'christian leader',\n 'religious biography',\n // artist\n 'artist',\n 'comics creator',\n // academic\n 'economist',\n 'scholar',\n 'scientist',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'early life',\n 'personal life',\n 'career',\n 'career statistics',\n 'playing career',\n 'life and career',\n 'early life and education',\n 'film and television credits',\n 'filmography',\n 'selected filmography',\n 'works',\n 'life',\n 'family',\n 'political career',\n 'early career',\n 'later life',\n 'early life and career',\n 'later years',\n 'death and legacy',\n 'work',\n 'novels',\n 'later career',\n 'international',\n 'selected works',\n 'writings',\n 'professional career',\n 'retirement',\n 'poetry',\n 'marriage',\n 'electoral history',\n 'military career',\n 'international career',\n 'parliamentary career',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'persondata',\n 'writer',\n 'ted speaker',\n 's-aft',\n 's-bef',\n 's-start',\n 'marriage',\n 's-off',\n 's-par',\n 'internet archive author',\n 'ribbon devices',\n 's-reg',\n 'find a grave',\n 'gutenberg author',\n 's-new',\n 'other people',\n 'medalgold',\n 'medal',\n 'mlby',\n 's-vac',\n 's-hou',\n 'librivox author',\n 'blp sources',\n 's-ppo',\n 'nbay',\n ],\n patterns: [/-bio-stub$/],\n },\n //\n titles: {\n mapping: [\n 'murder victim',\n 'academic',\n 'author',\n 'businessman',\n 'cyclist',\n 'diplomat',\n 'director',\n 'drummer',\n 'journalist',\n 'judge',\n 'minister',\n 'poet',\n 'priest',\n 'american football',\n 'ice hockey',\n 'soccer',\n 'rugby league',\n 'rugby union',\n 'field hockey',\n 'tennis',\n 'writer',\n 'vc',\n 'racing driver',\n 'architect',\n 'comedian',\n 'british army officer',\n 'general',\n 'broadcaster',\n 'engineer',\n 'physician',\n 'soldier',\n 'royal navy officer',\n 'producer',\n 'lawyer',\n 'activist',\n 'inventor',\n\n 'artist',\n 'painter',\n 'cartoonist',\n 'novelist',\n 'photographer',\n 'playwright',\n 'bishop',\n 'theologian',\n 'historian',\n 'philosopher',\n 'mathematician',\n 'astronomer',\n 'economist',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'City',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [\n /^cities and towns in ./,\n /(municipalities|settlements|villages|localities|townships) in ./,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'swiss town',\n 'city japan',\n 'municipality br',\n 'russian town',\n 'south african town 2011',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'sister cities',\n 'neighbourhoods',\n 'churches',\n 'parks and recreation',\n 'public transportation',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Country',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: ['international relations'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['country'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Jurisdiction',\n children: {\n City: require('./City'),\n Country: require('./Country'),\n },\n properties: {\n population: () => {},\n leader: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n '2010 census',\n '2000 census',\n 'economy',\n 'transportation',\n 'government',\n 'communities',\n 'transport',\n 'culture',\n 'sports',\n 'adjacent counties',\n 'major highways',\n 'notable residents',\n 'tourism',\n 'cities',\n 'population',\n 'unincorporated communities',\n 'infrastructure',\n 'schools',\n 'rail',\n 'census-designated places',\n 'towns',\n 'local government',\n 'points of interest',\n 'attractions',\n 'demographics',\n 'climate',\n 'notable people',\n 'townships',\n 'recreation',\n 'arts and culture',\n 'governance',\n 'administrative divisions',\n 'landmarks',\n 'demography',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Bridge',\n //\n children: {},\n properties: {\n length: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Airport',\n //\n children: {},\n properties: {\n airlines: () => {},\n runways: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Structure',\n //\n children: {\n Bridge: require('./Bridge'),\n Airport: require('./Airport'),\n },\n properties: {\n date_created: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [\n /(buildings|bridges) completed in /,\n /airports established in ./,\n /(airports|bridges) in ./,\n /buildings and structures in ./,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'airport',\n 'bridge',\n 'building',\n 'power_station',\n 'religious_building',\n 'stadium',\n 'uk school',\n 'military structure',\n 'religious building',\n 'shopping mall',\n 'lighthouse',\n 'power station',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BodyOfWater',\n //\n children: {},\n properties: {},\n //\n categories: {\n mapping: [],\n patterns: [/(rivers|lakes|tributaries) of ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['body_of_water', 'lake', 'river', 'sea', 'body of water'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-river-stub$/],\n },\n //\n titles: {\n mapping: ['river'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Place',\n children: {\n Jurisdiction: require('./Jurisdiction'),\n Structure: require('./Structure'),\n BodyOfWater: require('./BodyOfWater'),\n },\n properties: {\n location: () => {},\n coordinates: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [\n /populated places/,\n /landforms of ./,\n /railway stations/,\n /parks in ./,\n / district$/,\n /geography stubs$/,\n /sports venue stubs$/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'amusement_park',\n 'ancient_site',\n 'australian_place',\n 'casino',\n 'cemetery',\n 'church',\n 'cricket_ground',\n 'dam',\n 'feature_on_mars',\n 'former_country',\n 'former_subdivision',\n 'french_commune',\n 'german_location',\n 'golf_facility',\n 'historic_site',\n 'hospital',\n 'hotel',\n 'islands',\n 'israel_village',\n 'italian_comune',\n 'launch_pad',\n 'military_memorial',\n 'military_structure',\n 'monument',\n 'mountain',\n 'mountain_pass',\n 'mountain_range',\n 'museum',\n 'neighborhood_portland_or',\n 'oil_field',\n 'park',\n 'prison',\n 'province_or_territory_of_canada',\n 'road',\n 'road_small',\n 'russian_inhabited_locality',\n 'russian_town',\n 'russian_urban-type_settlement',\n 'school',\n 'scotland_council_area',\n 'settlement',\n 'shopping_mall',\n 'south_african_subplace_2011',\n 'state',\n 'station',\n 'street',\n 'swiss_town',\n 'temple',\n 'town_at',\n 'u.s._metropolitan_area',\n 'u.s._state',\n 'uk_constituency',\n 'uk_disused_station',\n 'uk_place',\n 'uk_school',\n 'unesco_world_heritage_site',\n 'university_of_notre_dame_residence_hall',\n 'venue',\n 'waterfall',\n 'windmill',\n 'zoo',\n 'ecoregion',\n 'uk place',\n 'italian comune',\n 'geobox',\n 'australian place',\n 'french commune',\n 'german location',\n 'u.s. county',\n 'former country',\n 'road small',\n 'lunar crater',\n 'gb station',\n 'greek dimos',\n 'uk constituency main',\n 'finnish municipality/population count',\n 'ancient site',\n 'mountain range',\n 'london station',\n 'former subdivision',\n 'uk station',\n 'historic site',\n 'world heritage site',\n 'diocese',\n 'uk disused station',\n 'belgium municipality',\n 'uk constituency',\n 'theatre',\n 'canada electoral district',\n 'nycs',\n 'mountain pass',\n 'kommune',\n 'historic subdivision',\n 'u.s. congressional district',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: ['geography', 'geology', 'location', 'coat of arms'],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'coord',\n 'weather box',\n 'us census population',\n 'jct',\n 'geographic location',\n 'representative',\n 'historical populations',\n 'wikivoyage-inline',\n 'election box',\n 'zh',\n 'wide image',\n ],\n patterns: [/-geo-stub$/],\n },\n //\n titles: {\n mapping: [\n 'cape verde',\n 'cedar busway station',\n 'delhi metro',\n 'erie county, new york',\n 'new jersey',\n 'new orleans',\n 'new york City Subway',\n 'new york',\n 'new zealand',\n 'north carolina',\n 'northern ireland',\n 'sri lanka',\n 'uk parliament constituency',\n 'united kingdom',\n 'united states',\n 'alaska',\n 'argentina',\n 'arkansas',\n 'australia',\n 'barbados',\n 'brazil',\n 'california',\n 'canada',\n 'chad',\n 'chicago',\n 'colombia',\n 'connecticut',\n 'dominica',\n 'edmonton',\n 'france',\n 'georgia',\n 'india',\n 'israel',\n 'japan',\n 'manhattan',\n 'michigan',\n 'nigeria',\n 'oklahoma',\n 'ontario',\n 'pennsylvania',\n 'portugal',\n 'province',\n 'spain',\n 'sudan',\n 'texas',\n 'uk',\n 'va',\n 'Virginia',\n 'volcano',\n 'washington',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'MusicalGroup',\n //\n children: {},\n properties: {\n albums: () => {},\n },\n //\n categories: {\n mapping: [\n 'musical quartets',\n 'musical duos',\n 'musical trios',\n 'musical quintets',\n 'english rock music groups',\n 'english new wave musical groups',\n 'african-american musical groups',\n '21st-century american musicians',\n 'american alternative metal musical groups',\n 'english pop music groups',\n 'art rock musical groups',\n 'english post-punk music groups',\n ],\n patterns: [\n /musical groups from /,\n /musical groups (dis)?established in [0-9]{4}/,\n /musical group stubs/,\n /. music(al)? (groups|duos|trios|quartets|quintets)$/,\n ],\n },\n //\n descriptions: {\n patterns: [/rock band/],\n },\n //\n infoboxes: {\n mapping: ['musical_artist'],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'band members',\n 'albums',\n 'studio albums',\n 'compilation albums',\n 'live albums',\n 'compilations',\n 'eps',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: ['allmusic'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'band',\n 'american band',\n 'australian band',\n 'canadian band',\n 'uk band',\n 'japanese band',\n 'swedish band',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Company',\n //\n children: {},\n //\n categories: {\n mapping: [\n 'companies listed on the new york stock exchange',\n 'jazz record labels',\n 'video game development companies',\n 'american record labels',\n 'companies listed on nasdaq',\n 'video game companies of the united states',\n 'companies formerly listed on the london stock exchange',\n 'multinational companies headquartered in the united states',\n 'companies listed on the tokyo stock exchange',\n 're-established companies',\n 'companies based in new york city',\n 'defunct video game companies',\n 'companies formed by merger',\n 'entertainment companies based in california',\n ],\n patterns: [/companies (established|based) in ./],\n },\n //\n descriptions: {\n patterns: [/(company|subsidary)/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: ['products'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-company-stub$/],\n },\n //\n titles: {\n mapping: ['company', 'newspaper', 'restaurant', 'retailer', 'store'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'SportsTeam',\n //\n children: {},\n properties: {\n coaches: () => {},\n },\n //\n categories: {\n mapping: [\n 'football clubs in england',\n 'english football league clubs',\n 'southern football league clubs',\n 'football clubs in scotland',\n 'premier league clubs',\n 'national basketball association teams',\n ],\n patterns: [\n /football clubs in ./,\n /(basketball|hockey|baseball|football) teams (in|established) ./,\n ],\n },\n //\n descriptions: {\n patterns: [/(basketball|hockey|soccer|football|sports) team/],\n },\n //\n infoboxes: {\n mapping: [\n 'basketball_club',\n 'pro_hockey_team',\n 'college_ice_hockey_team',\n 'college_soccer_team',\n 'cricket_team',\n 'football_club',\n 'non_test_cricket_team',\n 'non-profit',\n 'rugby_league_club',\n 'rugby_league_representative_team',\n 'rugby_team',\n 'baseball team',\n 'football club',\n 'rugby team',\n 'national football team',\n 'basketball club',\n 'hockey team',\n 'rugby league club',\n 'football club infobox',\n 'cricket team',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: ['coaching staff', 'head coaches', 'team records', 'current squad'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-sport-team-stub$/],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'PoliticalParty',\n //\n children: {},\n //\n categories: {\n mapping: ['social democratic parties'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [/political party/],\n },\n //\n infoboxes: {\n mapping: ['political_party', 'political party'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['political party'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Organization',\n //\n children: {\n MusicalGroup: require('./MusicalGroup'),\n Company: require('./Company'),\n SportsTeam: require('./SportsTeam'),\n PoliticalParty: require('./PoliticalParty'),\n },\n properties: {\n leaders: () => {},\n members: () => {},\n },\n //\n categories: {\n mapping: [\n 'japanese brands',\n 'american jazz composers',\n 'scouting in the united states',\n 'car brands',\n 'government-owned airlines',\n 'baptist denominations in north america',\n 'baptist denominations established in the 20th century',\n 'land-grant universities and colleges',\n 'organizations based in washington, d.c.',\n 'video game publishers',\n 'defunct motor vehicle manufacturers of the united states',\n 'alternative rock groups from california',\n ],\n patterns: [\n /(organi[sz]ations|publications) based in /,\n /(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,\n /(secondary|primary) schools/,\n /military units/,\n /magazines/,\n /organi[sz]ation stubs$/,\n ],\n },\n //\n descriptions: {\n patterns: [/(charity|organization|ngo)/],\n },\n //\n infoboxes: {\n mapping: [\n 'airline',\n 'broadcasting_network',\n 'cbb_team',\n 'choir',\n 'college',\n 'company',\n 'dot-com_company',\n 'film_awards',\n 'film_festival',\n 'football_league',\n 'gaa_club',\n 'government_agency',\n 'government_cabinet',\n 'journal',\n 'laboratory',\n 'law_enforcement_agency',\n 'legislature',\n 'library',\n 'military_unit',\n 'national_military',\n 'ncaa_football_school',\n 'newspaper',\n 'nobility',\n 'organization',\n 'public_transit',\n 'publisher',\n 'radio_station',\n 'rail_line',\n 'rail_service',\n 'record_label',\n 'school_district',\n 'sport_governing_body',\n 'sports_league',\n 'television_channel',\n 'tv_channel',\n 'u.s._cabinet',\n 'u.s._legislation',\n 'uk_legislation',\n 'university',\n 'v8_supercar_team',\n 'former monarchy',\n 'criminal organization',\n 'radio station',\n 'military unit',\n 'government agency',\n 'rail line',\n 'record label',\n 'school district',\n 'tv channel',\n 'sports league',\n 'football league',\n 'worldscouting',\n 'sg rail',\n 'law enforcement agency',\n 'uk legislation',\n 'public transit',\n 'us university ranking',\n 'television channel',\n 'bus transit',\n 'union',\n 'broadcasting network',\n 'christian denomination',\n 'film awards',\n 'gaa club',\n 'fraternity',\n 'rail',\n 'rail service',\n 'national military',\n 'sport governing body',\n 'political party/seats',\n 'athletic conference',\n 'film festival',\n 'dot-com company',\n 'india university ranking',\n 'uk university rankings',\n 'government cabinet',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'founding',\n 'founders',\n 'members',\n 'athletics',\n 'notable alumni',\n 'academics',\n 'campus',\n 'organization',\n 'student life',\n 'rankings',\n 'fleet',\n 'research',\n 'formation',\n 'operations',\n 'players',\n 'alumni',\n 'former members',\n 'presidents',\n 'membership',\n 'current members',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: ['composition bar', 'fs player', 'y', 'n', 'rws'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'group',\n 'journal',\n 'am',\n 'fm',\n 'wehrmacht',\n 'tv channel',\n 'british band',\n 'organization',\n 'airline',\n 'publisher',\n 'brand',\n 'record label',\n 'union army',\n 'defunct',\n 'tv network',\n 'department store',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Disaster',\n children: {},\n properties: {\n casualties: () => {},\n },\n //\n categories: {\n mapping: ['retired atlantic hurricanes'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'aircraft_accident',\n 'airliner_accident',\n 'earthquake',\n 'hurricane',\n 'pandemic',\n 'airliner accident',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Election',\n children: {},\n //\n categories: {\n mapping: ['presidential elections in ireland'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['election'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['election summary party with leaders'],\n patterns: [/-election-stub$/],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'MilitaryConflict',\n children: {},\n //\n categories: {\n mapping: [\n 'wars involving the united kingdom',\n 'proxy wars',\n 'new zealand wars',\n 'battles between england and scotland',\n 'conflicts in 1943',\n 'last stand battles',\n 'battles and conflicts without fatalities',\n 'guerrilla wars',\n '20th-century conflicts',\n '20th-century revolutions',\n 'sieges involving japan',\n 'revolution-based civil wars',\n ],\n patterns: [/conflicts (in|of) [0-9]{4}/, /(wars|battles|conflicts) (involving|of|in) ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['military_conflict', 'military conflict', 'civil conflict', 'civilian attack'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'SportsEvent',\n children: {},\n properties: {\n winners: () => {},\n },\n //\n categories: {\n mapping: [\n '1904 summer olympics events',\n '1900 summer olympics events',\n '2002 winter olympics events',\n ],\n patterns: [\n /. league seasons$/,\n /^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'athletics_championships',\n 'badminton_event',\n 'boxingmatch',\n 'fila_wrestling_event',\n 'football_club_season',\n 'football_country_season',\n 'football_league_season',\n 'football_match',\n 'football_tournament_season',\n 'little_league_world_series',\n 'nba_season',\n 'ncaa_baseball_conference_tournament',\n 'ncaa_football_single_game',\n 'ncaa_team_season',\n 'nfl_season',\n 'nfl_single_game',\n 'sports_season',\n 'tennis_event',\n 'tennis_grand_slam_events',\n 'wrestling_event',\n 'football tournament',\n 'olympic event',\n 'international football competition',\n 'wrestling event',\n 'sports season',\n 'cycling race report',\n 'ncaa team season',\n 'cricket tournament',\n 'football match',\n 'world series expanded',\n 'mma event',\n 'nfl season',\n 'nfl draft',\n 'athletics championships',\n 'football club season',\n 'canadian football game',\n 'australian rules football season',\n 'football tournament season',\n 'international ice hockey competition',\n 'cricket tour',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Event',\n properties: {\n dates: () => {},\n places: () => {},\n },\n children: {\n Disaster: require('./Disaster'),\n Election: require('./Election'),\n MilitaryConflict: require('./MilitaryConflict'),\n SportsEvent: require('./SportsEvent'),\n },\n //\n categories: {\n mapping: [\n 'years in literature',\n 'years in music',\n 'years in film',\n 'united states supreme court cases',\n 'leap years in the gregorian calendar',\n \"governor general's awards\",\n 'eurovision song contest by year',\n 'grammy awards ceremonies',\n 'united kingdom in the eurovision song contest',\n 'manned soyuz missions',\n 'american civil liberties union litigation',\n 'may',\n 'october',\n 'missions to the moon',\n 'world war ii british commando raids',\n 'july',\n 'december',\n 'september',\n 'november',\n 'january',\n 'june',\n 'august',\n 'april',\n 'february',\n 'march',\n 'conflicts in 1944',\n 'missions to mars',\n 'luna program',\n 'conflicts in 1942',\n 'special air service',\n 'soft landings on the moon',\n 'may observances',\n 'first events',\n 'recent years',\n 'elections not won by the popular vote winner',\n 'conflicts in 1864',\n '1862 in the american civil war',\n 'new york (state) in the american revolution',\n 'march observances',\n 'public holidays in the united states',\n '1944 in france',\n 'december observances',\n '20th century american trials',\n 'african-american civil rights movement (1954–68)',\n 'october observances',\n 'spring holidays',\n 'years in aviation',\n 'national days',\n 'summer holidays',\n 'apollo program',\n ],\n patterns: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'beauty_pageant',\n 'civil_conflict',\n 'concert_tour',\n 'court_case',\n 'event',\n 'historical_era',\n 'holiday',\n 'horseraces',\n 'individual_snooker_tournament',\n 'legislative_term',\n 'music_festival',\n 'nfl_draft',\n 'pba_draft',\n 'reality_music_competition',\n 'recurring_event',\n 'song_contest',\n 'summit',\n 'grand prix race report',\n 'recurring event',\n 'music festival',\n 'football league season',\n 'scotus case',\n 'court case',\n 'concert tour',\n 'international labour organization convention',\n 'song contest',\n 'australian year',\n 'individual darts tournament',\n 'beauty pageant',\n 'historical event',\n 'grand prix motorcycle race report',\n 'international handball competition',\n 'coa case',\n 'individual snooker tournament',\n 'esc national year',\n 'indy500',\n 'national political convention',\n 'referendum',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'aftermath',\n 'births',\n 'deaths',\n 'battle',\n 'results',\n 'prelude',\n 'may',\n 'june',\n 'march',\n 'december',\n 'october',\n 'july',\n 'august',\n 'april',\n 'november',\n 'february',\n 'september',\n 'january',\n 'incumbents',\n 'casualties',\n 'july to december',\n 'january to june',\n 'medal table',\n 'campaign',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'esc',\n 'year nav',\n 'year dab',\n 'goal',\n 'flagiocmedalist',\n 'm1 year in topic',\n 'year nav topic5',\n 'bc year in topic',\n 'flagiocathlete',\n 'year article header',\n ],\n patterns: [],\n },\n //\n titles: {\n mapping: ['festival', '25 m', 'world war ii', 'conmebol', 'music festival', 'world war i'],\n patterns: [/ \\((19|20)[0-9]{2}\\)$/],\n },\n}\n","module.exports = {\n name: 'Album',\n children: {},\n //\n categories: {\n mapping: ['albums recorded at abbey road studios'],\n patterns: [/[0-9]{4}.*? albums/, /^albums /, / albums$/, /album stubs$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['album'],\n patterns: [],\n },\n //\n sections: {\n mapping: ['track listing'],\n patterns: [],\n },\n //\n templates: {\n mapping: ['track listing', 'tracklist'],\n patterns: [/-album-stub$/],\n },\n //\n titles: {\n mapping: ['album'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Book',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/(film|novel) stubs$/, /[0-9]{4}.*? (poems|novels)/, / (poems|novels)$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['book'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-novel-stub$/],\n },\n //\n titles: {\n mapping: ['book', 'novel'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Film',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/[0-9]{4}.*? films/, / films$/, /^films /],\n },\n //\n descriptions: {\n patterns: [/[0-9]{4} film/],\n },\n //\n infoboxes: {\n mapping: ['film'],\n patterns: [],\n },\n //\n sections: {\n mapping: ['cast'],\n patterns: [],\n },\n //\n templates: {\n mapping: ['imdb title', 'film date', 'rotten-tomatoes'],\n patterns: [/-film-stub$/],\n },\n //\n titles: {\n mapping: ['movie'],\n patterns: [/ \\([0-9]{4} film\\)$/],\n },\n}\n","module.exports = {\n name: 'TVShow',\n children: {},\n properties: {\n seasons: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [/television series/],\n },\n //\n descriptions: {\n patterns: [/television series/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['episode list'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'tv series',\n 'game show',\n 'u.s. tv series',\n 'uk tv series',\n 'australian tv series',\n 'u.s. game show',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Play',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['play'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-play-stub$/],\n },\n //\n titles: {\n mapping: ['play'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Song',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/[0-9]{4}.*? songs/, /^songs /, / songs$/, /song stubs$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['song'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'VideoGame',\n children: {},\n properties: {\n platforms: () => {},\n },\n //\n categories: {\n mapping: [\n 'dos games',\n 'virtual console games',\n 'mac os games',\n 'amiga games',\n 'arcade games',\n 'commodore 64 games',\n 'nintendo entertainment system games',\n 'playstation (console) games',\n 'ios games',\n 'super nintendo entertainment system games',\n 'video game sequels',\n 'game boy advance games',\n 'first-person shooters',\n 'playstation network games',\n 'linux games',\n 'atari st games',\n 'playstation 2 games',\n 'game boy games',\n 'zx spectrum games',\n 'mario universe games',\n 'multiplayer online games',\n 'mobile games',\n 'android (operating system) games',\n 'platform games',\n 'xbox 360 live arcade games',\n 'sega genesis games',\n ],\n patterns: [/video games/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['video game'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['video game'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'CreativeWork',\n children: {\n Album: require('./Album'),\n Book: require('./Book'),\n Film: require('./Film'),\n TVShow: require('./TVShow'),\n Play: require('./Play'),\n Song: require('./Song'),\n VideoGame: require('./VideoGame'),\n },\n //\n properties: {\n genre: () => {},\n },\n //\n categories: {\n mapping: [\n 'operas',\n 'american science fiction novels',\n 'broadway musicals',\n 'debut novels',\n 'the twilight zone (1959 tv series) episodes',\n 'united states national recording registry recordings',\n 'macos games',\n 'virtual console games for wii u',\n 'american monthly magazines',\n 'broadway plays',\n 'interactive achievement award winners',\n 'doubleday (publisher) books',\n '19th-century classical composers',\n 'film soundtracks',\n 'universal deluxe editions',\n 'best picture academy award winners',\n 'shōnen manga',\n 'west end musicals',\n 'sequel novels',\n 'dystopian novels',\n 'american comic strips',\n 'american road movies',\n 'chemical elements',\n 'amstrad cpc games',\n 'neo-noir',\n 'fiction with unreliable narrators',\n 'best drama picture golden globe winners',\n 'adventure anime and manga',\n ],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'artwork',\n 'book_series',\n 'broadcast',\n 'comic_book_title',\n 'comic_strip',\n 'doctor_who_episode',\n 'hollywood_cartoon',\n 'magazine',\n 'musical',\n 'musical_composition',\n 'opera',\n 'painting',\n 'radio_show',\n 'song',\n 'song_contest_entry',\n 'television_episode',\n 'television_season',\n 'treaty',\n 'video_game',\n 'anthem',\n 'television episode',\n 'comic book title',\n 'song contest entry',\n 'short story',\n 'hollywood cartoon',\n 'radio show',\n 'simpsons episode',\n 'musical composition',\n 'book series',\n 'comic strip',\n 'television season',\n 'comics organization',\n 'doctor who episode',\n 'animanga/other',\n 'graphic novel',\n 'rpg',\n 'big finish',\n 'vg series',\n 'name module',\n 'comics story arc',\n 'video game series',\n 'futurama episode',\n 'comics character and title',\n 'comics meta series',\n 'webcomic',\n 'the goodies episode',\n 'audio drama',\n 'sw comics',\n 'media franchise',\n 'folk tale',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'plot',\n 'reception',\n 'charts',\n 'release',\n 'plot summary',\n 'gameplay',\n 'characters',\n 'box office',\n 'accolades',\n 'soundtrack',\n 'adaptations',\n 'synopsis',\n 'home media',\n 'weekly charts',\n 'themes',\n 'publication history',\n 'filming',\n 'year-end charts',\n 'casting',\n 'release and reception',\n 'commercial performance',\n 'composition',\n 'album',\n 'setting',\n 'chart positions',\n 'release history',\n 'charts and certifications',\n 'sequels',\n 'chart performance',\n 'sequel',\n 'recordings',\n 'story',\n 'editions',\n 'in other media',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'rating',\n 'certification table entry',\n 'albumchart',\n 'music',\n 'album ratings',\n 'album chart',\n 'singles',\n 'isbnt',\n 'singlechart',\n 'tcmdb title',\n 'mojo title',\n 'based on',\n 'amg movie',\n 'duration',\n ],\n patterns: [/-song-stub$/],\n },\n //\n titles: {\n mapping: [\n 'season 2',\n 'season 3',\n 'season 4',\n 'season 5',\n 'the twilight zone',\n 'ballet',\n 'magazine',\n 'miniseries',\n 'music',\n 'opera',\n 'painting',\n 'series',\n 'single',\n 'song',\n 'soundtrack',\n 'ep',\n 'comics',\n 'musical',\n 'manga',\n 'star trek: the next generation',\n 'star trek: deep space nine',\n 'buffy the vampire slayer',\n 'angel',\n 'the outer limits',\n 'star trek: voyager',\n 'short story',\n 'seinfeld',\n 'star trek: enterprise',\n 'poem',\n 'tv',\n 'uk series',\n 'doctor who',\n 'david bowie song',\n 'caravaggio',\n 'the beach boys song',\n 'video',\n 'audio drama',\n 'babylon 5',\n 'madonna song',\n ],\n patterns: [/ \\((.*? )song\\)$/],\n },\n}\n","module.exports = {\n name: 'MedicalCondition',\n //\n children: {},\n properties: {\n causes: () => {},\n treatments: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['medical condition (new)', 'medical condition', 'disease'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Organism',\n //\n children: {},\n properties: {\n // taxonomy: () => {},\n // members: () => {},\n },\n //\n categories: {\n mapping: [\n 'taxa named by carl linnaeus',\n 'ornamental trees',\n 'birds by common name',\n 'living fossils',\n 'taxa named by john edward gray',\n 'phelsuma',\n 'multituberculates',\n 'angiosperm orders',\n 'cimolodonts',\n 'urban animals',\n 'flowers',\n 'geckos',\n 'herbs',\n 'spices',\n 'skinks',\n 'cretaceous mammals',\n 'commercial fish',\n 'paleocene mammals',\n 'bird families',\n 'edible nuts and seeds',\n 'invasive plant species',\n 'leaf vegetables',\n 'root vegetables',\n 'corvus (genus)',\n 'insects in culture',\n 'ducks',\n 'agamidae',\n 'edge species',\n 'tropical fruit',\n 'pinus',\n 'tropical agriculture',\n 'indian spices',\n 'paleocene genus extinctions',\n 'epiphytic orchids',\n 'crops',\n 'fruits originating in asia',\n 'calidris',\n 'ptilodontoids',\n 'plants and pollinators',\n 'mammal families',\n 'marine edible fish',\n 'taxa named by leopold fitzinger',\n 'setophaga',\n 'shorebirds',\n 'berries',\n 'megafauna',\n 'animal dance',\n 'animal phyla',\n 'american inventions',\n 'entheogens',\n 'crops originating from the americas',\n 'non-timber forest products',\n 'geese',\n ],\n patterns: [\n /(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,\n / first appearances/,\n / . described in [0-9]{4}/,\n /. (phyla|genera)$/,\n /. taxonomic families$/,\n /plants used in ./,\n / (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'speciesbox',\n 'automatic taxobox',\n 'dogbreed',\n 'dog breed',\n 'cat breed',\n 'grape variety',\n 'taxobox',\n 'subspeciesbox',\n 'mycomorphbox',\n 'paraphyletic group',\n 'nutritional value',\n 'infraspeciesbox',\n 'horse',\n 'haplogroup',\n 'bird',\n 'bird/population',\n 'medical resources',\n 'nc name',\n 'pig breed',\n 'botanical product',\n 'cattle breed',\n 'horse breed',\n 'poultry breed',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'habitat',\n 'morphology',\n 'phylogeny',\n 'distribution and diversity',\n 'distribution and habitat',\n 'reproduction and development',\n 'taxonomy and phylogeny',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'taxonbar',\n 'wikispecies',\n 'animalia',\n 'chordata',\n 'cnidaria',\n 'porifera',\n 'epicaridea',\n 'mammals',\n 'phlyctaeniidae',\n 'carnivora',\n 'clade',\n 'life on earth',\n 'orders of insects',\n 'coleoptera',\n 'insects in culture',\n 'living things in culture',\n 'eukaryota classification',\n 'iucn status',\n 'extinct',\n 'fossil range',\n 'internetbirdcollection',\n 'vireo',\n 'angle bracket',\n 'wikispecies-inline',\n 'iucn map',\n 'xeno-canto species',\n 'avibase',\n 'cladex',\n 'birdlife',\n 'fossilrange',\n ],\n patterns: [],\n },\n //\n titles: {\n mapping: ['plant', 'genus', 'fish', 'bird'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Product',\n //\n children: {},\n properties: {},\n //\n categories: {\n mapping: [],\n patterns: [/products introduced in ./, /musical instruments/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'automobile',\n 'beverage',\n 'cpu',\n 'electric_vehicle',\n 'gpu',\n 'mobile_phone',\n 'motorcycle',\n 'synthesizer',\n 'television',\n 'card game',\n 'computer',\n 'laboratory equipment',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['computer game', 'candy', 'board game', 'card game', 'automobile'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Creation',\n children: {\n CreativeWork: require('./CreativeWork'),\n MedicalCondition: require('./MedicalCondition'),\n Organism: require('./Organism'),\n Product: require('./Product'),\n },\n //\n properties: {\n creators: () => {},\n date: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","let schema = {\n children: {\n Person: require('./Person'),\n Place: require('./Place'),\n Organization: require('./Organization'),\n Event: require('./Event'),\n Creation: require('./Creation'),\n },\n}\n\n// generate slash-based ids by descending recursively\nconst setId = function (root, id) {\n if (root.name) {\n root.id = id + '/' + root.name\n } else {\n root.id = ''\n }\n if (root.children) {\n Object.keys(root.children).forEach((k) => {\n setId(root.children[k], root.id)\n })\n }\n return root\n}\n\nschema = setId(schema, '')\n\nmodule.exports = schema\n","const schema = require('./index')\n\nlet mappings = {\n categories: {},\n descriptions: {},\n infoboxes: {},\n sections: {},\n templates: {},\n titles: {},\n}\nlet patterns = {\n categories: [],\n descriptions: [],\n infoboxes: [],\n sections: [],\n templates: [],\n titles: [],\n}\n\nconst doNode = function (node) {\n if (node.id) {\n // collect mappings\n node.categories.mapping.forEach((str) => {\n mappings.categories[str] = node.id\n })\n node.descriptions.mapping = node.descriptions.mapping || []\n node.descriptions.mapping.forEach((str) => {\n mappings.descriptions[str] = node.id\n })\n node.infoboxes.mapping.forEach((str) => {\n mappings.infoboxes[str] = node.id\n })\n node.sections.mapping.forEach((str) => {\n mappings.sections[str] = node.id\n })\n node.templates.mapping.forEach((str) => {\n mappings.templates[str] = node.id\n })\n node.titles.mapping.forEach((str) => {\n mappings.titles[str] = node.id\n })\n // collect patterns\n node.categories.patterns.forEach((reg) => {\n patterns.categories.push([reg, node.id])\n })\n node.descriptions.patterns.forEach((reg) => {\n patterns.descriptions.push([reg, node.id])\n })\n node.infoboxes.patterns.forEach((reg) => {\n patterns.infoboxes.push([reg, node.id])\n })\n node.sections.patterns.forEach((reg) => {\n patterns.sections.push([reg, node.id])\n })\n node.templates.patterns.forEach((reg) => {\n patterns.templates.push([reg, node.id])\n })\n node.titles.patterns.forEach((reg) => {\n patterns.titles.push([reg, node.id])\n })\n }\n\n if (node.children) {\n Object.keys(node.children).forEach((k) => {\n doNode(node.children[k])\n })\n }\n}\ndoNode(schema)\nmodule.exports = { patterns, mappings }\n","const { mappings } = require('../../schema/_data-fns')\n\nconst byInfobox = function (doc) {\n let infoboxes = doc.infoboxes()\n let found = []\n for (let i = 0; i < infoboxes.length; i++) {\n let inf = infoboxes[i]\n let type = inf.type()\n\n type = type.toLowerCase()\n // type = type.replace(/^(category|categorie|kategori): ?/i, '')\n type = type.replace(/ /g, '_')\n type = type.trim()\n\n if (mappings.infoboxes.hasOwnProperty(type)) {\n found.push({ type: mappings.infoboxes[type], reason: type })\n }\n }\n return found\n}\nmodule.exports = byInfobox\n","const byPattern = function (str, patterns) {\n for (let i = 0; i < patterns.length; i += 1) {\n let reg = patterns[i][0]\n if (reg.test(str) === true) {\n return patterns[i][1]\n }\n }\n return null\n}\nmodule.exports = byPattern\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byCategory = function (doc) {\n let found = []\n let cats = doc.categories()\n // clean them up a bit\n cats = cats.map((cat) => {\n cat = cat.toLowerCase()\n cat = cat.replace(/^(category|categorie|kategori): ?/i, '')\n cat = cat.replace(/_/g, ' ')\n return cat.trim()\n })\n // loop through each\n for (let i = 0; i < cats.length; i++) {\n const category = cats[i]\n // try our 1-to-1 mapping\n if (mappings.categories.hasOwnProperty(category)) {\n found.push({ type: mappings.categories[category], reason: category })\n continue\n }\n // loop through our patterns\n let match = byPattern(category, patterns.categories)\n if (match) {\n found.push({ type: match, reason: category })\n }\n }\n return found\n}\nmodule.exports = byCategory\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byTemplate = function (doc) {\n let templates = doc.templates().map((tmpl) => tmpl.json())\n let found = []\n for (let i = 0; i < templates.length; i++) {\n const title = templates[i].template\n if (mappings.templates.hasOwnProperty(title)) {\n found.push({ type: mappings.templates[title], reason: title })\n } else {\n // try regex-list on it\n let type = byPattern(title, patterns.templates)\n if (type) {\n found.push({ type: type, reason: title })\n }\n }\n }\n return found\n}\n\nmodule.exports = byTemplate\n","const { mappings } = require('../../schema/_data-fns')\n\nconst fromSection = function (doc) {\n let found = []\n let titles = doc.sections().map((s) => {\n let str = s.title()\n str = str.toLowerCase().trim()\n return str\n })\n for (let i = 0; i < titles.length; i++) {\n const title = titles[i]\n if (mappings.sections.hasOwnProperty(title)) {\n found.push({ type: mappings.sections[title], reason: title })\n }\n }\n return found\n}\nmodule.exports = fromSection\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\nconst paren = /\\((.*)\\)$/\n\nconst byTitle = function (doc) {\n let title = doc.title()\n if (!title) {\n return []\n }\n //look at parentheses like 'Tornado (film)'\n let m = title.match(paren)\n if (!m) {\n return []\n }\n let inside = m[1] || ''\n inside = inside.toLowerCase()\n inside = inside.replace(/_/g, ' ')\n inside = inside.trim()\n\n //look at known parentheses\n if (mappings.titles.hasOwnProperty(inside)) {\n return [{ type: mappings.titles[inside], reason: inside }]\n }\n\n // look at regex\n let match = byPattern(title, patterns.titles)\n if (match) {\n return [{ type: match, reason: title }]\n }\n return []\n}\nmodule.exports = byTitle\n","const { patterns } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byDescription = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl && tmpl.description) {\n let desc = tmpl.description || ''\n desc = desc.toLowerCase()\n // loop through our patterns\n let match = byPattern(desc, patterns.descriptions)\n if (match) {\n return [{ type: match, reason: desc }]\n }\n }\n return []\n}\nmodule.exports = byDescription\n","const skip = {\n disambiguation: true,\n surname: true,\n name: true,\n 'given name': true,\n}\nconst paren = /\\((.*)\\)$/\nconst listOf = /^list of ./\nconst disambig = /\\(disambiguation\\)/\n\nconst skipPage = function (doc) {\n let title = doc.title() || ''\n\n //look at parentheses like 'Tornado (film)'\n let m = title.match(paren)\n if (!m) {\n return null\n }\n let inside = m[1] || ''\n inside = inside.toLowerCase()\n inside = inside.replace(/_/g, ' ')\n inside = inside.trim()\n\n //look at known parentheses\n if (skip.hasOwnProperty(inside)) {\n return true\n }\n //try a regex\n if (listOf.test(title) === true) {\n return true\n }\n if (disambig.test(title) === true) {\n return true\n }\n return false\n}\nmodule.exports = skipPage\n","const topk = function (arr) {\n let obj = {}\n arr.forEach((a) => {\n obj[a] = obj[a] || 0\n obj[a] += 1\n })\n let res = Object.keys(obj).map((k) => [k, obj[k]])\n res = res.sort((a, b) => {\n if (a[1] > b[1]) {\n return -1\n } else if (a[1] < b[1]) {\n return 1\n }\n return 0\n })\n return res\n}\n\nconst parse = function (cat) {\n let split = cat.split(/\\//)\n return {\n root: split[1],\n child: split[2],\n }\n}\n\nconst getScore = function (detail) {\n let types = []\n Object.keys(detail).forEach((k) => {\n detail[k].forEach((obj) => {\n types.push(parse(obj.type))\n })\n })\n // find top parent\n let roots = types.map((obj) => obj.root).filter((s) => s)\n let tops = topk(roots)\n let top = tops[0]\n if (!top) {\n return {\n detail: detail,\n type: null,\n score: 0,\n }\n }\n let root = top[0]\n // score as % of results\n let score = top[1] / types.length\n // punish low counts\n if (top[1] === 1) {\n score *= 0.75\n }\n if (top[1] === 2) {\n score *= 0.85\n }\n if (top[1] === 3) {\n score *= 0.95\n }\n // if the second root is good\n if (tops[1]) {\n if (tops[1][1] === tops[0][1]) {\n score *= 0.5 //tie\n } else {\n score *= 0.8\n }\n }\n\n // find 2nd level\n let children = types.filter((o) => o.root === root && o.child).map((obj) => obj.child)\n let topKids = topk(children)\n top = topKids[0]\n let type = root\n if (top) {\n type = `${root}/${top[0]}`\n // punish for any conflicting children\n if (topKids.length > 1) {\n score *= 0.7\n }\n // punish for low count\n if (top[1] === 1) {\n score *= 0.8\n }\n }\n return {\n root: root,\n type: type,\n score: score,\n details: detail,\n }\n}\nmodule.exports = getScore\n","const byInfobox = require('./byInfobox')\nconst byCategory = require('./byCategory')\nconst byTemplate = require('./byTemplate')\nconst bySection = require('./bySection')\nconst byTitle = require('./byTitle')\nconst byDescription = require('./byDescription')\nconst skipPage = require('./_skip')\nconst score = require('./score')\n\nconst plugin = function (models) {\n //add a new method to main class\n models.Doc.prototype.classify = function (options) {\n let doc = this\n let res = {}\n\n //dont classify these\n if (skipPage(doc, options)) {\n return score(res, options)\n }\n\n //look for 'infobox person', etc\n res.infobox = byInfobox(doc, options)\n\n //look for '{{coord}}'\n res.template = byTemplate(doc, options)\n\n //look for '==early life=='\n res.section = bySection(doc, options)\n\n //look for 'foo (film)'\n res.title = byTitle(doc, options)\n\n //look for 'foo (film)'\n res.description = byDescription(doc, options)\n\n //look for 'Category: 1992 Births', etc\n res.category = byCategory(doc, options)\n return score(res, options)\n }\n}\nmodule.exports = plugin\n"],"names":["name","children","categories","mapping","patterns","descriptions","infoboxes","sections","templates","titles","properties","leagues","AmericanFootballPlayer","require$$0","BaseballPlayer","require$$1","FootballPlayer","require$$2","BasketballPlayer","require$$3","HockeyPlayer","require$$4","films","tv_shows","parties","groups","instruments","works","Athlete","Actor","Politician","Musician","Author","birth_date","birth_place","nationality","death_date","death_place","City","Country","population","leader","length","airlines","runways","Bridge","Airport","date_created","Jurisdiction","Structure","BodyOfWater","location","coordinates","albums","coaches","MusicalGroup","Company","SportsTeam","PoliticalParty","leaders","members","casualties","winners","dates","places","Disaster","Election","MilitaryConflict","SportsEvent","seasons","platforms","Album","Book","Film","TVShow","Play","Song","require$$5","VideoGame","require$$6","genre","causes","treatments","CreativeWork","MedicalCondition","Organism","Product","creators","date","schema","Person","Place","Organization","Event","Creation","setId","root","id","Object","keys","forEach","k","mappings","doNode","node","str","reg","push","byInfobox","doc","found","i","inf","type","toLowerCase","replace","trim","hasOwnProperty","reason","byPattern","test","byCategory","cats","map","cat","category","match","byTemplate","tmpl","json","title","template","fromSection","s","paren","byTitle","m","inside","byDescription","description","desc","skip","disambiguation","surname","listOf","disambig","skipPage","topk","arr","obj","a","res","sort","b","parse","split","child","getScore","detail","types","roots","filter","tops","top","score","o","topKids","details","plugin","models","Doc","prototype","classify","options","infobox","section","bySection"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/classify/builds/wtf-plugin-classify.min.js b/plugins/classify/builds/wtf-plugin-classify.min.js index e5b57721..d97566c4 100644 --- a/plugins/classify/builds/wtf-plugin-classify.min.js +++ b/plugins/classify/builds/wtf-plugin-classify.min.js @@ -1 +1 @@ -!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfClassify=a()}(this,(function(){"use strict";let e={children:{Person:{name:"Person",children:{Athlete:{name:"Athlete",properties:{leagues:()=>{}},children:{AmericanFootballPlayer:{name:"AmericanFootballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BaseballPlayer:{name:"BaseballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["baseball year"],patterns:[]},titles:{mapping:[],patterns:[]}},FootballPlayer:{name:"FootballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BasketballPlayer:{name:"BasketballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},HockeyPlayer:{name:"HockeyPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},categories:{mapping:[],patterns:[/sportspeople from ./,/(footballers|cricketers|defencemen|cyclists)/]},descriptions:{patterns:[/(hockey|soccer|backetball|football) player/]},infoboxes:{mapping:["afl_biography","alpine_ski_racer","athlete","baseball_biography","basketball_biography","boxer","cfl_player","cricketer","cyclist","field_hockey_player","figure_skater","gaa_player","golfer","gymnast","ice_hockey_player","lacrosse_player","martial_artist","mlb_player","nba_biography","nfl_biography","nfl_player","professional_wrestler","rugby_biography","rugby_league_biography","skier","squash_player","swimmer","tennis_biography","volleyball_biography","volleyball_player","hockey team player","football biography","baseball biography","ice hockey player","nfl player","basketball biography","professional wrestler","tennis biography","afl biography","nfl biography","rugby biography","rugby league biography","nba biography","figure skater","gaa player"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/sport-bio-stub$/]},titles:{mapping:["american football player","football player","gaelic footballer","athlete","boxer","cricketer","footballer","wrestler","golfer","swimmer"],patterns:[]}},Actor:{name:"Actor",children:{},properties:{films:()=>{},tv_shows:()=>{}},categories:{mapping:["male actors from new york city"],patterns:[/actresses/,/actors from ./,/actor stubs$/,/ (actors|actresses)$/]},descriptions:{patterns:[/(actor|actress)/]},infoboxes:{mapping:["actor"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/actor-stub$/]},titles:{mapping:["actor","actress"],patterns:[]}},Politician:{name:"Politician",children:{},properties:{parties:()=>{}},categories:{mapping:["uk mps 2001–05","uk mps 1997–2001","uk mps 2005–10","uk mps 1992–97","labour party (uk) mps for english constituencies","conservative party (uk) mps for english constituencies","uk mps 1987–92","uk mps 2010–15","democratic party members of the united states house of representatives","republican party members of the united states house of representatives","uk mps 1983–87","democratic party state governors of the united states","california republicans","british secretaries of state","democratic party united states senators","uk mps 2015–17","republican party united states senators","republican party state governors of the united states","california democrats","uk mps 1979–83","uk mps 2017–"],patterns:[/politicians from ./,/politician stubs$/,/. (democrats|republicans|politicians)$/,/mayors of ./]},descriptions:{patterns:[/(politician|member of parliament)/]},infoboxes:{mapping:["canadianmp","governor","indian_politician","mp","officeholder","politician","politician_(general)","president","roman_emperor","state_representative","state_senator","congressman","prime minister","indian politician","senator","state representative","state senator","us cabinet official"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["list of united states senators congress"],patterns:[/(politician|mayor)-stub$/]},titles:{mapping:["australian politician","canadian politician","politician","british politician","governor","irish politician","mayor"],patterns:[]}},Musician:{name:"Musician",children:{},properties:{groups:()=>{},instruments:()=>{}},categories:{mapping:["american male guitarists","american singer-songwriters","american male singers","american rock singers","american rock guitarists","21st-century american singers","lead guitarists","african-american musicians","english male singers","american male singer-songwriters","american rock songwriters","american record producers","american country singer-songwriters","20th-century american guitarists","english songwriters","20th-century american pianists","songwriters from new york (state)","african-american singers","american blues singers","american pop singers","male guitarists","american country singers","blues hall of fame inductees","american male songwriters","songwriters from california","english rock guitarists","american folk singers","english rock singers","english singer-songwriters","african-american male rappers","african-american jazz musicians","20th-century english singers","american female singer-songwriters","jewish american musicians","american blues guitarists","20th-century conductors (music)","american female singers","american jazz bandleaders","american jazz pianists","american soul singers","american female guitarists","american multi-instrumentalists","american country guitarists","english record producers","songwriters from texas","american composers","singers from california","american folk guitarists","lgbt singers","american buskers","guitarists from california","feminist musicians","big band bandleaders","20th-century composers","african-american songwriters","british rhythm and blues boom musicians","alternative rock singers","21st-century american guitarists","american alternative rock musicians","musicians from los angeles","rhythm guitarists","american session musicians","jazz musicians from new orleans","alternative rock guitarists","20th-century women musicians","male film score composers","african-american singer-songwriters","american jazz singers","21st-century english singers","singers from new york city","american acoustic guitarists","musicians from new york city","slide guitarists","guitarists from texas","vaudeville performers"],patterns:[/musicians from ./,/(singers|songwriters|painters|poets)/]},descriptions:{patterns:[/(singer|musicianrapper|drummer)/,/(keyboard|guitar|bass) player/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/(musician|singer)-stub$/]},titles:{mapping:["composer","musician","rapper","singer"],patterns:[]}},Author:{name:"Author",children:{},properties:{works:()=>{}},categories:{mapping:["20th-century american novelists","american male novelists","american film directors","21st-century american novelists","american film producers","american male screenwriters","american science fiction writers","20th-century english novelists","english male poets","american male short story writers","american political writers","english male novelists","20th-century american writers","19th-century male writers","american male writers","20th-century women writers","20th-century male writers","german male writers","21st-century american writers","french male writers","jewish american writers","writers from new york city","21st-century women writers","english male writers"],patterns:[/novelists from ./]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},properties:{birth_date:()=>{},birth_place:()=>{},nationality:()=>{},death_date:()=>{},death_place:()=>{}},categories:{mapping:["living people","possibly living people","year of birth unknown","fellows of the royal society","members of the privy council of the united kingdom","american people of english descent","guggenheim fellows","harvard university alumni","american military personnel of world war ii","knights bachelor","american roman catholics","knights of the garter","presidential medal of freedom recipients","commanders of the order of the british empire","people educated at eton college","alumni of trinity college, cambridge","foreign members of the royal society","american people of scottish descent","american memoirists","members of the french academy of sciences","united states army soldiers","officers of the order of the british empire","deaths from pneumonia","burials at père lachaise cemetery","deaths from cancer in california","year of birth missing (living people)","knights of the golden fleece","columbia university alumni","alumni of the university of edinburgh","american people of russian-jewish descent","yale university alumni","american atheists","people of the tudor period","tony award winners","members of the académie française","united states army officers","persons of national historic significance (canada)","20th-century american businesspeople","american television producers","american journalists","american male journalists","american male comedians","princeton university alumni","university of paris alumni","american episcopalians","american women novelists","phi beta kappa members","20th-century american poets","bafta winners (people)","members of the queen's privy council for canada","american presbyterians","fellows of the american academy of arts and sciences","members of the united states national academy of sciences","members of the royal swedish academy of sciences","20th-century american short story writers","american nobel laureates","harvard university faculty","roman catholic monarchs","popes","italian popes"],patterns:[/[0-9]{4} births/,/[0-9]{4} deaths/,/people of .* descent/,/^deaths from /,/^(people|philanthropists|writers) from ./,/ (players|alumni)$/,/(alumni|fellows) of .$/,/(people|writer) stubs$/,/(american|english) (fe)?male ./,/(american|english) (architects|people)/]},descriptions:{patterns:[/(artist|painter|poet|writer|celebrity|activist)/]},infoboxes:{mapping:["adult_biography","architect","chef","chess_player","christian_leader","college_coach","college_football_player","comedian","comics_creator","criminal","engineer","fashion_designer","football_biography","gridiron_football_person","handball_biography","hindu_leader","horseracing_personality","judge","mass_murderer","medical_person","military_person","model","monarch","nascar_driver","person","philosopher","police_officer","presenter","racing_driver","religious_biography","royalty","sportsperson","wrc_driver","writer","snooker player","military person","college coach","f1 driver","gridiron football person","racing driver","martial artist","chinese-language singer and actor","astronaut","nascar driver","adult biography","coa wide","chess player","pageant titleholder","archbishop","minister","saint","bishop","christian leader","religious biography","artist","comics creator","economist","scholar","scientist"],patterns:[]},sections:{mapping:["early life","personal life","career","career statistics","playing career","life and career","early life and education","film and television credits","filmography","selected filmography","works","life","family","political career","early career","later life","early life and career","later years","death and legacy","work","novels","later career","international","selected works","writings","professional career","retirement","poetry","marriage","electoral history","military career","international career","parliamentary career"],patterns:[]},templates:{mapping:["persondata","writer","ted speaker","s-aft","s-bef","s-start","marriage","s-off","s-par","internet archive author","ribbon devices","s-reg","find a grave","gutenberg author","s-new","other people","medalgold","medal","mlby","s-vac","s-hou","librivox author","blp sources","s-ppo","nbay"],patterns:[/-bio-stub$/]},titles:{mapping:["murder victim","academic","author","businessman","cyclist","diplomat","director","drummer","journalist","judge","minister","poet","priest","american football","ice hockey","soccer","rugby league","rugby union","field hockey","tennis","writer","vc","racing driver","architect","comedian","british army officer","general","broadcaster","engineer","physician","soldier","royal navy officer","producer","lawyer","activist","inventor","artist","painter","cartoonist","novelist","photographer","playwright","bishop","theologian","historian","philosopher","mathematician","astronomer","economist"],patterns:[]}},Place:{name:"Place",children:{Jurisdiction:{name:"Jurisdiction",children:{City:{name:"City",children:{},categories:{mapping:[],patterns:[/^cities and towns in ./,/(municipalities|settlements|villages|localities|townships) in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["swiss town","city japan","municipality br","russian town","south african town 2011"],patterns:[]},sections:{mapping:["sister cities","neighbourhoods","churches","parks and recreation","public transportation"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Country:{name:"Country",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["international relations"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["country"],patterns:[]}}},properties:{population:()=>{},leader:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["2010 census","2000 census","economy","transportation","government","communities","transport","culture","sports","adjacent counties","major highways","notable residents","tourism","cities","population","unincorporated communities","infrastructure","schools","rail","census-designated places","towns","local government","points of interest","attractions","demographics","climate","notable people","townships","recreation","arts and culture","governance","administrative divisions","landmarks","demography"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Structure:{name:"Structure",children:{Bridge:{name:"Bridge",children:{},properties:{length:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Airport:{name:"Airport",children:{},properties:{airlines:()=>{},runways:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},properties:{date_created:()=>{}},categories:{mapping:[],patterns:[/(buildings|bridges) completed in /,/airports established in ./,/(airports|bridges) in ./,/buildings and structures in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["airport","bridge","building","power_station","religious_building","stadium","uk school","military structure","religious building","shopping mall","lighthouse","power station"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BodyOfWater:{name:"BodyOfWater",children:{},properties:{},categories:{mapping:[],patterns:[/(rivers|lakes|tributaries) of ./]},descriptions:{patterns:[]},infoboxes:{mapping:["body_of_water","lake","river","sea","body of water"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-river-stub$/]},titles:{mapping:["river"],patterns:[]}}},properties:{location:()=>{},coordinates:()=>{}},categories:{mapping:[],patterns:[/populated places/,/landforms of ./,/railway stations/,/parks in ./,/ district$/,/geography stubs$/,/sports venue stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:["amusement_park","ancient_site","australian_place","casino","cemetery","church","cricket_ground","dam","feature_on_mars","former_country","former_subdivision","french_commune","german_location","golf_facility","historic_site","hospital","hotel","islands","israel_village","italian_comune","launch_pad","military_memorial","military_structure","monument","mountain","mountain_pass","mountain_range","museum","neighborhood_portland_or","oil_field","park","prison","province_or_territory_of_canada","road","road_small","russian_inhabited_locality","russian_town","russian_urban-type_settlement","school","scotland_council_area","settlement","shopping_mall","south_african_subplace_2011","state","station","street","swiss_town","temple","town_at","u.s._metropolitan_area","u.s._state","uk_constituency","uk_disused_station","uk_place","uk_school","unesco_world_heritage_site","university_of_notre_dame_residence_hall","venue","waterfall","windmill","zoo","ecoregion","uk place","italian comune","geobox","australian place","french commune","german location","u.s. county","former country","road small","lunar crater","gb station","greek dimos","uk constituency main","finnish municipality/population count","ancient site","mountain range","london station","former subdivision","uk station","historic site","world heritage site","diocese","uk disused station","belgium municipality","uk constituency","theatre","canada electoral district","nycs","mountain pass","kommune","historic subdivision","u.s. congressional district"],patterns:[]},sections:{mapping:["geography","geology","location","coat of arms"],patterns:[]},templates:{mapping:["coord","weather box","us census population","jct","geographic location","representative","historical populations","wikivoyage-inline","election box","zh","wide image"],patterns:[/-geo-stub$/]},titles:{mapping:["cape verde","cedar busway station","delhi metro","erie county, new york","new jersey","new orleans","new york City Subway","new york","new zealand","north carolina","northern ireland","sri lanka","uk parliament constituency","united kingdom","united states","alaska","argentina","arkansas","australia","barbados","brazil","california","canada","chad","chicago","colombia","connecticut","dominica","edmonton","france","georgia","india","israel","japan","manhattan","michigan","nigeria","oklahoma","ontario","pennsylvania","portugal","province","spain","sudan","texas","uk","va","Virginia","volcano","washington"],patterns:[]}},Organization:{name:"Organization",children:{MusicalGroup:{name:"MusicalGroup",children:{},properties:{albums:()=>{}},categories:{mapping:["musical quartets","musical duos","musical trios","musical quintets","english rock music groups","english new wave musical groups","african-american musical groups","21st-century american musicians","american alternative metal musical groups","english pop music groups","art rock musical groups","english post-punk music groups"],patterns:[/musical groups from /,/musical groups (dis)?established in [0-9]{4}/,/musical group stubs/,/. music(al)? (groups|duos|trios|quartets|quintets)$/]},descriptions:{patterns:[/rock band/]},infoboxes:{mapping:["musical_artist"],patterns:[]},sections:{mapping:["band members","albums","studio albums","compilation albums","live albums","compilations","eps"],patterns:[]},templates:{mapping:["allmusic"],patterns:[]},titles:{mapping:["band","american band","australian band","canadian band","uk band","japanese band","swedish band"],patterns:[]}},Company:{name:"Company",children:{},categories:{mapping:["companies listed on the new york stock exchange","jazz record labels","video game development companies","american record labels","companies listed on nasdaq","video game companies of the united states","companies formerly listed on the london stock exchange","multinational companies headquartered in the united states","companies listed on the tokyo stock exchange","re-established companies","companies based in new york city","defunct video game companies","companies formed by merger","entertainment companies based in california"],patterns:[/companies (established|based) in ./]},descriptions:{patterns:[/(company|subsidary)/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["products"],patterns:[]},templates:{mapping:[],patterns:[/-company-stub$/]},titles:{mapping:["company","newspaper","restaurant","retailer","store"],patterns:[]}},SportsTeam:{name:"SportsTeam",children:{},properties:{coaches:()=>{}},categories:{mapping:["football clubs in england","english football league clubs","southern football league clubs","football clubs in scotland","premier league clubs","national basketball association teams"],patterns:[/football clubs in ./,/(basketball|hockey|baseball|football) teams (in|established) ./]},descriptions:{patterns:[/(basketball|hockey|soccer|football|sports) team/]},infoboxes:{mapping:["basketball_club","pro_hockey_team","college_ice_hockey_team","college_soccer_team","cricket_team","football_club","non_test_cricket_team","non-profit","rugby_league_club","rugby_league_representative_team","rugby_team","baseball team","football club","rugby team","national football team","basketball club","hockey team","rugby league club","football club infobox","cricket team"],patterns:[]},sections:{mapping:["coaching staff","head coaches","team records","current squad"],patterns:[]},templates:{mapping:[],patterns:[/-sport-team-stub$/]},titles:{mapping:[],patterns:[]}},PoliticalParty:{name:"PoliticalParty",children:{},categories:{mapping:["social democratic parties"],patterns:[]},descriptions:{patterns:[/political party/]},infoboxes:{mapping:["political_party","political party"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["political party"],patterns:[]}}},properties:{leaders:()=>{},members:()=>{}},categories:{mapping:["japanese brands","american jazz composers","scouting in the united states","car brands","government-owned airlines","baptist denominations in north america","baptist denominations established in the 20th century","land-grant universities and colleges","organizations based in washington, d.c.","video game publishers","defunct motor vehicle manufacturers of the united states","alternative rock groups from california"],patterns:[/(organi[sz]ations|publications) based in /,/(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,/(secondary|primary) schools/,/military units/,/magazines/,/organi[sz]ation stubs$/]},descriptions:{patterns:[/(charity|organization|ngo)/]},infoboxes:{mapping:["airline","broadcasting_network","cbb_team","choir","college","company","dot-com_company","film_awards","film_festival","football_league","gaa_club","government_agency","government_cabinet","journal","laboratory","law_enforcement_agency","legislature","library","military_unit","national_military","ncaa_football_school","newspaper","nobility","organization","public_transit","publisher","radio_station","rail_line","rail_service","record_label","school_district","sport_governing_body","sports_league","television_channel","tv_channel","u.s._cabinet","u.s._legislation","uk_legislation","university","v8_supercar_team","former monarchy","criminal organization","radio station","military unit","government agency","rail line","record label","school district","tv channel","sports league","football league","worldscouting","sg rail","law enforcement agency","uk legislation","public transit","us university ranking","television channel","bus transit","union","broadcasting network","christian denomination","film awards","gaa club","fraternity","rail","rail service","national military","sport governing body","political party/seats","athletic conference","film festival","dot-com company","india university ranking","uk university rankings","government cabinet"],patterns:[]},sections:{mapping:["founding","founders","members","athletics","notable alumni","academics","campus","organization","student life","rankings","fleet","research","formation","operations","players","alumni","former members","presidents","membership","current members"],patterns:[]},templates:{mapping:["composition bar","fs player","y","n","rws"],patterns:[]},titles:{mapping:["group","journal","am","fm","wehrmacht","tv channel","british band","organization","airline","publisher","brand","record label","union army","defunct","tv network","department store"],patterns:[]}},Event:{name:"Event",properties:{dates:()=>{},places:()=>{}},children:{Disaster:{name:"Disaster",children:{},properties:{casualties:()=>{}},categories:{mapping:["retired atlantic hurricanes"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["aircraft_accident","airliner_accident","earthquake","hurricane","pandemic","airliner accident"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Election:{name:"Election",children:{},categories:{mapping:["presidential elections in ireland"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["election"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["election summary party with leaders"],patterns:[/-election-stub$/]},titles:{mapping:[],patterns:[]}},MilitaryConflict:{name:"MilitaryConflict",children:{},categories:{mapping:["wars involving the united kingdom","proxy wars","new zealand wars","battles between england and scotland","conflicts in 1943","last stand battles","battles and conflicts without fatalities","guerrilla wars","20th-century conflicts","20th-century revolutions","sieges involving japan","revolution-based civil wars"],patterns:[/conflicts (in|of) [0-9]{4}/,/(wars|battles|conflicts) (involving|of|in) ./]},descriptions:{patterns:[]},infoboxes:{mapping:["military_conflict","military conflict","civil conflict","civilian attack"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},SportsEvent:{name:"SportsEvent",children:{},properties:{winners:()=>{}},categories:{mapping:["1904 summer olympics events","1900 summer olympics events","2002 winter olympics events"],patterns:[/. league seasons$/,/^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/]},descriptions:{patterns:[]},infoboxes:{mapping:["athletics_championships","badminton_event","boxingmatch","fila_wrestling_event","football_club_season","football_country_season","football_league_season","football_match","football_tournament_season","little_league_world_series","nba_season","ncaa_baseball_conference_tournament","ncaa_football_single_game","ncaa_team_season","nfl_season","nfl_single_game","sports_season","tennis_event","tennis_grand_slam_events","wrestling_event","football tournament","olympic event","international football competition","wrestling event","sports season","cycling race report","ncaa team season","cricket tournament","football match","world series expanded","mma event","nfl season","nfl draft","athletics championships","football club season","canadian football game","australian rules football season","football tournament season","international ice hockey competition","cricket tour"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},categories:{mapping:["years in literature","years in music","years in film","united states supreme court cases","leap years in the gregorian calendar","governor general's awards","eurovision song contest by year","grammy awards ceremonies","united kingdom in the eurovision song contest","manned soyuz missions","american civil liberties union litigation","may","october","missions to the moon","world war ii british commando raids","july","december","september","november","january","june","august","april","february","march","conflicts in 1944","missions to mars","luna program","conflicts in 1942","special air service","soft landings on the moon","may observances","first events","recent years","elections not won by the popular vote winner","conflicts in 1864","1862 in the american civil war","new york (state) in the american revolution","march observances","public holidays in the united states","1944 in france","december observances","20th century american trials","african-american civil rights movement (1954–68)","october observances","spring holidays","years in aviation","national days","summer holidays","apollo program"],patterns:[/^(19|20)[0-9]{2} in /,/^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["beauty_pageant","civil_conflict","concert_tour","court_case","event","historical_era","holiday","horseraces","individual_snooker_tournament","legislative_term","music_festival","nfl_draft","pba_draft","reality_music_competition","recurring_event","song_contest","summit","grand prix race report","recurring event","music festival","football league season","scotus case","court case","concert tour","international labour organization convention","song contest","australian year","individual darts tournament","beauty pageant","historical event","grand prix motorcycle race report","international handball competition","coa case","individual snooker tournament","esc national year","indy500","national political convention","referendum"],patterns:[]},sections:{mapping:["aftermath","births","deaths","battle","results","prelude","may","june","march","december","october","july","august","april","november","february","september","january","incumbents","casualties","july to december","january to june","medal table","campaign"],patterns:[]},templates:{mapping:["esc","year nav","year dab","goal","flagiocmedalist","m1 year in topic","year nav topic5","bc year in topic","flagiocathlete","year article header"],patterns:[]},titles:{mapping:["festival","25 m","world war ii","conmebol","music festival","world war i"],patterns:[/ \((19|20)[0-9]{2}\)$/]}},Creation:{name:"Creation",children:{CreativeWork:{name:"CreativeWork",children:{Album:{name:"Album",children:{},categories:{mapping:["albums recorded at abbey road studios"],patterns:[/[0-9]{4}.*? albums/,/^albums /,/ albums$/,/album stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:["album"],patterns:[]},sections:{mapping:["track listing"],patterns:[]},templates:{mapping:["track listing","tracklist"],patterns:[/-album-stub$/]},titles:{mapping:["album"],patterns:[]}},Book:{name:"Book",children:{},categories:{mapping:[],patterns:[/(film|novel) stubs$/,/[0-9]{4}.*? (poems|novels)/,/ (poems|novels)$/]},descriptions:{patterns:[]},infoboxes:{mapping:["book"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-novel-stub$/]},titles:{mapping:["book","novel"],patterns:[]}},Film:{name:"Film",children:{},categories:{mapping:[],patterns:[/[0-9]{4}.*? films/,/ films$/,/^films /]},descriptions:{patterns:[/[0-9]{4} film/]},infoboxes:{mapping:["film"],patterns:[]},sections:{mapping:["cast"],patterns:[]},templates:{mapping:["imdb title","film date","rotten-tomatoes"],patterns:[/-film-stub$/]},titles:{mapping:["movie"],patterns:[/ \([0-9]{4} film\)$/]}},TVShow:{name:"TVShow",children:{},properties:{seasons:()=>{}},categories:{mapping:[],patterns:[/television series/]},descriptions:{patterns:[/television series/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["episode list"],patterns:[]},titles:{mapping:["tv series","game show","u.s. tv series","uk tv series","australian tv series","u.s. game show"],patterns:[]}},Play:{name:"Play",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["play"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-play-stub$/]},titles:{mapping:["play"],patterns:[]}},Song:{name:"Song",children:{},categories:{mapping:[],patterns:[/[0-9]{4}.*? songs/,/^songs /,/ songs$/,/song stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["song"],patterns:[]}},VideoGame:{name:"VideoGame",children:{},properties:{platforms:()=>{}},categories:{mapping:["dos games","virtual console games","mac os games","amiga games","arcade games","commodore 64 games","nintendo entertainment system games","playstation (console) games","ios games","super nintendo entertainment system games","video game sequels","game boy advance games","first-person shooters","playstation network games","linux games","atari st games","playstation 2 games","game boy games","zx spectrum games","mario universe games","multiplayer online games","mobile games","android (operating system) games","platform games","xbox 360 live arcade games","sega genesis games"],patterns:[/video games/]},descriptions:{patterns:[]},infoboxes:{mapping:["video game"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["video game"],patterns:[]}}},properties:{genre:()=>{}},categories:{mapping:["operas","american science fiction novels","broadway musicals","debut novels","the twilight zone (1959 tv series) episodes","united states national recording registry recordings","macos games","virtual console games for wii u","american monthly magazines","broadway plays","interactive achievement award winners","doubleday (publisher) books","19th-century classical composers","film soundtracks","universal deluxe editions","best picture academy award winners","shōnen manga","west end musicals","sequel novels","dystopian novels","american comic strips","american road movies","chemical elements","amstrad cpc games","neo-noir","fiction with unreliable narrators","best drama picture golden globe winners","adventure anime and manga"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["artwork","book_series","broadcast","comic_book_title","comic_strip","doctor_who_episode","hollywood_cartoon","magazine","musical","musical_composition","opera","painting","radio_show","song","song_contest_entry","television_episode","television_season","treaty","video_game","anthem","television episode","comic book title","song contest entry","short story","hollywood cartoon","radio show","simpsons episode","musical composition","book series","comic strip","television season","comics organization","doctor who episode","animanga/other","graphic novel","rpg","big finish","vg series","name module","comics story arc","video game series","futurama episode","comics character and title","comics meta series","webcomic","the goodies episode","audio drama","sw comics","media franchise","folk tale"],patterns:[]},sections:{mapping:["plot","reception","charts","release","plot summary","gameplay","characters","box office","accolades","soundtrack","adaptations","synopsis","home media","weekly charts","themes","publication history","filming","year-end charts","casting","release and reception","commercial performance","composition","album","setting","chart positions","release history","charts and certifications","sequels","chart performance","sequel","recordings","story","editions","in other media"],patterns:[]},templates:{mapping:["rating","certification table entry","albumchart","music","album ratings","album chart","singles","isbnt","singlechart","tcmdb title","mojo title","based on","amg movie","duration"],patterns:[/-song-stub$/]},titles:{mapping:["season 2","season 3","season 4","season 5","the twilight zone","ballet","magazine","miniseries","music","opera","painting","series","single","song","soundtrack","ep","comics","musical","manga","star trek: the next generation","star trek: deep space nine","buffy the vampire slayer","angel","the outer limits","star trek: voyager","short story","seinfeld","star trek: enterprise","poem","tv","uk series","doctor who","david bowie song","caravaggio","the beach boys song","video","audio drama","babylon 5","madonna song"],patterns:[/ \((.*? )song\)$/]}},MedicalCondition:{name:"MedicalCondition",children:{},properties:{causes:()=>{},treatments:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["medical condition (new)","medical condition","disease"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Organism:{name:"Organism",children:{},properties:{},categories:{mapping:["taxa named by carl linnaeus","ornamental trees","birds by common name","living fossils","taxa named by john edward gray","phelsuma","multituberculates","angiosperm orders","cimolodonts","urban animals","flowers","geckos","herbs","spices","skinks","cretaceous mammals","commercial fish","paleocene mammals","bird families","edible nuts and seeds","invasive plant species","leaf vegetables","root vegetables","corvus (genus)","insects in culture","ducks","agamidae","edge species","tropical fruit","pinus","tropical agriculture","indian spices","paleocene genus extinctions","epiphytic orchids","crops","fruits originating in asia","calidris","ptilodontoids","plants and pollinators","mammal families","marine edible fish","taxa named by leopold fitzinger","setophaga","shorebirds","berries","megafauna","animal dance","animal phyla","american inventions","entheogens","crops originating from the americas","non-timber forest products","geese"],patterns:[/(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,/ first appearances/,/ . described in [0-9]{4}/,/. (phyla|genera)$/,/. taxonomic families$/,/plants used in ./,/ (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/]},descriptions:{patterns:[]},infoboxes:{mapping:["speciesbox","automatic taxobox","dogbreed","dog breed","cat breed","grape variety","taxobox","subspeciesbox","mycomorphbox","paraphyletic group","nutritional value","infraspeciesbox","horse","haplogroup","bird","bird/population","medical resources","nc name","pig breed","botanical product","cattle breed","horse breed","poultry breed"],patterns:[]},sections:{mapping:["habitat","morphology","phylogeny","distribution and diversity","distribution and habitat","reproduction and development","taxonomy and phylogeny"],patterns:[]},templates:{mapping:["taxonbar","wikispecies","animalia","chordata","cnidaria","porifera","epicaridea","mammals","phlyctaeniidae","carnivora","clade","life on earth","orders of insects","coleoptera","insects in culture","living things in culture","eukaryota classification","iucn status","extinct","fossil range","internetbirdcollection","vireo","angle bracket","wikispecies-inline","iucn map","xeno-canto species","avibase","cladex","birdlife","fossilrange"],patterns:[]},titles:{mapping:["plant","genus","fish","bird"],patterns:[]}},Product:{name:"Product",children:{},properties:{},categories:{mapping:[],patterns:[/products introduced in ./,/musical instruments/]},descriptions:{patterns:[]},infoboxes:{mapping:["automobile","beverage","cpu","electric_vehicle","gpu","mobile_phone","motorcycle","synthesizer","television","card game","computer","laboratory equipment"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["computer game","candy","board game","card game","automobile"],patterns:[]}}},properties:{creators:()=>{},date:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}}};const a=function(e,t){return e.name?e.id=t+"/"+e.name:e.id="",e.children&&Object.keys(e.children).forEach((t=>{a(e.children[t],e.id)})),e};e=a(e,"");let t={categories:{},descriptions:{},infoboxes:{},sections:{},templates:{},titles:{}},i={categories:[],descriptions:[],infoboxes:[],sections:[],templates:[],titles:[]};const s=function(e){e.id&&(e.categories.mapping.forEach((a=>{t.categories[a]=e.id})),e.descriptions.mapping=e.descriptions.mapping||[],e.descriptions.mapping.forEach((a=>{t.descriptions[a]=e.id})),e.infoboxes.mapping.forEach((a=>{t.infoboxes[a]=e.id})),e.sections.mapping.forEach((a=>{t.sections[a]=e.id})),e.templates.mapping.forEach((a=>{t.templates[a]=e.id})),e.titles.mapping.forEach((a=>{t.titles[a]=e.id})),e.categories.patterns.forEach((a=>{i.categories.push([a,e.id])})),e.descriptions.patterns.forEach((a=>{i.descriptions.push([a,e.id])})),e.infoboxes.patterns.forEach((a=>{i.infoboxes.push([a,e.id])})),e.sections.patterns.forEach((a=>{i.sections.push([a,e.id])})),e.templates.patterns.forEach((a=>{i.templates.push([a,e.id])})),e.titles.patterns.forEach((a=>{i.titles.push([a,e.id])}))),e.children&&Object.keys(e.children).forEach((a=>{s(e.children[a])}))};s(e);var n={patterns:i,mappings:t};const{mappings:r}=n;var o=function(e){let a=e.infoboxes(),t=[];for(let e=0;e(e=(e=(e=e.toLowerCase()).replace(/^(category|categorie|kategori): ?/i,"")).replace(/_/g," ")).trim()));for(let e=0;e{let a=e.title();return a=a.toLowerCase().trim(),a}));for(let e=0;e{a[e]=a[e]||0,a[e]+=1}));let t=Object.keys(a).map((e=>[e,a[e]]));return t=t.sort(((e,a)=>e[1]>a[1]?-1:e[1]{e[t].forEach((e=>{a.push(function(e){let a=e.split(/\//);return{root:a[1],child:a[2]}}(e.type))}))}));let t=a.map((e=>e.root)).filter((e=>e)),i=E(t),s=i[0];if(!s)return{detail:e,type:null,score:0};let n=s[0],r=s[1]/a.length;1===s[1]&&(r*=.75),2===s[1]&&(r*=.85),3===s[1]&&(r*=.95),i[1]&&(i[1][1]===i[0][1]?r*=.5:r*=.8);let o=a.filter((e=>e.root===n&&e.child)).map((e=>e.child)),p=E(o);s=p[0];let l=n;return s&&(l=`${n}/${s[0]}`,p.length>1&&(r*=.7),1===s[1]&&(r*=.8)),{root:n,type:l,score:r,details:e}};return function(e){e.Doc.prototype.classify=function(e){let a=this,t={};return P(a)||(t.infobox=o(a),t.template=d(a),t.section=h(a),t.title=_(a),t.description=k(a),t.category=m(a)),C(t)}}})); +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfClassify=a()}(this,(function(){"use strict";let e={children:{Person:{name:"Person",children:{Athlete:{name:"Athlete",properties:{leagues:()=>{}},children:{AmericanFootballPlayer:{name:"AmericanFootballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BaseballPlayer:{name:"BaseballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["baseball year"],patterns:[]},titles:{mapping:[],patterns:[]}},FootballPlayer:{name:"FootballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BasketballPlayer:{name:"BasketballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},HockeyPlayer:{name:"HockeyPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},categories:{mapping:[],patterns:[/sportspeople from ./,/(footballers|cricketers|defencemen|cyclists)/]},descriptions:{patterns:[/(hockey|soccer|backetball|football) player/]},infoboxes:{mapping:["afl_biography","alpine_ski_racer","athlete","baseball_biography","basketball_biography","boxer","cfl_player","cricketer","cyclist","field_hockey_player","figure_skater","gaa_player","golfer","gymnast","ice_hockey_player","lacrosse_player","martial_artist","mlb_player","nba_biography","nfl_biography","nfl_player","professional_wrestler","rugby_biography","rugby_league_biography","skier","squash_player","swimmer","tennis_biography","volleyball_biography","volleyball_player","hockey team player","football biography","baseball biography","ice hockey player","nfl player","basketball biography","professional wrestler","tennis biography","afl biography","nfl biography","rugby biography","rugby league biography","nba biography","figure skater","gaa player"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/sport-bio-stub$/]},titles:{mapping:["american football player","football player","gaelic footballer","athlete","boxer","cricketer","footballer","wrestler","golfer","swimmer"],patterns:[]}},Actor:{name:"Actor",children:{},properties:{films:()=>{},tv_shows:()=>{}},categories:{mapping:["male actors from new york city"],patterns:[/actresses/,/actors from ./,/actor stubs$/,/ (actors|actresses)$/]},descriptions:{patterns:[/(actor|actress)/]},infoboxes:{mapping:["actor"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/actor-stub$/]},titles:{mapping:["actor","actress"],patterns:[]}},Politician:{name:"Politician",children:{},properties:{parties:()=>{}},categories:{mapping:["uk mps 2001–05","uk mps 1997–2001","uk mps 2005–10","uk mps 1992–97","labour party (uk) mps for english constituencies","conservative party (uk) mps for english constituencies","uk mps 1987–92","uk mps 2010–15","democratic party members of the united states house of representatives","republican party members of the united states house of representatives","uk mps 1983–87","democratic party state governors of the united states","california republicans","british secretaries of state","democratic party united states senators","uk mps 2015–17","republican party united states senators","republican party state governors of the united states","california democrats","uk mps 1979–83","uk mps 2017–"],patterns:[/politicians from ./,/politician stubs$/,/. (democrats|republicans|politicians)$/,/mayors of ./]},descriptions:{patterns:[/(politician|member of parliament)/]},infoboxes:{mapping:["canadianmp","governor","indian_politician","mp","officeholder","politician","politician_(general)","president","roman_emperor","state_representative","state_senator","congressman","prime minister","indian politician","senator","state representative","state senator","us cabinet official"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["list of united states senators congress"],patterns:[/(politician|mayor)-stub$/]},titles:{mapping:["australian politician","canadian politician","politician","british politician","governor","irish politician","mayor"],patterns:[]}},Musician:{name:"Musician",children:{},properties:{groups:()=>{},instruments:()=>{}},categories:{mapping:["american male guitarists","american singer-songwriters","american male singers","american rock singers","american rock guitarists","21st-century american singers","lead guitarists","african-american musicians","english male singers","american male singer-songwriters","american rock songwriters","american record producers","american country singer-songwriters","20th-century american guitarists","english songwriters","20th-century american pianists","songwriters from new york (state)","african-american singers","american blues singers","american pop singers","male guitarists","american country singers","blues hall of fame inductees","american male songwriters","songwriters from california","english rock guitarists","american folk singers","english rock singers","english singer-songwriters","african-american male rappers","african-american jazz musicians","20th-century english singers","american female singer-songwriters","jewish american musicians","american blues guitarists","20th-century conductors (music)","american female singers","american jazz bandleaders","american jazz pianists","american soul singers","american female guitarists","american multi-instrumentalists","american country guitarists","english record producers","songwriters from texas","american composers","singers from california","american folk guitarists","lgbt singers","american buskers","guitarists from california","feminist musicians","big band bandleaders","20th-century composers","african-american songwriters","british rhythm and blues boom musicians","alternative rock singers","21st-century american guitarists","american alternative rock musicians","musicians from los angeles","rhythm guitarists","american session musicians","jazz musicians from new orleans","alternative rock guitarists","20th-century women musicians","male film score composers","african-american singer-songwriters","american jazz singers","21st-century english singers","singers from new york city","american acoustic guitarists","musicians from new york city","slide guitarists","guitarists from texas","vaudeville performers"],patterns:[/musicians from ./,/(singers|songwriters|painters|poets)/]},descriptions:{patterns:[/(singer|musicianrapper|drummer)/,/(keyboard|guitar|bass) player/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/(musician|singer)-stub$/]},titles:{mapping:["composer","musician","rapper","singer"],patterns:[]}},Author:{name:"Author",children:{},properties:{works:()=>{}},categories:{mapping:["20th-century american novelists","american male novelists","american film directors","21st-century american novelists","american film producers","american male screenwriters","american science fiction writers","20th-century english novelists","english male poets","american male short story writers","american political writers","english male novelists","20th-century american writers","19th-century male writers","american male writers","20th-century women writers","20th-century male writers","german male writers","21st-century american writers","french male writers","jewish american writers","writers from new york city","21st-century women writers","english male writers"],patterns:[/novelists from ./]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},properties:{birth_date:()=>{},birth_place:()=>{},nationality:()=>{},death_date:()=>{},death_place:()=>{}},categories:{mapping:["living people","possibly living people","year of birth unknown","fellows of the royal society","members of the privy council of the united kingdom","american people of english descent","guggenheim fellows","harvard university alumni","american military personnel of world war ii","knights bachelor","american roman catholics","knights of the garter","presidential medal of freedom recipients","commanders of the order of the british empire","people educated at eton college","alumni of trinity college, cambridge","foreign members of the royal society","american people of scottish descent","american memoirists","members of the french academy of sciences","united states army soldiers","officers of the order of the british empire","deaths from pneumonia","burials at père lachaise cemetery","deaths from cancer in california","year of birth missing (living people)","knights of the golden fleece","columbia university alumni","alumni of the university of edinburgh","american people of russian-jewish descent","yale university alumni","american atheists","people of the tudor period","tony award winners","members of the académie française","united states army officers","persons of national historic significance (canada)","20th-century american businesspeople","american television producers","american journalists","american male journalists","american male comedians","princeton university alumni","university of paris alumni","american episcopalians","american women novelists","phi beta kappa members","20th-century american poets","bafta winners (people)","members of the queen's privy council for canada","american presbyterians","fellows of the american academy of arts and sciences","members of the united states national academy of sciences","members of the royal swedish academy of sciences","20th-century american short story writers","american nobel laureates","harvard university faculty","roman catholic monarchs","popes","italian popes"],patterns:[/[0-9]{4} births/,/[0-9]{4} deaths/,/people of .* descent/,/^deaths from /,/^(people|philanthropists|writers) from ./,/ (players|alumni)$/,/(alumni|fellows) of .$/,/(people|writer) stubs$/,/(american|english) (fe)?male ./,/(american|english) (architects|people)/]},descriptions:{patterns:[/(artist|painter|poet|writer|celebrity|activist)/]},infoboxes:{mapping:["adult_biography","architect","chef","chess_player","christian_leader","college_coach","college_football_player","comedian","comics_creator","criminal","engineer","fashion_designer","football_biography","gridiron_football_person","handball_biography","hindu_leader","horseracing_personality","judge","mass_murderer","medical_person","military_person","model","monarch","nascar_driver","person","philosopher","police_officer","presenter","racing_driver","religious_biography","royalty","sportsperson","wrc_driver","writer","snooker player","military person","college coach","f1 driver","gridiron football person","racing driver","martial artist","chinese-language singer and actor","astronaut","nascar driver","adult biography","coa wide","chess player","pageant titleholder","archbishop","minister","saint","bishop","christian leader","religious biography","artist","comics creator","economist","scholar","scientist"],patterns:[]},sections:{mapping:["early life","personal life","career","career statistics","playing career","life and career","early life and education","film and television credits","filmography","selected filmography","works","life","family","political career","early career","later life","early life and career","later years","death and legacy","work","novels","later career","international","selected works","writings","professional career","retirement","poetry","marriage","electoral history","military career","international career","parliamentary career"],patterns:[]},templates:{mapping:["persondata","writer","ted speaker","s-aft","s-bef","s-start","marriage","s-off","s-par","internet archive author","ribbon devices","s-reg","find a grave","gutenberg author","s-new","other people","medalgold","medal","mlby","s-vac","s-hou","librivox author","blp sources","s-ppo","nbay"],patterns:[/-bio-stub$/]},titles:{mapping:["murder victim","academic","author","businessman","cyclist","diplomat","director","drummer","journalist","judge","minister","poet","priest","american football","ice hockey","soccer","rugby league","rugby union","field hockey","tennis","writer","vc","racing driver","architect","comedian","british army officer","general","broadcaster","engineer","physician","soldier","royal navy officer","producer","lawyer","activist","inventor","artist","painter","cartoonist","novelist","photographer","playwright","bishop","theologian","historian","philosopher","mathematician","astronomer","economist"],patterns:[]}},Place:{name:"Place",children:{Jurisdiction:{name:"Jurisdiction",children:{City:{name:"City",children:{},categories:{mapping:[],patterns:[/^cities and towns in ./,/(municipalities|settlements|villages|localities|townships) in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["swiss town","city japan","municipality br","russian town","south african town 2011"],patterns:[]},sections:{mapping:["sister cities","neighbourhoods","churches","parks and recreation","public transportation"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Country:{name:"Country",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["international relations"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["country"],patterns:[]}}},properties:{population:()=>{},leader:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["2010 census","2000 census","economy","transportation","government","communities","transport","culture","sports","adjacent counties","major highways","notable residents","tourism","cities","population","unincorporated communities","infrastructure","schools","rail","census-designated places","towns","local government","points of interest","attractions","demographics","climate","notable people","townships","recreation","arts and culture","governance","administrative divisions","landmarks","demography"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Structure:{name:"Structure",children:{Bridge:{name:"Bridge",children:{},properties:{length:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Airport:{name:"Airport",children:{},properties:{airlines:()=>{},runways:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},properties:{date_created:()=>{}},categories:{mapping:[],patterns:[/(buildings|bridges) completed in /,/airports established in ./,/(airports|bridges) in ./,/buildings and structures in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["airport","bridge","building","power_station","religious_building","stadium","uk school","military structure","religious building","shopping mall","lighthouse","power station"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BodyOfWater:{name:"BodyOfWater",children:{},properties:{},categories:{mapping:[],patterns:[/(rivers|lakes|tributaries) of ./]},descriptions:{patterns:[]},infoboxes:{mapping:["body_of_water","lake","river","sea","body of water"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-river-stub$/]},titles:{mapping:["river"],patterns:[]}}},properties:{location:()=>{},coordinates:()=>{}},categories:{mapping:[],patterns:[/populated places/,/landforms of ./,/railway stations/,/parks in ./,/ district$/,/geography stubs$/,/sports venue stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:["amusement_park","ancient_site","australian_place","casino","cemetery","church","cricket_ground","dam","feature_on_mars","former_country","former_subdivision","french_commune","german_location","golf_facility","historic_site","hospital","hotel","islands","israel_village","italian_comune","launch_pad","military_memorial","military_structure","monument","mountain","mountain_pass","mountain_range","museum","neighborhood_portland_or","oil_field","park","prison","province_or_territory_of_canada","road","road_small","russian_inhabited_locality","russian_town","russian_urban-type_settlement","school","scotland_council_area","settlement","shopping_mall","south_african_subplace_2011","state","station","street","swiss_town","temple","town_at","u.s._metropolitan_area","u.s._state","uk_constituency","uk_disused_station","uk_place","uk_school","unesco_world_heritage_site","university_of_notre_dame_residence_hall","venue","waterfall","windmill","zoo","ecoregion","uk place","italian comune","geobox","australian place","french commune","german location","u.s. county","former country","road small","lunar crater","gb station","greek dimos","uk constituency main","finnish municipality/population count","ancient site","mountain range","london station","former subdivision","uk station","historic site","world heritage site","diocese","uk disused station","belgium municipality","uk constituency","theatre","canada electoral district","nycs","mountain pass","kommune","historic subdivision","u.s. congressional district"],patterns:[]},sections:{mapping:["geography","geology","location","coat of arms"],patterns:[]},templates:{mapping:["coord","weather box","us census population","jct","geographic location","representative","historical populations","wikivoyage-inline","election box","zh","wide image"],patterns:[/-geo-stub$/]},titles:{mapping:["cape verde","cedar busway station","delhi metro","erie county, new york","new jersey","new orleans","new york City Subway","new york","new zealand","north carolina","northern ireland","sri lanka","uk parliament constituency","united kingdom","united states","alaska","argentina","arkansas","australia","barbados","brazil","california","canada","chad","chicago","colombia","connecticut","dominica","edmonton","france","georgia","india","israel","japan","manhattan","michigan","nigeria","oklahoma","ontario","pennsylvania","portugal","province","spain","sudan","texas","uk","va","Virginia","volcano","washington"],patterns:[]}},Organization:{name:"Organization",children:{MusicalGroup:{name:"MusicalGroup",children:{},properties:{albums:()=>{}},categories:{mapping:["musical quartets","musical duos","musical trios","musical quintets","english rock music groups","english new wave musical groups","african-american musical groups","21st-century american musicians","american alternative metal musical groups","english pop music groups","art rock musical groups","english post-punk music groups"],patterns:[/musical groups from /,/musical groups (dis)?established in [0-9]{4}/,/musical group stubs/,/. music(al)? (groups|duos|trios|quartets|quintets)$/]},descriptions:{patterns:[/rock band/]},infoboxes:{mapping:["musical_artist"],patterns:[]},sections:{mapping:["band members","albums","studio albums","compilation albums","live albums","compilations","eps"],patterns:[]},templates:{mapping:["allmusic"],patterns:[]},titles:{mapping:["band","american band","australian band","canadian band","uk band","japanese band","swedish band"],patterns:[]}},Company:{name:"Company",children:{},categories:{mapping:["companies listed on the new york stock exchange","jazz record labels","video game development companies","american record labels","companies listed on nasdaq","video game companies of the united states","companies formerly listed on the london stock exchange","multinational companies headquartered in the united states","companies listed on the tokyo stock exchange","re-established companies","companies based in new york city","defunct video game companies","companies formed by merger","entertainment companies based in california"],patterns:[/companies (established|based) in ./]},descriptions:{patterns:[/(company|subsidary)/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["products"],patterns:[]},templates:{mapping:[],patterns:[/-company-stub$/]},titles:{mapping:["company","newspaper","restaurant","retailer","store"],patterns:[]}},SportsTeam:{name:"SportsTeam",children:{},properties:{coaches:()=>{}},categories:{mapping:["football clubs in england","english football league clubs","southern football league clubs","football clubs in scotland","premier league clubs","national basketball association teams"],patterns:[/football clubs in ./,/(basketball|hockey|baseball|football) teams (in|established) ./]},descriptions:{patterns:[/(basketball|hockey|soccer|football|sports) team/]},infoboxes:{mapping:["basketball_club","pro_hockey_team","college_ice_hockey_team","college_soccer_team","cricket_team","football_club","non_test_cricket_team","non-profit","rugby_league_club","rugby_league_representative_team","rugby_team","baseball team","football club","rugby team","national football team","basketball club","hockey team","rugby league club","football club infobox","cricket team"],patterns:[]},sections:{mapping:["coaching staff","head coaches","team records","current squad"],patterns:[]},templates:{mapping:[],patterns:[/-sport-team-stub$/]},titles:{mapping:[],patterns:[]}},PoliticalParty:{name:"PoliticalParty",children:{},categories:{mapping:["social democratic parties"],patterns:[]},descriptions:{patterns:[/political party/]},infoboxes:{mapping:["political_party","political party"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["political party"],patterns:[]}}},properties:{leaders:()=>{},members:()=>{}},categories:{mapping:["japanese brands","american jazz composers","scouting in the united states","car brands","government-owned airlines","baptist denominations in north america","baptist denominations established in the 20th century","land-grant universities and colleges","organizations based in washington, d.c.","video game publishers","defunct motor vehicle manufacturers of the united states","alternative rock groups from california"],patterns:[/(organi[sz]ations|publications) based in /,/(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,/(secondary|primary) schools/,/military units/,/magazines/,/organi[sz]ation stubs$/]},descriptions:{patterns:[/(charity|organization|ngo)/]},infoboxes:{mapping:["airline","broadcasting_network","cbb_team","choir","college","company","dot-com_company","film_awards","film_festival","football_league","gaa_club","government_agency","government_cabinet","journal","laboratory","law_enforcement_agency","legislature","library","military_unit","national_military","ncaa_football_school","newspaper","nobility","organization","public_transit","publisher","radio_station","rail_line","rail_service","record_label","school_district","sport_governing_body","sports_league","television_channel","tv_channel","u.s._cabinet","u.s._legislation","uk_legislation","university","v8_supercar_team","former monarchy","criminal organization","radio station","military unit","government agency","rail line","record label","school district","tv channel","sports league","football league","worldscouting","sg rail","law enforcement agency","uk legislation","public transit","us university ranking","television channel","bus transit","union","broadcasting network","christian denomination","film awards","gaa club","fraternity","rail","rail service","national military","sport governing body","political party/seats","athletic conference","film festival","dot-com company","india university ranking","uk university rankings","government cabinet"],patterns:[]},sections:{mapping:["founding","founders","members","athletics","notable alumni","academics","campus","organization","student life","rankings","fleet","research","formation","operations","players","alumni","former members","presidents","membership","current members"],patterns:[]},templates:{mapping:["composition bar","fs player","y","n","rws"],patterns:[]},titles:{mapping:["group","journal","am","fm","wehrmacht","tv channel","british band","organization","airline","publisher","brand","record label","union army","defunct","tv network","department store"],patterns:[]}},Event:{name:"Event",properties:{dates:()=>{},places:()=>{}},children:{Disaster:{name:"Disaster",children:{},properties:{casualties:()=>{}},categories:{mapping:["retired atlantic hurricanes"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["aircraft_accident","airliner_accident","earthquake","hurricane","pandemic","airliner accident"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Election:{name:"Election",children:{},categories:{mapping:["presidential elections in ireland"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["election"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["election summary party with leaders"],patterns:[/-election-stub$/]},titles:{mapping:[],patterns:[]}},MilitaryConflict:{name:"MilitaryConflict",children:{},categories:{mapping:["wars involving the united kingdom","proxy wars","new zealand wars","battles between england and scotland","conflicts in 1943","last stand battles","battles and conflicts without fatalities","guerrilla wars","20th-century conflicts","20th-century revolutions","sieges involving japan","revolution-based civil wars"],patterns:[/conflicts (in|of) [0-9]{4}/,/(wars|battles|conflicts) (involving|of|in) ./]},descriptions:{patterns:[]},infoboxes:{mapping:["military_conflict","military conflict","civil conflict","civilian attack"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},SportsEvent:{name:"SportsEvent",children:{},properties:{winners:()=>{}},categories:{mapping:["1904 summer olympics events","1900 summer olympics events","2002 winter olympics events"],patterns:[/. league seasons$/,/^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/]},descriptions:{patterns:[]},infoboxes:{mapping:["athletics_championships","badminton_event","boxingmatch","fila_wrestling_event","football_club_season","football_country_season","football_league_season","football_match","football_tournament_season","little_league_world_series","nba_season","ncaa_baseball_conference_tournament","ncaa_football_single_game","ncaa_team_season","nfl_season","nfl_single_game","sports_season","tennis_event","tennis_grand_slam_events","wrestling_event","football tournament","olympic event","international football competition","wrestling event","sports season","cycling race report","ncaa team season","cricket tournament","football match","world series expanded","mma event","nfl season","nfl draft","athletics championships","football club season","canadian football game","australian rules football season","football tournament season","international ice hockey competition","cricket tour"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},categories:{mapping:["years in literature","years in music","years in film","united states supreme court cases","leap years in the gregorian calendar","governor general's awards","eurovision song contest by year","grammy awards ceremonies","united kingdom in the eurovision song contest","manned soyuz missions","american civil liberties union litigation","may","october","missions to the moon","world war ii british commando raids","july","december","september","november","january","june","august","april","february","march","conflicts in 1944","missions to mars","luna program","conflicts in 1942","special air service","soft landings on the moon","may observances","first events","recent years","elections not won by the popular vote winner","conflicts in 1864","1862 in the american civil war","new york (state) in the american revolution","march observances","public holidays in the united states","1944 in france","december observances","20th century american trials","african-american civil rights movement (1954–68)","october observances","spring holidays","years in aviation","national days","summer holidays","apollo program"],patterns:[/^(19|20)[0-9]{2} in /,/^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["beauty_pageant","civil_conflict","concert_tour","court_case","event","historical_era","holiday","horseraces","individual_snooker_tournament","legislative_term","music_festival","nfl_draft","pba_draft","reality_music_competition","recurring_event","song_contest","summit","grand prix race report","recurring event","music festival","football league season","scotus case","court case","concert tour","international labour organization convention","song contest","australian year","individual darts tournament","beauty pageant","historical event","grand prix motorcycle race report","international handball competition","coa case","individual snooker tournament","esc national year","indy500","national political convention","referendum"],patterns:[]},sections:{mapping:["aftermath","births","deaths","battle","results","prelude","may","june","march","december","october","july","august","april","november","february","september","january","incumbents","casualties","july to december","january to june","medal table","campaign"],patterns:[]},templates:{mapping:["esc","year nav","year dab","goal","flagiocmedalist","m1 year in topic","year nav topic5","bc year in topic","flagiocathlete","year article header"],patterns:[]},titles:{mapping:["festival","25 m","world war ii","conmebol","music festival","world war i"],patterns:[/ \((19|20)[0-9]{2}\)$/]}},Creation:{name:"Creation",children:{CreativeWork:{name:"CreativeWork",children:{Album:{name:"Album",children:{},categories:{mapping:["albums recorded at abbey road studios"],patterns:[/[0-9]{4}.*? albums/,/^albums /,/ albums$/,/album stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:["album"],patterns:[]},sections:{mapping:["track listing"],patterns:[]},templates:{mapping:["track listing","tracklist"],patterns:[/-album-stub$/]},titles:{mapping:["album"],patterns:[]}},Book:{name:"Book",children:{},categories:{mapping:[],patterns:[/(film|novel) stubs$/,/[0-9]{4}.*? (poems|novels)/,/ (poems|novels)$/]},descriptions:{patterns:[]},infoboxes:{mapping:["book"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-novel-stub$/]},titles:{mapping:["book","novel"],patterns:[]}},Film:{name:"Film",children:{},categories:{mapping:[],patterns:[/[0-9]{4}.*? films/,/ films$/,/^films /]},descriptions:{patterns:[/[0-9]{4} film/]},infoboxes:{mapping:["film"],patterns:[]},sections:{mapping:["cast"],patterns:[]},templates:{mapping:["imdb title","film date","rotten-tomatoes"],patterns:[/-film-stub$/]},titles:{mapping:["movie"],patterns:[/ \([0-9]{4} film\)$/]}},TVShow:{name:"TVShow",children:{},properties:{seasons:()=>{}},categories:{mapping:[],patterns:[/television series/]},descriptions:{patterns:[/television series/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["episode list"],patterns:[]},titles:{mapping:["tv series","game show","u.s. tv series","uk tv series","australian tv series","u.s. game show"],patterns:[]}},Play:{name:"Play",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["play"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-play-stub$/]},titles:{mapping:["play"],patterns:[]}},Song:{name:"Song",children:{},categories:{mapping:[],patterns:[/[0-9]{4}.*? songs/,/^songs /,/ songs$/,/song stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["song"],patterns:[]}},VideoGame:{name:"VideoGame",children:{},properties:{platforms:()=>{}},categories:{mapping:["dos games","virtual console games","mac os games","amiga games","arcade games","commodore 64 games","nintendo entertainment system games","playstation (console) games","ios games","super nintendo entertainment system games","video game sequels","game boy advance games","first-person shooters","playstation network games","linux games","atari st games","playstation 2 games","game boy games","zx spectrum games","mario universe games","multiplayer online games","mobile games","android (operating system) games","platform games","xbox 360 live arcade games","sega genesis games"],patterns:[/video games/]},descriptions:{patterns:[]},infoboxes:{mapping:["video game"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["video game"],patterns:[]}}},properties:{genre:()=>{}},categories:{mapping:["operas","american science fiction novels","broadway musicals","debut novels","the twilight zone (1959 tv series) episodes","united states national recording registry recordings","macos games","virtual console games for wii u","american monthly magazines","broadway plays","interactive achievement award winners","doubleday (publisher) books","19th-century classical composers","film soundtracks","universal deluxe editions","best picture academy award winners","shōnen manga","west end musicals","sequel novels","dystopian novels","american comic strips","american road movies","chemical elements","amstrad cpc games","neo-noir","fiction with unreliable narrators","best drama picture golden globe winners","adventure anime and manga"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["artwork","book_series","broadcast","comic_book_title","comic_strip","doctor_who_episode","hollywood_cartoon","magazine","musical","musical_composition","opera","painting","radio_show","song","song_contest_entry","television_episode","television_season","treaty","video_game","anthem","television episode","comic book title","song contest entry","short story","hollywood cartoon","radio show","simpsons episode","musical composition","book series","comic strip","television season","comics organization","doctor who episode","animanga/other","graphic novel","rpg","big finish","vg series","name module","comics story arc","video game series","futurama episode","comics character and title","comics meta series","webcomic","the goodies episode","audio drama","sw comics","media franchise","folk tale"],patterns:[]},sections:{mapping:["plot","reception","charts","release","plot summary","gameplay","characters","box office","accolades","soundtrack","adaptations","synopsis","home media","weekly charts","themes","publication history","filming","year-end charts","casting","release and reception","commercial performance","composition","album","setting","chart positions","release history","charts and certifications","sequels","chart performance","sequel","recordings","story","editions","in other media"],patterns:[]},templates:{mapping:["rating","certification table entry","albumchart","music","album ratings","album chart","singles","isbnt","singlechart","tcmdb title","mojo title","based on","amg movie","duration"],patterns:[/-song-stub$/]},titles:{mapping:["season 2","season 3","season 4","season 5","the twilight zone","ballet","magazine","miniseries","music","opera","painting","series","single","song","soundtrack","ep","comics","musical","manga","star trek: the next generation","star trek: deep space nine","buffy the vampire slayer","angel","the outer limits","star trek: voyager","short story","seinfeld","star trek: enterprise","poem","tv","uk series","doctor who","david bowie song","caravaggio","the beach boys song","video","audio drama","babylon 5","madonna song"],patterns:[/ \((.*? )song\)$/]}},MedicalCondition:{name:"MedicalCondition",children:{},properties:{causes:()=>{},treatments:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["medical condition (new)","medical condition","disease"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Organism:{name:"Organism",children:{},properties:{},categories:{mapping:["taxa named by carl linnaeus","ornamental trees","birds by common name","living fossils","taxa named by john edward gray","phelsuma","multituberculates","angiosperm orders","cimolodonts","urban animals","flowers","geckos","herbs","spices","skinks","cretaceous mammals","commercial fish","paleocene mammals","bird families","edible nuts and seeds","invasive plant species","leaf vegetables","root vegetables","corvus (genus)","insects in culture","ducks","agamidae","edge species","tropical fruit","pinus","tropical agriculture","indian spices","paleocene genus extinctions","epiphytic orchids","crops","fruits originating in asia","calidris","ptilodontoids","plants and pollinators","mammal families","marine edible fish","taxa named by leopold fitzinger","setophaga","shorebirds","berries","megafauna","animal dance","animal phyla","american inventions","entheogens","crops originating from the americas","non-timber forest products","geese"],patterns:[/(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,/ first appearances/,/ . described in [0-9]{4}/,/. (phyla|genera)$/,/. taxonomic families$/,/plants used in ./,/ (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/]},descriptions:{patterns:[]},infoboxes:{mapping:["speciesbox","automatic taxobox","dogbreed","dog breed","cat breed","grape variety","taxobox","subspeciesbox","mycomorphbox","paraphyletic group","nutritional value","infraspeciesbox","horse","haplogroup","bird","bird/population","medical resources","nc name","pig breed","botanical product","cattle breed","horse breed","poultry breed"],patterns:[]},sections:{mapping:["habitat","morphology","phylogeny","distribution and diversity","distribution and habitat","reproduction and development","taxonomy and phylogeny"],patterns:[]},templates:{mapping:["taxonbar","wikispecies","animalia","chordata","cnidaria","porifera","epicaridea","mammals","phlyctaeniidae","carnivora","clade","life on earth","orders of insects","coleoptera","insects in culture","living things in culture","eukaryota classification","iucn status","extinct","fossil range","internetbirdcollection","vireo","angle bracket","wikispecies-inline","iucn map","xeno-canto species","avibase","cladex","birdlife","fossilrange"],patterns:[]},titles:{mapping:["plant","genus","fish","bird"],patterns:[]}},Product:{name:"Product",children:{},properties:{},categories:{mapping:[],patterns:[/products introduced in ./,/musical instruments/]},descriptions:{patterns:[]},infoboxes:{mapping:["automobile","beverage","cpu","electric_vehicle","gpu","mobile_phone","motorcycle","synthesizer","television","card game","computer","laboratory equipment"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["computer game","candy","board game","card game","automobile"],patterns:[]}}},properties:{creators:()=>{},date:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}}};const a=function(e,t){return e.name?e.id=t+"/"+e.name:e.id="",e.children&&Object.keys(e.children).forEach((t=>{a(e.children[t],e.id)})),e};e=a(e,"");let t={categories:{},descriptions:{},infoboxes:{},sections:{},templates:{},titles:{}},i={categories:[],descriptions:[],infoboxes:[],sections:[],templates:[],titles:[]};const s=function(e){e.id&&(e.categories.mapping.forEach((a=>{t.categories[a]=e.id})),e.descriptions.mapping=e.descriptions.mapping||[],e.descriptions.mapping.forEach((a=>{t.descriptions[a]=e.id})),e.infoboxes.mapping.forEach((a=>{t.infoboxes[a]=e.id})),e.sections.mapping.forEach((a=>{t.sections[a]=e.id})),e.templates.mapping.forEach((a=>{t.templates[a]=e.id})),e.titles.mapping.forEach((a=>{t.titles[a]=e.id})),e.categories.patterns.forEach((a=>{i.categories.push([a,e.id])})),e.descriptions.patterns.forEach((a=>{i.descriptions.push([a,e.id])})),e.infoboxes.patterns.forEach((a=>{i.infoboxes.push([a,e.id])})),e.sections.patterns.forEach((a=>{i.sections.push([a,e.id])})),e.templates.patterns.forEach((a=>{i.templates.push([a,e.id])})),e.titles.patterns.forEach((a=>{i.titles.push([a,e.id])}))),e.children&&Object.keys(e.children).forEach((a=>{s(e.children[a])}))};s(e);var n={patterns:i,mappings:t};const{mappings:r}=n;var o=function(e){let a=e.infoboxes(),t=[];for(let e=0;e(e=(e=(e=e.toLowerCase()).replace(/^(category|categorie|kategori): ?/i,"")).replace(/_/g," ")).trim()));for(let e=0;ee.json())),t=[];for(let e=0;e{let a=e.title();return a=a.toLowerCase().trim(),a}));for(let e=0;e{a[e]=a[e]||0,a[e]+=1}));let t=Object.keys(a).map((e=>[e,a[e]]));return t=t.sort(((e,a)=>e[1]>a[1]?-1:e[1]{e[t].forEach((e=>{a.push(function(e){let a=e.split(/\//);return{root:a[1],child:a[2]}}(e.type))}))}));let t=a.map((e=>e.root)).filter((e=>e)),i=E(t),s=i[0];if(!s)return{detail:e,type:null,score:0};let n=s[0],r=s[1]/a.length;1===s[1]&&(r*=.75),2===s[1]&&(r*=.85),3===s[1]&&(r*=.95),i[1]&&(i[1][1]===i[0][1]?r*=.5:r*=.8);let o=a.filter((e=>e.root===n&&e.child)).map((e=>e.child)),p=E(o);s=p[0];let l=n;return s&&(l=`${n}/${s[0]}`,p.length>1&&(r*=.7),1===s[1]&&(r*=.8)),{root:n,type:l,score:r,details:e}};return function(e){e.Doc.prototype.classify=function(e){let a=this,t={};return P(a)||(t.infobox=o(a),t.template=d(a),t.section=h(a),t.title=_(a),t.description=k(a),t.category=m(a)),C(t)}}})); diff --git a/plugins/classify/builds/wtf-plugin-classify.mjs b/plugins/classify/builds/wtf-plugin-classify.mjs index 31a8d070..ae7701d5 100644 --- a/plugins/classify/builds/wtf-plugin-classify.mjs +++ b/plugins/classify/builds/wtf-plugin-classify.mjs @@ -1,4 +1,4 @@ -/* wtf-plugin-classify 0.2.0 MIT */ +/* wtf-plugin-classify 1.0.0 MIT */ var AmericanFootballPlayer = { name: 'AmericanFootballPlayer', // @@ -1580,7 +1580,7 @@ const setId = function (root, id) { schema = setId(schema, ''); var schema_1 = schema; -let mappings = { +let mappings$5 = { categories: {}, descriptions: {}, infoboxes: {}, @@ -1588,7 +1588,7 @@ let mappings = { templates: {}, titles: {} }; -let patterns = { +let patterns$4 = { categories: [], descriptions: [], infoboxes: [], @@ -1601,42 +1601,42 @@ const doNode = function (node) { if (node.id) { // collect mappings node.categories.mapping.forEach(str => { - mappings.categories[str] = node.id; + mappings$5.categories[str] = node.id; }); node.descriptions.mapping = node.descriptions.mapping || []; node.descriptions.mapping.forEach(str => { - mappings.descriptions[str] = node.id; + mappings$5.descriptions[str] = node.id; }); node.infoboxes.mapping.forEach(str => { - mappings.infoboxes[str] = node.id; + mappings$5.infoboxes[str] = node.id; }); node.sections.mapping.forEach(str => { - mappings.sections[str] = node.id; + mappings$5.sections[str] = node.id; }); node.templates.mapping.forEach(str => { - mappings.templates[str] = node.id; + mappings$5.templates[str] = node.id; }); node.titles.mapping.forEach(str => { - mappings.titles[str] = node.id; + mappings$5.titles[str] = node.id; }); // collect patterns node.categories.patterns.forEach(reg => { - patterns.categories.push([reg, node.id]); + patterns$4.categories.push([reg, node.id]); }); node.descriptions.patterns.forEach(reg => { - patterns.descriptions.push([reg, node.id]); + patterns$4.descriptions.push([reg, node.id]); }); node.infoboxes.patterns.forEach(reg => { - patterns.infoboxes.push([reg, node.id]); + patterns$4.infoboxes.push([reg, node.id]); }); node.sections.patterns.forEach(reg => { - patterns.sections.push([reg, node.id]); + patterns$4.sections.push([reg, node.id]); }); node.templates.patterns.forEach(reg => { - patterns.templates.push([reg, node.id]); + patterns$4.templates.push([reg, node.id]); }); node.titles.patterns.forEach(reg => { - patterns.titles.push([reg, node.id]); + patterns$4.titles.push([reg, node.id]); }); } @@ -1649,12 +1649,12 @@ const doNode = function (node) { doNode(schema_1); var _dataFns = { - patterns, - mappings + patterns: patterns$4, + mappings: mappings$5 }; const { - mappings: mappings$1 + mappings: mappings$4 } = _dataFns; const byInfobox = function (doc) { @@ -1669,9 +1669,9 @@ const byInfobox = function (doc) { type = type.replace(/ /g, '_'); type = type.trim(); - if (mappings$1.infoboxes.hasOwnProperty(type)) { + if (mappings$4.infoboxes.hasOwnProperty(type)) { found.push({ - type: mappings$1.infoboxes[type], + type: mappings$4.infoboxes[type], reason: type }); } @@ -1697,8 +1697,8 @@ const byPattern = function (str, patterns) { var _byPattern = byPattern; const { - patterns: patterns$1, - mappings: mappings$2 + patterns: patterns$3, + mappings: mappings$3 } = _dataFns; const byCategory = function (doc) { @@ -1715,16 +1715,16 @@ const byCategory = function (doc) { for (let i = 0; i < cats.length; i++) { const category = cats[i]; // try our 1-to-1 mapping - if (mappings$2.categories.hasOwnProperty(category)) { + if (mappings$3.categories.hasOwnProperty(category)) { found.push({ - type: mappings$2.categories[category], + type: mappings$3.categories[category], reason: category }); continue; } // loop through our patterns - let match = _byPattern(category, patterns$1.categories); + let match = _byPattern(category, patterns$3.categories); if (match) { found.push({ @@ -1741,19 +1741,19 @@ var byCategory_1 = byCategory; const { patterns: patterns$2, - mappings: mappings$3 + mappings: mappings$2 } = _dataFns; const byTemplate = function (doc) { - let templates = doc.templates(); + let templates = doc.templates().map(tmpl => tmpl.json()); let found = []; for (let i = 0; i < templates.length; i++) { const title = templates[i].template; - if (mappings$3.templates.hasOwnProperty(title)) { + if (mappings$2.templates.hasOwnProperty(title)) { found.push({ - type: mappings$3.templates[title], + type: mappings$2.templates[title], reason: title }); } else { @@ -1775,7 +1775,7 @@ const byTemplate = function (doc) { var byTemplate_1 = byTemplate; const { - mappings: mappings$4 + mappings: mappings$1 } = _dataFns; const fromSection = function (doc) { @@ -1789,9 +1789,9 @@ const fromSection = function (doc) { for (let i = 0; i < titles.length; i++) { const title = titles[i]; - if (mappings$4.sections.hasOwnProperty(title)) { + if (mappings$1.sections.hasOwnProperty(title)) { found.push({ - type: mappings$4.sections[title], + type: mappings$1.sections[title], reason: title }); } @@ -1803,10 +1803,10 @@ const fromSection = function (doc) { var bySection = fromSection; const { - patterns: patterns$3, - mappings: mappings$5 + patterns: patterns$1, + mappings } = _dataFns; -const paren = /\((.*)\)$/; +const paren$1 = /\((.*)\)$/; const byTitle = function (doc) { let title = doc.title(); @@ -1816,7 +1816,7 @@ const byTitle = function (doc) { } //look at parentheses like 'Tornado (film)' - let m = title.match(paren); + let m = title.match(paren$1); if (!m) { return []; @@ -1827,15 +1827,15 @@ const byTitle = function (doc) { inside = inside.replace(/_/g, ' '); inside = inside.trim(); //look at known parentheses - if (mappings$5.titles.hasOwnProperty(inside)) { + if (mappings.titles.hasOwnProperty(inside)) { return [{ - type: mappings$5.titles[inside], + type: mappings.titles[inside], reason: inside }]; } // look at regex - let match = _byPattern(title, patterns$3.titles); + let match = _byPattern(title, patterns$1.titles); if (match) { return [{ @@ -1850,7 +1850,7 @@ const byTitle = function (doc) { var byTitle_1 = byTitle; const { - patterns: patterns$4 + patterns } = _dataFns; const byDescription = function (doc) { @@ -1860,7 +1860,7 @@ const byDescription = function (doc) { let desc = tmpl.description || ''; desc = desc.toLowerCase(); // loop through our patterns - let match = _byPattern(desc, patterns$4.descriptions); + let match = _byPattern(desc, patterns.descriptions); if (match) { return [{ @@ -1881,14 +1881,14 @@ const skip = { name: true, 'given name': true }; -const paren$1 = /\((.*)\)$/; +const paren = /\((.*)\)$/; const listOf = /^list of ./; const disambig = /\(disambiguation\)/; const skipPage = function (doc) { let title = doc.title() || ''; //look at parentheses like 'Tornado (film)' - let m = title.match(paren$1); + let m = title.match(paren); if (!m) { return null; diff --git a/plugins/classify/package-lock.json b/plugins/classify/package-lock.json index 4900dcda..d152df73 100644 --- a/plugins/classify/package-lock.json +++ b/plugins/classify/package-lock.json @@ -1,17 +1,17 @@ { "name": "wtf-plugin-classify", - "version": "0.2.0", + "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wtf-plugin-classify", - "version": "0.2.0", + "version": "1.0.0", "license": "MIT", "devDependencies": { - "@babel/core": "7.12.3", - "@babel/preset-env": "7.12.1", - "rollup": "2.33.1", + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "rollup": "2.44.0", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", @@ -19,620 +19,270 @@ "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", "tap-dancer": "0.3.1", - "tape": "5.0.1" + "tape": "5.2.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.12.13" } }, "node_modules/@babel/compat-data": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", - "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", + "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", "dev": true }, "node_modules/@babel/core": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", - "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.1", - "@babel/parser": "^7.12.3", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", + "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-module-transforms": "^7.13.14", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", + "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/core/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/generator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", - "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.5", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, - "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/generator/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" - } - }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", - "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", + "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.12.5", - "@babel/helper-validator-option": "^7.12.1", + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", - "semver": "^5.5.0" + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", - "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/helper-define-map/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-define-map/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "node_modules/@babel/helper-define-map/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.13.0" } }, - "node_modules/@babel/helper-explode-assignable-expression/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-explode-assignable-expression/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-function-name/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-function-name/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-function-name/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dev": true, - "dependencies": { - "@babel/types": "^7.10.4" - } - }, - "node_modules/@babel/helper-get-function-arity/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-get-function-arity/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-get-function-arity/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.10.4" - } - }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "node_modules/@babel/helper-hoist-variables/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", - "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.1" - } - }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.13.12" } }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", "dev": true, "dependencies": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.12" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", + "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", "dev": true, "dependencies": { - "@babel/types": "^7.12.5" + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "node_modules/@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/helper-regex/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", "dev": true }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-replace-supers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", - "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" } }, - "node_modules/@babel/helper-replace-supers/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.13.12" } }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", @@ -642,163 +292,65 @@ "@babel/types": "^7.12.1" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", "dev": true, "dependencies": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-split-export-declaration/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", - "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", "dev": true }, "node_modules/@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "node_modules/@babel/helpers/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, - "node_modules/@babel/highlight/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, "node_modules/@babel/parser": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", - "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", + "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -807,140 +359,195 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", - "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", + "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", - "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", - "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { @@ -950,15 +557,21 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-dynamic-import": { @@ -968,6 +581,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-export-namespace-from": { @@ -977,6 +593,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { @@ -986,6 +605,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { @@ -995,6 +617,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { @@ -1004,6 +629,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { @@ -1013,6 +641,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { @@ -1022,6 +653,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { @@ -1031,6 +665,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { @@ -1040,475 +677,511 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.5" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", - "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", - "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", - "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", - "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.12.1", - "@babel/helper-compilation-targets": "^7.12.1", - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.1", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.1", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", + "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.12", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.13.8", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.1", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.1", - "core-js-compat": "^3.6.2", - "semver": "^5.5.0" - } - }, - "node_modules/@babel/preset-env/node_modules/@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.5" - } - }, - "node_modules/@babel/preset-env/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/preset-env/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.13.0", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.13.12", + "babel-plugin-polyfill-corejs2": "^0.1.4", + "babel-plugin-polyfill-corejs3": "^0.1.3", + "babel-plugin-polyfill-regenerator": "^0.1.2", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/preset-modules": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", @@ -1523,96 +1196,49 @@ } }, "node_modules/@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" } }, "node_modules/@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "node_modules/@babel/template/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, - "node_modules/@babel/template/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/traverse": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", - "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", + "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.5", - "@babel/types": "^7.12.5", + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.13", + "@babel/types": "^7.13.13", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "globals": "^11.1.0" } }, - "node_modules/@babel/traverse/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -1665,6 +1291,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/babel-plugin-dynamic-import-node": { @@ -1676,6 +1305,45 @@ "object.assign": "^4.1.0" } }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", + "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.0", + "@babel/helper-define-polyfill-provider": "^0.1.5", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", + "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1693,22 +1361,26 @@ } }, "node_modules/browserslist": { - "version": "4.14.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", - "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001157", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.591", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.66" + "node-releases": "^1.1.70" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer-from": { @@ -1733,19 +1405,22 @@ } }, "node_modules/call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "dependencies": { "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001157", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", - "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", + "version": "1.0.30001207", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz", + "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==", "dev": true }, "node_modules/chalk": { @@ -1778,9 +1453,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "node_modules/commander": { @@ -1805,13 +1480,17 @@ } }, "node_modules/core-js-compat": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", - "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", + "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", "dev": true, "dependencies": { - "browserslist": "^4.14.6", + "browserslist": "^4.16.3", "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat/node_modules/semver": { @@ -1842,25 +1521,29 @@ } }, "node_modules/deep-equal": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", - "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "dependencies": { - "es-abstract": "^1.18.0-next.1", - "es-get-iterator": "^1.1.0", + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", "is-arguments": "^1.0.4", "is-date-object": "^1.0.2", "is-regex": "^1.1.1", "isarray": "^2.0.5", - "object-is": "^1.1.3", + "object-is": "^1.1.4", "object-keys": "^1.1.1", - "object.assign": "^4.1.1", + "object.assign": "^4.1.2", "regexp.prototype.flags": "^1.3.0", "side-channel": "^1.0.3", "which-boxed-primitive": "^1.0.1", "which-collection": "^1.0.1", "which-typed-array": "^1.1.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/deep-equal/node_modules/isarray": { @@ -1900,48 +1583,58 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.594", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", - "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", + "version": "1.3.707", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz", + "integrity": "sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "dependencies": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-get-iterator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", - "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.1", + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", "is-string": "^1.0.5", "isarray": "^2.0.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-get-iterator/node_modules/isarray": { @@ -1962,6 +1655,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/escalade": { @@ -2019,10 +1715,11 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -2047,14 +1744,17 @@ } }, "node_modules/get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/glob": { @@ -2095,6 +1795,15 @@ "node": ">= 0.4.0" } }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -2105,12 +1814,15 @@ } }, "node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/inflight": { @@ -2130,45 +1842,66 @@ "dev": true }, "node_modules/is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", - "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-boolean-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", - "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-core-module": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", - "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, "dependencies": { "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-date-object": { @@ -2178,13 +1911,19 @@ "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-module": { "version": "1.0.0", @@ -2193,12 +1932,15 @@ "dev": true }, "node_modules/is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-number-object": { @@ -2208,6 +1950,9 @@ "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-reference": { @@ -2220,22 +1965,29 @@ } }, "node_modules/is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "dependencies": { + "call-bind": "^1.0.2", "has-symbols": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-string": { "version": "1.0.5", @@ -2244,6 +1996,9 @@ "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-symbol": { @@ -2256,56 +2011,47 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typed-array": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", - "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.0", - "es-abstract": "^1.17.4", + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", "foreach": "^2.0.5", "has-symbols": "^1.0.1" }, "engines": { "node": ">= 0.4" - } - }, - "node_modules/is-typed-array/node_modules/es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/isarray": { "version": "1.0.0", @@ -2382,9 +2128,15 @@ } }, "node_modules/lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, "node_modules/magic-string": { @@ -2427,28 +2179,34 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.66", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", - "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "node_modules/object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/object-is": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", - "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { @@ -2473,6 +2231,9 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/once": { @@ -2569,38 +2330,19 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, "engines": { "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexpu-core": { @@ -2627,9 +2369,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2666,9 +2408,9 @@ } }, "node_modules/rollup": { - "version": "2.33.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", - "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", + "version": "2.44.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", + "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2677,7 +2419,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.1.2" + "fsevents": "~2.3.1" } }, "node_modules/rollup-plugin-babel": { @@ -2759,12 +2501,12 @@ "dev": true }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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" + "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { @@ -2777,13 +2519,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", - "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "es-abstract": "^1.18.0-next.0", - "object-inspect": "^1.8.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/source-map": { @@ -2842,36 +2588,46 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", - "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", + "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", "dev": true, "dependencies": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.0" + "es-abstract": "^1.18.0-next.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", - "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", - "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/supports-color": { @@ -2979,27 +2735,27 @@ } }, "node_modules/tape": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", - "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", "dev": true, "dependencies": { - "deep-equal": "^2.0.3", + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "function-bind": "^1.1.1", "glob": "^7.1.6", "has": "^1.0.3", "inherits": "^2.0.4", - "is-regex": "^1.0.5", + "is-regex": "^1.1.2", "minimist": "^1.2.5", - "object-inspect": "^1.7.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "resolve": "^1.17.0", + "object-inspect": "^1.9.0", + "object-is": "^1.1.5", + "object.assign": "^4.1.2", + "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.1", + "string.prototype.trim": "^1.2.4", "through": "^2.3.8" }, "bin": { @@ -3007,13 +2763,16 @@ } }, "node_modules/tape/node_modules/resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", "dev": true, "dependencies": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/terser": { @@ -3063,6 +2822,21 @@ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", "dev": true }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -3110,16 +2884,19 @@ "dev": true }, "node_modules/which-boxed-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", - "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "dependencies": { - "is-bigint": "^1.0.0", - "is-boolean-object": "^1.0.0", - "is-number-object": "^1.0.3", - "is-string": "^1.0.4", - "is-symbol": "^1.0.2" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-collection": { @@ -3132,16 +2909,20 @@ "is-set": "^2.0.1", "is-weakmap": "^2.0.1", "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", - "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.2", - "es-abstract": "^1.17.5", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", "foreach": "^2.0.5", "function-bind": "^1.1.1", "has-symbols": "^1.0.1", @@ -3149,28 +2930,9 @@ }, "engines": { "node": ">= 0.4" - } - }, - "node_modules/which-typed-array/node_modules/es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/wrappy": { @@ -3194,640 +2956,242 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.12.13" } }, "@babel/compat-data": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", - "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", + "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", "dev": true }, "@babel/core": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", - "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.1", - "@babel/parser": "^7.12.3", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", + "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-module-transforms": "^7.13.14", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", + "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } } }, "@babel/generator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", - "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", "dev": true, "requires": { - "@babel/types": "^7.12.5", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } } }, "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "dev": true, "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/types": "^7.12.13" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-compilation-targets": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", - "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", + "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.12.5", - "@babel/helper-validator-option": "^7.12.1", + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", - "semver": "^5.5.0" + "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", - "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" } }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", "dev": true, "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/types": "^7.12.13" } }, "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", "dev": true, "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", - "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/types": "^7.13.12" } }, "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.13.12" } }, "@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", + "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14" } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/types": "^7.12.13" } }, "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", "dev": true }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - }, - "dependencies": { - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } - } - }, "@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-replace-supers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", - "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" } }, "@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/types": "^7.13.12" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -3837,308 +3201,213 @@ "dev": true, "requires": { "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } } }, "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", "dev": true, "requires": { - "@babel/types": "^7.11.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/types": "^7.12.13" } }, "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", - "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } - } - }, - "@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helpers": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - } } }, "@babel/parser": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", - "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", + "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", "dev": true }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + } + }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", - "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", + "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", - "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", - "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -4151,12 +3420,12 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-dynamic-import": { @@ -4241,476 +3510,401 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", - "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", - "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", - "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/preset-env": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", - "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.12.1", - "@babel/helper-compilation-targets": "^7.12.1", - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.1", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.1", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", + "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.12", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.13.8", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.1", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.1", - "core-js-compat": "^3.6.2", - "semver": "^5.5.0" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.13.0", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.13.12", + "babel-plugin-polyfill-corejs2": "^0.1.4", + "babel-plugin-polyfill-corejs3": "^0.1.3", + "babel-plugin-polyfill-regenerator": "^0.1.2", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" } }, "@babel/preset-modules": { @@ -4727,100 +3921,49 @@ } }, "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/traverse": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", - "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", + "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.5", - "@babel/types": "^7.12.5", + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.13", + "@babel/types": "^7.13.13", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - } + "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -4878,6 +4021,36 @@ "object.assign": "^4.1.0" } }, + "babel-plugin-polyfill-corejs2": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", + "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.0", + "@babel/helper-define-polyfill-provider": "^0.1.5", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", + "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -4895,16 +4068,16 @@ } }, "browserslist": { - "version": "4.14.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", - "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001157", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.591", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.66" + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -4926,19 +4099,19 @@ "dev": true }, "call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "requires": { "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" + "get-intrinsic": "^1.0.2" } }, "caniuse-lite": { - "version": "1.0.30001157", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", - "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", + "version": "1.0.30001207", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz", + "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==", "dev": true }, "chalk": { @@ -4968,9 +4141,9 @@ "dev": true }, "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "commander": { @@ -4995,12 +4168,12 @@ } }, "core-js-compat": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", - "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", + "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", "dev": true, "requires": { - "browserslist": "^4.14.6", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -5028,20 +4201,21 @@ } }, "deep-equal": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.4.tgz", - "integrity": "sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { - "es-abstract": "^1.18.0-next.1", - "es-get-iterator": "^1.1.0", + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", "is-arguments": "^1.0.4", "is-date-object": "^1.0.2", "is-regex": "^1.1.1", "isarray": "^2.0.5", - "object-is": "^1.1.3", + "object-is": "^1.1.4", "object-keys": "^1.1.1", - "object.assign": "^4.1.1", + "object.assign": "^4.1.2", "regexp.prototype.flags": "^1.3.0", "side-channel": "^1.0.3", "which-boxed-primitive": "^1.0.1", @@ -5082,43 +4256,47 @@ } }, "electron-to-chromium": { - "version": "1.3.594", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.594.tgz", - "integrity": "sha512-mEax1P0CcoZJtXQU7OA0dO5nHiAQWw8gRGWKhnUyPA9bJW0B/JGiaQB+vtK66Ovm6U9qPxe2iXbO1L+f4jJAiw==", + "version": "1.3.707", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz", + "integrity": "sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA==", "dev": true }, "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" } }, "es-get-iterator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", - "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.1", + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", "is-string": "^1.0.5", "isarray": "^2.0.5" }, @@ -5188,9 +4366,9 @@ "dev": true }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -5207,9 +4385,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -5246,6 +4424,12 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -5253,9 +4437,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, "inflight": { @@ -5275,33 +4459,39 @@ "dev": true }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", - "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", "dev": true }, "is-boolean-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", - "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true }, "is-core-module": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", - "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -5314,9 +4504,9 @@ "dev": true }, "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, "is-module": { @@ -5326,9 +4516,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true }, "is-number-object": { @@ -5347,18 +4537,19 @@ } }, "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { + "call-bind": "^1.0.2", "has-symbols": "^1.0.1" } }, "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, "is-string": { @@ -5377,36 +4568,16 @@ } }, "is-typed-array": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", - "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.0", - "es-abstract": "^1.17.4", + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", "foreach": "^2.0.5", "has-symbols": "^1.0.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } } }, "is-weakmap": { @@ -5477,9 +4648,15 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, "magic-string": { @@ -5519,25 +4696,25 @@ "dev": true }, "node-releases": { - "version": "1.1.66", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", - "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true }, "object-is": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", - "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -5646,34 +4823,13 @@ } }, "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "regexpu-core": { @@ -5697,9 +4853,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -5732,12 +4888,12 @@ } }, "rollup": { - "version": "2.33.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", - "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", + "version": "2.44.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", + "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", "dev": true, "requires": { - "fsevents": "~2.1.2" + "fsevents": "~2.3.1" } }, "rollup-plugin-babel": { @@ -5819,9 +4975,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "serialize-javascript": { @@ -5834,13 +4990,14 @@ } }, "side-channel": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", - "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { - "es-abstract": "^1.18.0-next.0", - "object-inspect": "^1.8.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "source-map": { @@ -5892,33 +5049,34 @@ } }, "string.prototype.trim": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", - "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", + "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.0" + "es-abstract": "^1.18.0-next.2" } }, "string.prototype.trimend": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", - "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", - "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "supports-color": { @@ -6004,37 +5162,37 @@ } }, "tape": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", - "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", "dev": true, "requires": { - "deep-equal": "^2.0.3", + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "function-bind": "^1.1.1", "glob": "^7.1.6", "has": "^1.0.3", "inherits": "^2.0.4", - "is-regex": "^1.0.5", + "is-regex": "^1.1.2", "minimist": "^1.2.5", - "object-inspect": "^1.7.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "resolve": "^1.17.0", + "object-inspect": "^1.9.0", + "object-is": "^1.1.5", + "object.assign": "^4.1.2", + "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.1", + "string.prototype.trim": "^1.2.4", "through": "^2.3.8" }, "dependencies": { "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } } @@ -6077,6 +5235,18 @@ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", "dev": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -6112,16 +5282,16 @@ "dev": true }, "which-boxed-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", - "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "requires": { - "is-bigint": "^1.0.0", - "is-boolean-object": "^1.0.0", - "is-number-object": "^1.0.3", - "is-string": "^1.0.4", - "is-symbol": "^1.0.2" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" } }, "which-collection": { @@ -6137,38 +5307,18 @@ } }, "which-typed-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", - "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", "dev": true, "requires": { "available-typed-arrays": "^1.0.2", - "es-abstract": "^1.17.5", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", "foreach": "^2.0.5", "function-bind": "^1.1.1", "has-symbols": "^1.0.1", "is-typed-array": "^1.1.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } } }, "wrappy": { diff --git a/plugins/classify/package.json b/plugins/classify/package.json index 7f744052..de74651d 100644 --- a/plugins/classify/package.json +++ b/plugins/classify/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-classify", "description": "basic classifier for wikipedia articles", - "version": "0.2.0", + "version": "1.0.0", "main": "./builds/wtf-plugin-classify.js", "unpkg": "./builds/wtf-plugin-classify.min.js", "module": "./builds/wtf-plugin-classify.mjs", @@ -32,9 +32,9 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.12.3", - "@babel/preset-env": "7.12.1", - "rollup": "2.33.1", + "@babel/core": "7.13.14", + "@babel/preset-env": "7.13.12", + "rollup": "2.44.0", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-filesize-check": "0.0.1", @@ -42,7 +42,7 @@ "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", "tap-dancer": "0.3.1", - "tape": "5.0.1" + "tape": "5.2.2" }, "license": "MIT" } diff --git a/plugins/disambig/builds/wtf-plugin-disambig.js b/plugins/disambig/builds/wtf-plugin-disambig.js index fc351457..455cde4b 100644 --- a/plugins/disambig/builds/wtf-plugin-disambig.js +++ b/plugins/disambig/builds/wtf-plugin-disambig.js @@ -1,4 +1,4 @@ -/* wtf-plugin-disambig 0.1.0 MIT */ +/* wtf-plugin-disambig 0.0.1 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -8,6 +8,67 @@ // const birthDate = require('./birthDate') const shouldSkip = /see also/; + function escapeRegExp(str) { + str = str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string + + return new RegExp(str, 'i'); + } + + const parseLine = function (line) { + let link = line.link(0); + + if (!link || link.type() !== 'internal') { + return null; + } + + let desc = line.text(); + let reg = escapeRegExp(link.text()); // ensure the link is toward the start of the sentence + + let m = desc.match(reg); + + if (!m || m.index > 20) { + return null; + } + + desc = desc.replace(reg, ''); + desc = desc.replace(/[,:]? ?/, ''); + return { + link: link.page(), + desc: desc + }; + }; // A '''[[berry]]''' is a small, pulpy and often edible fruit in non-technical language. + + + const getMain = function (s) { + let txt = s.text().slice(0, 120); + + if (!txt.match(/ is /)) { + return null; + } + + let link = s.link(0); + + if (!link) { + return null; + } + + let reg = escapeRegExp(link.text()); // ensure the link is toward the start of the sentence + + let m = txt.match(reg); + + if (!m || m.index > 20) { + return null; + } + + return link.page(); + }; + + const getTitle = function (doc) { + let title = doc.title() || ''; + title = title.replace(/ \(disambig|disambiguation\)$/, ''); + return title; + }; + const addMethod = function (models) { // parse a disambiguation page into an array of pages models.Doc.prototype.disambiguation = function () { @@ -21,6 +82,10 @@ if (sec !== null) { sec.remove(); } + + let intro = this.section().sentence(); + let main = getMain(intro); + let pages = []; this.sections().forEach(s => { let title = s.title(); @@ -30,11 +95,20 @@ s.lists().forEach(list => { list.lines().forEach(line => { - console.log(line.link().text()); - }); // console.log(list) + let found = parseLine(line); + + if (found) { + found.section = title; + pages.push(found); + } + }); }); }); - return {}; + return { + text: getTitle(this), + main: main, + pages: pages + }; }; // alias diff --git a/plugins/disambig/builds/wtf-plugin-disambig.js.map b/plugins/disambig/builds/wtf-plugin-disambig.js.map index 49499493..7c2f52c6 100644 --- a/plugins/disambig/builds/wtf-plugin-disambig.js.map +++ b/plugins/disambig/builds/wtf-plugin-disambig.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-disambig.js","sources":["../src/index.js"],"sourcesContent":["// const birthDate = require('./birthDate')\nconst shouldSkip = /see also/\n\nconst addMethod = function (models) {\n // parse a disambiguation page into an array of pages\n models.Doc.prototype.disambiguation = function () {\n if (this.isDisambiguation() !== true) {\n return null\n }\n // remove 'see also'\n let sec = this.section('see also')\n if (sec !== null) {\n sec.remove()\n }\n let pages = []\n this.sections().forEach((s) => {\n let title = s.title()\n if (shouldSkip.test(title) === true) {\n return\n }\n s.lists().forEach((list) => {\n list.lines().forEach((line) => {\n console.log(line.link().text())\n })\n // console.log(list)\n })\n })\n return {}\n }\n // alias\n models.Doc.prototype.disambig = models.Doc.prototype.disambiguation\n}\nmodule.exports = addMethod\n"],"names":["shouldSkip","addMethod","models","Doc","prototype","disambiguation","isDisambiguation","sec","section","remove","sections","forEach","s","title","test","lists","list","lines","line","console","log","link","text","disambig"],"mappings":";;;;;;;EAAA;EACA,MAAMA,UAAU,GAAG,UAAnB;;EAEA,MAAMC,SAAS,GAAG,UAAUC,MAAV,EAAkB;;EAElCA,EAAAA,MAAM,CAACC,GAAP,CAAWC,SAAX,CAAqBC,cAArB,GAAsC,YAAY;EAChD,QAAI,KAAKC,gBAAL,OAA4B,IAAhC,EAAsC;EACpC,aAAO,IAAP;EACD,KAH+C;;;EAKhD,QAAIC,GAAG,GAAG,KAAKC,OAAL,CAAa,UAAb,CAAV;;EACA,QAAID,GAAG,KAAK,IAAZ,EAAkB;EAChBA,MAAAA,GAAG,CAACE,MAAJ;EACD;EAED,SAAKC,QAAL,GAAgBC,OAAhB,CAAyBC,CAAD,IAAO;EAC7B,UAAIC,KAAK,GAAGD,CAAC,CAACC,KAAF,EAAZ;;EACA,UAAIb,UAAU,CAACc,IAAX,CAAgBD,KAAhB,MAA2B,IAA/B,EAAqC;EACnC;EACD;;EACDD,MAAAA,CAAC,CAACG,KAAF,GAAUJ,OAAV,CAAmBK,IAAD,IAAU;EAC1BA,QAAAA,IAAI,CAACC,KAAL,GAAaN,OAAb,CAAsBO,IAAD,IAAU;EAC7BC,UAAAA,OAAO,CAACC,GAAR,CAAYF,IAAI,CAACG,IAAL,GAAYC,IAAZ,EAAZ;EACD,SAFD,EAD0B;EAK3B,OALD;EAMD,KAXD;EAYA,WAAO,EAAP;EACD,GAvBD,CAFkC;;;EA2BlCpB,EAAAA,MAAM,CAACC,GAAP,CAAWC,SAAX,CAAqBmB,QAArB,GAAgCrB,MAAM,CAACC,GAAP,CAAWC,SAAX,CAAqBC,cAArD;EACD,CA5BD;;SA6Bc,GAAGJ;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-disambig.js","sources":["../src/index.js"],"sourcesContent":["// const birthDate = require('./birthDate')\nconst shouldSkip = /see also/\n\nfunction escapeRegExp(str) {\n str = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n return new RegExp(str, 'i')\n}\n\nconst parseLine = function (line) {\n let link = line.link(0)\n if (!link || link.type() !== 'internal') {\n return null\n }\n let desc = line.text()\n let reg = escapeRegExp(link.text())\n // ensure the link is toward the start of the sentence\n let m = desc.match(reg)\n if (!m || m.index > 20) {\n return null\n }\n desc = desc.replace(reg, '')\n desc = desc.replace(/[,:]? ?/, '')\n return {\n link: link.page(),\n desc: desc,\n }\n}\n\n// A '''[[berry]]''' is a small, pulpy and often edible fruit in non-technical language.\nconst getMain = function (s) {\n let txt = s.text().slice(0, 120)\n if (!txt.match(/ is /)) {\n return null\n }\n let link = s.link(0)\n if (!link) {\n return null\n }\n let reg = escapeRegExp(link.text())\n // ensure the link is toward the start of the sentence\n let m = txt.match(reg)\n if (!m || m.index > 20) {\n return null\n }\n return link.page()\n}\n\nconst getTitle = function (doc) {\n let title = doc.title() || ''\n title = title.replace(/ \\(disambig|disambiguation\\)$/, '')\n return title\n}\n\nconst addMethod = function (models) {\n // parse a disambiguation page into an array of pages\n models.Doc.prototype.disambiguation = function () {\n if (this.isDisambiguation() !== true) {\n return null\n }\n // remove 'see also'\n let sec = this.section('see also')\n if (sec !== null) {\n sec.remove()\n }\n let intro = this.section().sentence()\n let main = getMain(intro)\n\n let pages = []\n this.sections().forEach((s) => {\n let title = s.title()\n if (shouldSkip.test(title) === true) {\n return\n }\n s.lists().forEach((list) => {\n list.lines().forEach((line) => {\n let found = parseLine(line)\n if (found) {\n found.section = title\n pages.push(found)\n }\n })\n })\n })\n return {\n text: getTitle(this),\n main: main,\n pages: pages,\n }\n }\n // alias\n models.Doc.prototype.disambig = models.Doc.prototype.disambiguation\n}\nmodule.exports = addMethod\n"],"names":["shouldSkip","escapeRegExp","str","replace","RegExp","parseLine","line","link","type","desc","text","reg","m","match","index","page","getMain","s","txt","slice","getTitle","doc","title","addMethod","models","Doc","prototype","disambiguation","isDisambiguation","sec","section","remove","intro","sentence","main","pages","sections","forEach","test","lists","list","lines","found","push","disambig"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/disambig/builds/wtf-plugin-disambig.min.js b/plugins/disambig/builds/wtf-plugin-disambig.min.js index 3e884c4a..b4d9afbb 100644 --- a/plugins/disambig/builds/wtf-plugin-disambig.min.js +++ b/plugins/disambig/builds/wtf-plugin-disambig.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfdisambig=e()}(this,(function(){"use strict";const t=/see also/;return function(e){e.Doc.prototype.disambiguation=function(){if(!0!==this.isDisambiguation())return null;let e=this.section("see also");return null!==e&&e.remove(),this.sections().forEach((e=>{let o=e.title();!0!==t.test(o)&&e.lists().forEach((t=>{t.lines().forEach((t=>{console.log(t.link().text())}))}))})),{}},e.Doc.prototype.disambig=e.Doc.prototype.disambiguation}})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfdisambig=t()}(this,(function(){"use strict";const e=/see also/;function t(e){return e=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),new RegExp(e,"i")}const i=function(e){let t=e.title()||"";return t=t.replace(/ \(disambig|disambiguation\)$/,""),t};return function(n){n.Doc.prototype.disambiguation=function(){if(!0!==this.isDisambiguation())return null;let n=this.section("see also");null!==n&&n.remove();let l=function(e){let i=e.text().slice(0,120);if(!i.match(/ is /))return null;let n=e.link(0);if(!n)return null;let l=t(n.text()),o=i.match(l);return!o||o.index>20?null:n.page()}(this.section().sentence()),o=[];return this.sections().forEach((i=>{let n=i.title();!0!==e.test(n)&&i.lists().forEach((e=>{e.lines().forEach((e=>{let i=function(e){let i=e.link(0);if(!i||"internal"!==i.type())return null;let n=e.text(),l=t(i.text()),o=n.match(l);return!o||o.index>20?null:(n=n.replace(l,""),n=n.replace(/[,:]? ?/,""),{link:i.page(),desc:n})}(e);i&&(i.section=n,o.push(i))}))}))})),{text:i(this),main:l,pages:o}},n.Doc.prototype.disambig=n.Doc.prototype.disambiguation}})); diff --git a/plugins/disambig/builds/wtf-plugin-disambig.mjs b/plugins/disambig/builds/wtf-plugin-disambig.mjs index 1b310578..3334436b 100644 --- a/plugins/disambig/builds/wtf-plugin-disambig.mjs +++ b/plugins/disambig/builds/wtf-plugin-disambig.mjs @@ -1,7 +1,68 @@ -/* wtf-plugin-disambig 0.1.0 MIT */ +/* wtf-plugin-disambig 0.0.1 MIT */ // const birthDate = require('./birthDate') const shouldSkip = /see also/; +function escapeRegExp(str) { + str = str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string + + return new RegExp(str, 'i'); +} + +const parseLine = function (line) { + let link = line.link(0); + + if (!link || link.type() !== 'internal') { + return null; + } + + let desc = line.text(); + let reg = escapeRegExp(link.text()); // ensure the link is toward the start of the sentence + + let m = desc.match(reg); + + if (!m || m.index > 20) { + return null; + } + + desc = desc.replace(reg, ''); + desc = desc.replace(/[,:]? ?/, ''); + return { + link: link.page(), + desc: desc + }; +}; // A '''[[berry]]''' is a small, pulpy and often edible fruit in non-technical language. + + +const getMain = function (s) { + let txt = s.text().slice(0, 120); + + if (!txt.match(/ is /)) { + return null; + } + + let link = s.link(0); + + if (!link) { + return null; + } + + let reg = escapeRegExp(link.text()); // ensure the link is toward the start of the sentence + + let m = txt.match(reg); + + if (!m || m.index > 20) { + return null; + } + + return link.page(); +}; + +const getTitle = function (doc) { + let title = doc.title() || ''; + title = title.replace(/ \(disambig|disambiguation\)$/, ''); + return title; +}; + const addMethod = function (models) { // parse a disambiguation page into an array of pages models.Doc.prototype.disambiguation = function () { @@ -15,6 +76,10 @@ const addMethod = function (models) { if (sec !== null) { sec.remove(); } + + let intro = this.section().sentence(); + let main = getMain(intro); + let pages = []; this.sections().forEach(s => { let title = s.title(); @@ -24,11 +89,20 @@ const addMethod = function (models) { s.lists().forEach(list => { list.lines().forEach(line => { - console.log(line.link().text()); - }); // console.log(list) + let found = parseLine(line); + + if (found) { + found.section = title; + pages.push(found); + } + }); }); }); - return {}; + return { + text: getTitle(this), + main: main, + pages: pages + }; }; // alias diff --git a/plugins/disambig/package.json b/plugins/disambig/package.json index 74f24c3a..14a0a951 100644 --- a/plugins/disambig/package.json +++ b/plugins/disambig/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-disambig", "description": "disambig-details plugin for wtf_wikipedia", - "version": "0.1.0", + "version": "0.0.1", "main": "./builds/wtf-plugin-disambig.js", "unpkg": "./builds/wtf-plugin-disambig.min.js", "module": "./builds/wtf-plugin-disambig.mjs", diff --git a/plugins/html/tests/_lib.js b/plugins/html/tests/_lib.js index 955cc178..446cf771 100644 --- a/plugins/html/tests/_lib.js +++ b/plugins/html/tests/_lib.js @@ -2,7 +2,7 @@ if (typeof process !== undefined && typeof module !== undefined) { let wtf if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') - wtf = require('../../../types') + wtf = require('../../../') wtf.extend(require(`..`)) } else { wtf = require('../../../src') diff --git a/plugins/image/builds/wtf-plugin-image.js b/plugins/image/builds/wtf-plugin-image.js index 338bb9be..03fbf17f 100644 --- a/plugins/image/builds/wtf-plugin-image.js +++ b/plugins/image/builds/wtf-plugin-image.js @@ -1,4 +1,4 @@ -/* wtf-plugin-image 0.2.0 MIT */ +/* wtf-plugin-image 0.3.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('https')) : typeof define === 'function' && define.amd ? define(['https'], factory) : @@ -1854,14 +1854,31 @@ var imgExists_1 = imgExists; // is there a good image of this - const mainImage = function (opt = {}) { + const mainImage = function () { + let box = this.infobox(); + + if (box) { + let img = box.image(); + + if (img) { + return img; + } + } + + let s = this.section(); + let imgs = s.images(); + + if (imgs.length === 1) { + return imgs[0]; + } + return null; }; var mainImage_1 = mainImage; const addMethod = function (models) { - models.Doc.mainImage = mainImage_1; // add a new method to Image class + models.Doc.prototype.mainImage = mainImage_1; // add a new method to Image class models.Image.prototype.commonsURL = urlHash; models.Image.prototype.exists = imgExists_1; diff --git a/plugins/image/builds/wtf-plugin-image.js.map b/plugins/image/builds/wtf-plugin-image.js.map index 35508ed5..66e8d7c6 100644 --- a/plugins/image/builds/wtf-plugin-image.js.map +++ b/plugins/image/builds/wtf-plugin-image.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-image.js","sources":["../node_modules/jshashes/hashes.js","../src/url-hash.js","../src/http/server.js","../src/img-exists.js","../src/mainImage.js","../src/index.js"],"sourcesContent":["/**\n * jshashes - https://github.com/h2non/jshashes\n * Released under the \"New BSD\" license\n *\n * Algorithms specification:\n *\n * MD5 - http://www.ietf.org/rfc/rfc1321.txt\n * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * HMAC - http://www.ietf.org/rfc/rfc2104.txt\n */\n(function() {\n var Hashes;\n\n function utf8Encode(str) {\n var x, y, output = '',\n i = -1,\n l;\n\n if (str && str.length) {\n l = str.length;\n while ((i += 1) < l) {\n /* Decode utf-16 surrogate pairs */\n x = str.charCodeAt(i);\n y = i + 1 < l ? str.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i += 1;\n }\n /* Encode output as utf-8 */\n if (x <= 0x7F) {\n output += String.fromCharCode(x);\n } else if (x <= 0x7FF) {\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n } else if (x <= 0xFFFF) {\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n } else if (x <= 0x1FFFFF) {\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n }\n }\n return output;\n }\n\n function utf8Decode(str) {\n var i, ac, c1, c2, c3, arr = [],\n l;\n i = ac = c1 = c2 = c3 = 0;\n\n if (str && str.length) {\n l = str.length;\n str += '';\n\n while (i < l) {\n c1 = str.charCodeAt(i);\n ac += 1;\n if (c1 < 128) {\n arr[ac] = String.fromCharCode(c1);\n i += 1;\n } else if (c1 > 191 && c1 < 224) {\n c2 = str.charCodeAt(i + 1);\n arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n i += 2;\n } else {\n c2 = str.charCodeAt(i + 1);\n c3 = str.charCodeAt(i + 2);\n arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n i += 3;\n }\n }\n }\n return arr.join('');\n }\n\n /**\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n function safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n */\n\n function bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n }\n\n /**\n * Convert a raw string to a hex string\n */\n\n function rstr2hex(input, hexcase) {\n var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef',\n output = '',\n x, i = 0,\n l = input.length;\n for (; i < l; i += 1) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);\n }\n return output;\n }\n\n /**\n * Encode a string as utf-16\n */\n\n function str2rstr_utf16le(input) {\n var i, l = input.length,\n output = '';\n for (i = 0; i < l; i += 1) {\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);\n }\n return output;\n }\n\n function str2rstr_utf16be(input) {\n var i, l = input.length,\n output = '';\n for (i = 0; i < l; i += 1) {\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert an array of big-endian words to a string\n */\n\n function binb2rstr(input) {\n var i, l = input.length * 32,\n output = '';\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert an array of little-endian words to a string\n */\n\n function binl2rstr(input) {\n var i, l = input.length * 32,\n output = '';\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n function rstr2binl(input) {\n var i, l = input.length * 8,\n output = Array(input.length >> 2),\n lo = output.length;\n for (i = 0; i < lo; i += 1) {\n output[i] = 0;\n }\n for (i = 0; i < l; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n function rstr2binb(input) {\n var i, l = input.length * 8,\n output = Array(input.length >> 2),\n lo = output.length;\n for (i = 0; i < lo; i += 1) {\n output[i] = 0;\n }\n for (i = 0; i < l; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an arbitrary string encoding\n */\n\n function rstr2any(input, encoding) {\n var divisor = encoding.length,\n remainders = Array(),\n i, q, x, ld, quotient, dividend, output, full_length;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n dividend = Array(Math.ceil(input.length / 2));\n ld = dividend.length;\n for (i = 0; i < ld; i += 1) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /**\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zerHashes.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i += 1) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0) {\n quotient[quotient.length] = q;\n }\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n output = '';\n for (i = remainders.length - 1; i >= 0; i--) {\n output += encoding.charAt(remainders[i]);\n }\n\n /* Append leading zero equivalents */\n full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));\n for (i = output.length; i < full_length; i += 1) {\n output = encoding[0] + output;\n }\n return output;\n }\n\n /**\n * Convert a raw string to a base-64 string\n */\n\n function rstr2b64(input, b64pad) {\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n output = '',\n len = input.length,\n i, j, triplet;\n b64pad = b64pad || '=';\n for (i = 0; i < len; i += 3) {\n triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (j = 0; j < 4; j += 1) {\n if (i * 8 + j * 6 > input.length * 8) {\n output += b64pad;\n } else {\n output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n }\n return output;\n }\n\n Hashes = {\n /**\n * @property {String} version\n * @readonly\n */\n VERSION: '1.0.6',\n /**\n * @member Hashes\n * @class Base64\n * @constructor\n */\n Base64: function() {\n // private properties\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n pad = '=', // default pad according with the RFC standard\n url = false, // URL encoding support @todo\n utf8 = true; // by default enable UTF-8 support encoding\n\n // public method for encoding\n this.encode = function(input) {\n var i, j, triplet,\n output = '',\n len = input.length;\n\n pad = pad || '=';\n input = (utf8) ? utf8Encode(input) : input;\n\n for (i = 0; i < len; i += 3) {\n triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (j = 0; j < 4; j += 1) {\n if (i * 8 + j * 6 > len * 8) {\n output += pad;\n } else {\n output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n }\n return output;\n };\n\n // public method for decoding\n this.decode = function(input) {\n // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var i, o1, o2, o3, h1, h2, h3, h4, bits, ac,\n dec = '',\n arr = [];\n if (!input) {\n return input;\n }\n\n i = ac = 0;\n input = input.replace(new RegExp('\\\\' + pad, 'gi'), ''); // use '='\n //input += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = tab.indexOf(input.charAt(i += 1));\n h2 = tab.indexOf(input.charAt(i += 1));\n h3 = tab.indexOf(input.charAt(i += 1));\n h4 = tab.indexOf(input.charAt(i += 1));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n ac += 1;\n\n if (h3 === 64) {\n arr[ac] = String.fromCharCode(o1);\n } else if (h4 === 64) {\n arr[ac] = String.fromCharCode(o1, o2);\n } else {\n arr[ac] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < input.length);\n\n dec = arr.join('');\n dec = (utf8) ? utf8Decode(dec) : dec;\n\n return dec;\n };\n\n // set custom pad string\n this.setPad = function(str) {\n pad = str || pad;\n return this;\n };\n // set custom tab string characters\n this.setTab = function(str) {\n tab = str || tab;\n return this;\n };\n this.setUTF8 = function(bool) {\n if (typeof bool === 'boolean') {\n utf8 = bool;\n }\n return this;\n };\n },\n\n /**\n * CRC-32 calculation\n * @member Hashes\n * @method CRC32\n * @static\n * @param {String} str Input String\n * @return {String}\n */\n CRC32: function(str) {\n var crc = 0,\n x = 0,\n y = 0,\n table, i, iTop;\n str = utf8Encode(str);\n\n table = [\n '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ',\n '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ',\n '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ',\n '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ',\n 'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ',\n '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ',\n 'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ',\n '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ',\n 'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ',\n '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ',\n 'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ',\n '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ',\n 'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ',\n '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ',\n '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ',\n '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ',\n '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ',\n 'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ',\n '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ',\n 'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ',\n '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ',\n 'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ',\n '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ',\n 'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ',\n '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ',\n 'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'\n ].join('');\n\n crc = crc ^ (-1);\n for (i = 0, iTop = str.length; i < iTop; i += 1) {\n y = (crc ^ str.charCodeAt(i)) & 0xFF;\n x = '0x' + table.substr(y * 9, 8);\n crc = (crc >>> 8) ^ x;\n }\n // always return a positive number (that's what >>> 0 does)\n return (crc ^ (-1)) >>> 0;\n },\n /**\n * @member Hashes\n * @class MD5\n * @constructor\n * @param {Object} [config]\n *\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See for more infHashes.\n */\n MD5: function(options) {\n /**\n * Private config properties. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding\n\n // privileged (public) methods\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8), hexcase);\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d), hexcase);\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * Enable/disable uppercase hexadecimal returned string\n * @param {Boolean}\n * @return {Object} this\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {String} Pad\n * @return {Object} this\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {Boolean}\n * @return {Object} [this]\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the MD5 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binl2rstr(binl(rstr2binl(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n var bkey, ipad, opad, hash, i;\n\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n bkey = rstr2binl(key);\n if (bkey.length > 16) {\n bkey = binl(bkey, key.length * 8);\n }\n\n ipad = Array(16), opad = Array(16);\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl(opad.concat(hash), 512 + 128));\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n function binl(x, len) {\n var i, olda, oldb, oldc, oldd,\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878;\n\n /* append padding */\n x[len >> 5] |= 0x80 << ((len) % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n }\n return Array(a, b, c, d);\n }\n\n /**\n * These functions implement the four basic operations the algorithm uses.\n */\n\n function md5_cmn(q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);\n }\n\n function md5_ff(a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\n }\n\n function md5_gg(a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\n }\n\n function md5_hh(a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t);\n }\n\n function md5_ii(a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\n }\n },\n /**\n * @member Hashes\n * @class Hashes.SHA1\n * @param {Object} [config]\n * @constructor\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n SHA1: function(options) {\n /**\n * Private config properties. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding\n\n // public methods\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8), hexcase);\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n var bkey, ipad, opad, i, hash;\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n bkey = rstr2binb(key);\n\n if (bkey.length > 16) {\n bkey = binb(bkey, key.length * 8);\n }\n ipad = Array(16), opad = Array(16);\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 512 + 160));\n }\n\n /**\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */\n\n function binb(x, len) {\n var i, j, t, olda, oldb, oldc, oldd, olde,\n w = Array(80),\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878,\n e = -1009589776;\n\n /* append padding */\n x[len >> 5] |= 0x80 << (24 - len % 32);\n x[((len + 64 >> 9) << 4) + 15] = len;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n olde = e;\n\n for (j = 0; j < 80; j += 1) {\n if (j < 16) {\n w[j] = x[i + j];\n } else {\n w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return Array(a, b, c, d, e);\n }\n\n /**\n * Perform the appropriate triplet combination function for the current\n * iteration\n */\n\n function sha1_ft(t, b, c, d) {\n if (t < 20) {\n return (b & c) | ((~b) & d);\n }\n if (t < 40) {\n return b ^ c ^ d;\n }\n if (t < 60) {\n return (b & c) | (b & d) | (c & d);\n }\n return b ^ c ^ d;\n }\n\n /**\n * Determine the appropriate additive constant for the current iteration\n */\n\n function sha1_kt(t) {\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n (t < 60) ? -1894007588 : -899497514;\n }\n },\n /**\n * @class Hashes.SHA256\n * @param {config}\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2\n * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://anmar.eu.org/projects/jssha2/\n */\n SHA256: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n sha256_K;\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s, utf8) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-sha256 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n var hash, i = 0,\n bkey = rstr2binb(key),\n ipad = Array(16),\n opad = Array(16);\n\n if (bkey.length > 16) {\n bkey = binb(bkey, key.length * 8);\n }\n\n for (; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 512 + 256));\n }\n\n /*\n * Main sha256 function, with its support functions\n */\n\n function sha256_S(X, n) {\n return (X >>> n) | (X << (32 - n));\n }\n\n function sha256_R(X, n) {\n return (X >>> n);\n }\n\n function sha256_Ch(x, y, z) {\n return ((x & y) ^ ((~x) & z));\n }\n\n function sha256_Maj(x, y, z) {\n return ((x & y) ^ (x & z) ^ (y & z));\n }\n\n function sha256_Sigma0256(x) {\n return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));\n }\n\n function sha256_Sigma1256(x) {\n return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));\n }\n\n function sha256_Gamma0256(x) {\n return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));\n }\n\n function sha256_Gamma1256(x) {\n return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));\n }\n\n function sha256_Sigma0512(x) {\n return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));\n }\n\n function sha256_Sigma1512(x) {\n return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));\n }\n\n function sha256_Gamma0512(x) {\n return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7));\n }\n\n function sha256_Gamma1512(x) {\n return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));\n }\n\n sha256_K = [\n 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,\n 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,\n 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,\n 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,\n 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,\n 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,\n 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998\n ];\n\n function binb(m, l) {\n var HASH = [1779033703, -1150833019, 1013904242, -1521486534,\n 1359893119, -1694144372, 528734635, 1541459225\n ];\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n\n /* append padding */\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >> 9) << 4) + 15] = l;\n\n for (i = 0; i < m.length; i += 16) {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n\n for (j = 0; j < 64; j += 1) {\n if (j < 16) {\n W[j] = m[j + i];\n } else {\n W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])), W[j - 16]);\n }\n\n T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n }\n\n },\n\n /**\n * @class Hashes.SHA512\n * @param {config}\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2\n * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n SHA512: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,\n /* hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n sha512_k;\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n /* private methods */\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n /*\n * Calculate the HMAC-SHA-512 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n\n var hash, i = 0,\n bkey = rstr2binb(key),\n ipad = Array(32),\n opad = Array(32);\n\n if (bkey.length > 32) {\n bkey = binb(bkey, key.length * 8);\n }\n\n for (; i < 32; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 1024 + 512));\n }\n\n /**\n * Calculate the SHA-512 of an array of big-endian dwords, and a bit length\n */\n\n function binb(x, len) {\n var j, i, l,\n W = new Array(80),\n hash = new Array(16),\n //Initial hash values\n H = [\n new int64(0x6a09e667, -205731576),\n new int64(-1150833019, -2067093701),\n new int64(0x3c6ef372, -23791573),\n new int64(-1521486534, 0x5f1d36f1),\n new int64(0x510e527f, -1377402159),\n new int64(-1694144372, 0x2b3e6c1f),\n new int64(0x1f83d9ab, -79577749),\n new int64(0x5be0cd19, 0x137e2179)\n ],\n T1 = new int64(0, 0),\n T2 = new int64(0, 0),\n a = new int64(0, 0),\n b = new int64(0, 0),\n c = new int64(0, 0),\n d = new int64(0, 0),\n e = new int64(0, 0),\n f = new int64(0, 0),\n g = new int64(0, 0),\n h = new int64(0, 0),\n //Temporary variables not specified by the document\n s0 = new int64(0, 0),\n s1 = new int64(0, 0),\n Ch = new int64(0, 0),\n Maj = new int64(0, 0),\n r1 = new int64(0, 0),\n r2 = new int64(0, 0),\n r3 = new int64(0, 0);\n\n if (sha512_k === undefined) {\n //SHA512 constants\n sha512_k = [\n new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),\n new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),\n new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),\n new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),\n new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),\n new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),\n new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),\n new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),\n new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),\n new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),\n new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),\n new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),\n new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),\n new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),\n new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),\n new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),\n new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),\n new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),\n new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),\n new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),\n new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),\n new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),\n new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),\n new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),\n new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),\n new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),\n new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),\n new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),\n new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),\n new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),\n new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),\n new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),\n new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),\n new int64(-354779690, -840897762), new int64(-176337025, -294727304),\n new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),\n new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),\n new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),\n new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),\n new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),\n new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)\n ];\n }\n\n for (i = 0; i < 80; i += 1) {\n W[i] = new int64(0, 0);\n }\n\n // append padding to the source string. The format is described in the FIPS.\n x[len >> 5] |= 0x80 << (24 - (len & 0x1f));\n x[((len + 128 >> 10) << 5) + 31] = len;\n l = x.length;\n for (i = 0; i < l; i += 32) { //32 dwords is the block size\n int64copy(a, H[0]);\n int64copy(b, H[1]);\n int64copy(c, H[2]);\n int64copy(d, H[3]);\n int64copy(e, H[4]);\n int64copy(f, H[5]);\n int64copy(g, H[6]);\n int64copy(h, H[7]);\n\n for (j = 0; j < 16; j += 1) {\n W[j].h = x[i + 2 * j];\n W[j].l = x[i + 2 * j + 1];\n }\n\n for (j = 16; j < 80; j += 1) {\n //sigma1\n int64rrot(r1, W[j - 2], 19);\n int64revrrot(r2, W[j - 2], 29);\n int64shr(r3, W[j - 2], 6);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n //sigma0\n int64rrot(r1, W[j - 15], 1);\n int64rrot(r2, W[j - 15], 8);\n int64shr(r3, W[j - 15], 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n int64add4(W[j], s1, W[j - 7], s0, W[j - 16]);\n }\n\n for (j = 0; j < 80; j += 1) {\n //Ch\n Ch.l = (e.l & f.l) ^ (~e.l & g.l);\n Ch.h = (e.h & f.h) ^ (~e.h & g.h);\n\n //Sigma1\n int64rrot(r1, e, 14);\n int64rrot(r2, e, 18);\n int64revrrot(r3, e, 9);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n\n //Sigma0\n int64rrot(r1, a, 28);\n int64revrrot(r2, a, 2);\n int64revrrot(r3, a, 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n //Maj\n Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);\n Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);\n\n int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);\n int64add(T2, s0, Maj);\n\n int64copy(h, g);\n int64copy(g, f);\n int64copy(f, e);\n int64add(e, d, T1);\n int64copy(d, c);\n int64copy(c, b);\n int64copy(b, a);\n int64add(a, T1, T2);\n }\n int64add(H[0], H[0], a);\n int64add(H[1], H[1], b);\n int64add(H[2], H[2], c);\n int64add(H[3], H[3], d);\n int64add(H[4], H[4], e);\n int64add(H[5], H[5], f);\n int64add(H[6], H[6], g);\n int64add(H[7], H[7], h);\n }\n\n //represent the hash as an array of 32-bit dwords\n for (i = 0; i < 8; i += 1) {\n hash[2 * i] = H[i].h;\n hash[2 * i + 1] = H[i].l;\n }\n return hash;\n }\n\n //A constructor for 64-bit numbers\n\n function int64(h, l) {\n this.h = h;\n this.l = l;\n //this.toString = int64toString;\n }\n\n //Copies src into dst, assuming both are 64-bit numbers\n\n function int64copy(dst, src) {\n dst.h = src.h;\n dst.l = src.l;\n }\n\n //Right-rotates a 64-bit number by shift\n //Won't handle cases of shift>=32\n //The function revrrot() is for that\n\n function int64rrot(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift) | (x.l << (32 - shift));\n }\n\n //Reverses the dwords of the source and then rotates right by shift.\n //This is equivalent to rotation by 32+shift\n\n function int64revrrot(dst, x, shift) {\n dst.l = (x.h >>> shift) | (x.l << (32 - shift));\n dst.h = (x.l >>> shift) | (x.h << (32 - shift));\n }\n\n //Bitwise-shifts right a 64-bit number by shift\n //Won't handle shift>=32, but it's never needed in SHA512\n\n function int64shr(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift);\n }\n\n //Adds two 64-bit numbers\n //Like the original implementation, does not rely on 32-bit operations\n\n function int64add(dst, x, y) {\n var w0 = (x.l & 0xffff) + (y.l & 0xffff);\n var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);\n var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);\n var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n\n //Same, except with 4 addends. Works faster than adding them one by one.\n\n function int64add4(dst, a, b, c, d) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n\n //Same, except with 5 addends\n\n function int64add5(dst, a, b, c, d, e) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff),\n w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16),\n w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16),\n w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n },\n /**\n * @class Hashes.RMD160\n * @constructor\n * @param {Object} [config]\n *\n * A JavaScript implementation of the RIPEMD-160 Algorithm\n * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/\n */\n RMD160: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,\n /* hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pa : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n rmd160_r1 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n ],\n rmd160_r2 = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n ],\n rmd160_s1 = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n ],\n rmd160_s2 = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n ];\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n if (typeof a !== 'undefined') {\n b64pad = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n /* private methods */\n\n /**\n * Calculate the rmd160 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binl2rstr(binl(rstr2binl(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-rmd160 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n var i, hash,\n bkey = rstr2binl(key),\n ipad = Array(16),\n opad = Array(16);\n\n if (bkey.length > 16) {\n bkey = binl(bkey, key.length * 8);\n }\n\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl(opad.concat(hash), 512 + 160));\n }\n\n /**\n * Convert an array of little-endian words to a string\n */\n\n function binl2rstr(input) {\n var i, output = '',\n l = input.length * 32;\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length.\n */\n\n function binl(x, len) {\n var T, j, i, l,\n h0 = 0x67452301,\n h1 = 0xefcdab89,\n h2 = 0x98badcfe,\n h3 = 0x10325476,\n h4 = 0xc3d2e1f0,\n A1, B1, C1, D1, E1,\n A2, B2, C2, D2, E2;\n\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n l = x.length;\n\n for (i = 0; i < l; i += 16) {\n A1 = A2 = h0;\n B1 = B2 = h1;\n C1 = C2 = h2;\n D1 = D2 = h3;\n E1 = E2 = h4;\n for (j = 0; j <= 79; j += 1) {\n T = safe_add(A1, rmd160_f(j, B1, C1, D1));\n T = safe_add(T, x[i + rmd160_r1[j]]);\n T = safe_add(T, rmd160_K1(j));\n T = safe_add(bit_rol(T, rmd160_s1[j]), E1);\n A1 = E1;\n E1 = D1;\n D1 = bit_rol(C1, 10);\n C1 = B1;\n B1 = T;\n T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2));\n T = safe_add(T, x[i + rmd160_r2[j]]);\n T = safe_add(T, rmd160_K2(j));\n T = safe_add(bit_rol(T, rmd160_s2[j]), E2);\n A2 = E2;\n E2 = D2;\n D2 = bit_rol(C2, 10);\n C2 = B2;\n B2 = T;\n }\n\n T = safe_add(h1, safe_add(C1, D2));\n h1 = safe_add(h2, safe_add(D1, E2));\n h2 = safe_add(h3, safe_add(E1, A2));\n h3 = safe_add(h4, safe_add(A1, B2));\n h4 = safe_add(h0, safe_add(B1, C2));\n h0 = T;\n }\n return [h0, h1, h2, h3, h4];\n }\n\n // specific algorithm methods\n\n function rmd160_f(j, x, y, z) {\n return (0 <= j && j <= 15) ? (x ^ y ^ z) :\n (16 <= j && j <= 31) ? (x & y) | (~x & z) :\n (32 <= j && j <= 47) ? (x | ~y) ^ z :\n (48 <= j && j <= 63) ? (x & z) | (y & ~z) :\n (64 <= j && j <= 79) ? x ^ (y | ~z) :\n 'rmd160_f: j out of range';\n }\n\n function rmd160_K1(j) {\n return (0 <= j && j <= 15) ? 0x00000000 :\n (16 <= j && j <= 31) ? 0x5a827999 :\n (32 <= j && j <= 47) ? 0x6ed9eba1 :\n (48 <= j && j <= 63) ? 0x8f1bbcdc :\n (64 <= j && j <= 79) ? 0xa953fd4e :\n 'rmd160_K1: j out of range';\n }\n\n function rmd160_K2(j) {\n return (0 <= j && j <= 15) ? 0x50a28be6 :\n (16 <= j && j <= 31) ? 0x5c4dd124 :\n (32 <= j && j <= 47) ? 0x6d703ef3 :\n (48 <= j && j <= 63) ? 0x7a6d76e9 :\n (64 <= j && j <= 79) ? 0x00000000 :\n 'rmd160_K2: j out of range';\n }\n }\n };\n\n // exposes Hashes\n (function(window, undefined) {\n var freeExports = false;\n if (typeof exports === 'object') {\n freeExports = exports;\n if (exports && typeof global === 'object' && global && global === global.global) {\n window = global;\n }\n }\n\n if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // define as an anonymous module, so, through path mapping, it can be aliased\n define(function() {\n return Hashes;\n });\n } else if (freeExports) {\n // in Node.js or RingoJS v0.8.0+\n if (typeof module === 'object' && module && module.exports === freeExports) {\n module.exports = Hashes;\n }\n // in Narwhal or RingoJS v0.7.0-\n else {\n freeExports.Hashes = Hashes;\n }\n } else {\n // in a browser or Rhino\n window.Hashes = Hashes;\n }\n }(this));\n}()); // IIFE\n","const Hashes = require('jshashes')\n\nconst server = 'https://upload.wikimedia.org/wikipedia/commons/'\n\nconst encodeTitle = function (file) {\n let title = file.replace(/^(image|file?)\\:/i, '')\n //titlecase it\n title = title.charAt(0).toUpperCase() + title.substring(1)\n //spaces to underscores\n title = title.trim().replace(/ /g, '_')\n return title\n}\n\n//the wikimedia image url is a little silly:\n//https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F\nconst commonsURL = function () {\n let file = this.data.file\n let title = encodeTitle(file)\n let hash = new Hashes.MD5().hex(title)\n let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'\n title = encodeURIComponent(title)\n path += title\n return server + path\n}\nmodule.exports = commonsURL\n","const https = require('https')\n\n// use the native nodejs request function\nconst request = function (url, opts = {}) {\n return new Promise((resolve, reject) => {\n https\n .get(url, opts, (resp) => {\n let status = String(resp.statusCode) || ''\n let bool = /^[23]/.test(status)\n resolve(bool)\n })\n .on('error', (err) => {\n reject(err)\n })\n })\n}\nmodule.exports = request\n","const http = require('./http/server')\n\n// test if the image url exists or not\nconst imgExists = function (callback) {\n return http(this.url(), {\n method: 'HEAD'\n })\n .then(function (bool) {\n //support callback non-promise form\n if (callback) {\n callback(null, bool)\n }\n return bool\n })\n .catch((e) => {\n console.error(e)\n if (callback) {\n callback(e, null)\n }\n })\n}\nmodule.exports = imgExists\n","// is there a good image of this\nconst mainImage = function (opt = {}) {\n return null\n}\nmodule.exports = mainImage\n","const commonsURL = require('./url-hash')\nconst imgExists = require('./img-exists')\nconst mainImage = require('./mainImage')\n\nconst addMethod = function (models) {\n models.Doc.mainImage = mainImage\n // add a new method to Image class\n models.Image.prototype.commonsURL = commonsURL\n models.Image.prototype.exists = imgExists\n}\nmodule.exports = addMethod\n"],"names":["Hashes","utf8Encode","str","x","y","output","i","l","length","charCodeAt","String","fromCharCode","utf8Decode","ac","c1","c2","c3","arr","join","safe_add","lsw","msw","bit_rol","num","cnt","rstr2hex","input","hexcase","hex_tab","charAt","binb2rstr","binl2rstr","rstr2binl","Array","lo","rstr2binb","rstr2any","encoding","divisor","remainders","q","ld","quotient","dividend","full_length","Math","ceil","floor","log","rstr2b64","b64pad","tab","len","j","triplet","VERSION","Base64","pad","utf8","encode","decode","o1","o2","o3","h1","h2","h3","h4","bits","dec","replace","RegExp","indexOf","setPad","setTab","setUTF8","bool","CRC32","crc","table","iTop","substr","MD5","options","uppercase","hex","s","rstr","b64","any","e","raw","hex_hmac","k","d","rstr_hmac","b64_hmac","any_hmac","vm_test","toLowerCase","setUpperCase","a","binl","key","data","bkey","ipad","opad","hash","concat","olda","oldb","oldc","oldd","b","c","md5_ff","md5_gg","md5_hh","md5_ii","md5_cmn","t","SHA1","binb","olde","w","sha1_ft","sha1_kt","SHA256","sha256_K","sha256_S","X","n","sha256_R","sha256_Ch","z","sha256_Maj","sha256_Sigma0256","sha256_Sigma1256","sha256_Gamma0256","sha256_Gamma1256","m","HASH","W","f","g","h","T1","T2","SHA512","sha512_k","H","int64","s0","s1","Ch","Maj","r1","r2","r3","undefined","int64copy","int64rrot","int64revrrot","int64shr","int64add4","int64add5","int64add","dst","src","shift","w0","w1","w2","w3","RMD160","pa","rmd160_r1","rmd160_r2","rmd160_s1","rmd160_s2","T","h0","A1","B1","C1","D1","E1","A2","B2","C2","D2","E2","rmd160_f","rmd160_K1","rmd160_K2","window","freeExports","exports","global","define","amd","module","server","encodeTitle","file","title","toUpperCase","substring","trim","commonsURL","path","encodeURIComponent","request","url","opts","Promise","resolve","reject","https","get","resp","status","statusCode","test","on","err","imgExists","callback","http","method","then","catch","console","error","mainImage","opt","addMethod","models","Doc","Image","prototype","exists"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-image.js","sources":["../node_modules/jshashes/hashes.js","../src/url-hash.js","../src/http/server.js","../src/img-exists.js","../src/mainImage.js","../src/index.js"],"sourcesContent":["/**\n * jshashes - https://github.com/h2non/jshashes\n * Released under the \"New BSD\" license\n *\n * Algorithms specification:\n *\n * MD5 - http://www.ietf.org/rfc/rfc1321.txt\n * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * HMAC - http://www.ietf.org/rfc/rfc2104.txt\n */\n(function() {\n var Hashes;\n\n function utf8Encode(str) {\n var x, y, output = '',\n i = -1,\n l;\n\n if (str && str.length) {\n l = str.length;\n while ((i += 1) < l) {\n /* Decode utf-16 surrogate pairs */\n x = str.charCodeAt(i);\n y = i + 1 < l ? str.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i += 1;\n }\n /* Encode output as utf-8 */\n if (x <= 0x7F) {\n output += String.fromCharCode(x);\n } else if (x <= 0x7FF) {\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n } else if (x <= 0xFFFF) {\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n } else if (x <= 0x1FFFFF) {\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n }\n }\n return output;\n }\n\n function utf8Decode(str) {\n var i, ac, c1, c2, c3, arr = [],\n l;\n i = ac = c1 = c2 = c3 = 0;\n\n if (str && str.length) {\n l = str.length;\n str += '';\n\n while (i < l) {\n c1 = str.charCodeAt(i);\n ac += 1;\n if (c1 < 128) {\n arr[ac] = String.fromCharCode(c1);\n i += 1;\n } else if (c1 > 191 && c1 < 224) {\n c2 = str.charCodeAt(i + 1);\n arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n i += 2;\n } else {\n c2 = str.charCodeAt(i + 1);\n c3 = str.charCodeAt(i + 2);\n arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n i += 3;\n }\n }\n }\n return arr.join('');\n }\n\n /**\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n function safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n */\n\n function bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n }\n\n /**\n * Convert a raw string to a hex string\n */\n\n function rstr2hex(input, hexcase) {\n var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef',\n output = '',\n x, i = 0,\n l = input.length;\n for (; i < l; i += 1) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);\n }\n return output;\n }\n\n /**\n * Encode a string as utf-16\n */\n\n function str2rstr_utf16le(input) {\n var i, l = input.length,\n output = '';\n for (i = 0; i < l; i += 1) {\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);\n }\n return output;\n }\n\n function str2rstr_utf16be(input) {\n var i, l = input.length,\n output = '';\n for (i = 0; i < l; i += 1) {\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert an array of big-endian words to a string\n */\n\n function binb2rstr(input) {\n var i, l = input.length * 32,\n output = '';\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert an array of little-endian words to a string\n */\n\n function binl2rstr(input) {\n var i, l = input.length * 32,\n output = '';\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n function rstr2binl(input) {\n var i, l = input.length * 8,\n output = Array(input.length >> 2),\n lo = output.length;\n for (i = 0; i < lo; i += 1) {\n output[i] = 0;\n }\n for (i = 0; i < l; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n function rstr2binb(input) {\n var i, l = input.length * 8,\n output = Array(input.length >> 2),\n lo = output.length;\n for (i = 0; i < lo; i += 1) {\n output[i] = 0;\n }\n for (i = 0; i < l; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an arbitrary string encoding\n */\n\n function rstr2any(input, encoding) {\n var divisor = encoding.length,\n remainders = Array(),\n i, q, x, ld, quotient, dividend, output, full_length;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n dividend = Array(Math.ceil(input.length / 2));\n ld = dividend.length;\n for (i = 0; i < ld; i += 1) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /**\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zerHashes.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i += 1) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0) {\n quotient[quotient.length] = q;\n }\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n output = '';\n for (i = remainders.length - 1; i >= 0; i--) {\n output += encoding.charAt(remainders[i]);\n }\n\n /* Append leading zero equivalents */\n full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));\n for (i = output.length; i < full_length; i += 1) {\n output = encoding[0] + output;\n }\n return output;\n }\n\n /**\n * Convert a raw string to a base-64 string\n */\n\n function rstr2b64(input, b64pad) {\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n output = '',\n len = input.length,\n i, j, triplet;\n b64pad = b64pad || '=';\n for (i = 0; i < len; i += 3) {\n triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (j = 0; j < 4; j += 1) {\n if (i * 8 + j * 6 > input.length * 8) {\n output += b64pad;\n } else {\n output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n }\n return output;\n }\n\n Hashes = {\n /**\n * @property {String} version\n * @readonly\n */\n VERSION: '1.0.6',\n /**\n * @member Hashes\n * @class Base64\n * @constructor\n */\n Base64: function() {\n // private properties\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n pad = '=', // default pad according with the RFC standard\n url = false, // URL encoding support @todo\n utf8 = true; // by default enable UTF-8 support encoding\n\n // public method for encoding\n this.encode = function(input) {\n var i, j, triplet,\n output = '',\n len = input.length;\n\n pad = pad || '=';\n input = (utf8) ? utf8Encode(input) : input;\n\n for (i = 0; i < len; i += 3) {\n triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (j = 0; j < 4; j += 1) {\n if (i * 8 + j * 6 > len * 8) {\n output += pad;\n } else {\n output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n }\n return output;\n };\n\n // public method for decoding\n this.decode = function(input) {\n // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var i, o1, o2, o3, h1, h2, h3, h4, bits, ac,\n dec = '',\n arr = [];\n if (!input) {\n return input;\n }\n\n i = ac = 0;\n input = input.replace(new RegExp('\\\\' + pad, 'gi'), ''); // use '='\n //input += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = tab.indexOf(input.charAt(i += 1));\n h2 = tab.indexOf(input.charAt(i += 1));\n h3 = tab.indexOf(input.charAt(i += 1));\n h4 = tab.indexOf(input.charAt(i += 1));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n ac += 1;\n\n if (h3 === 64) {\n arr[ac] = String.fromCharCode(o1);\n } else if (h4 === 64) {\n arr[ac] = String.fromCharCode(o1, o2);\n } else {\n arr[ac] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < input.length);\n\n dec = arr.join('');\n dec = (utf8) ? utf8Decode(dec) : dec;\n\n return dec;\n };\n\n // set custom pad string\n this.setPad = function(str) {\n pad = str || pad;\n return this;\n };\n // set custom tab string characters\n this.setTab = function(str) {\n tab = str || tab;\n return this;\n };\n this.setUTF8 = function(bool) {\n if (typeof bool === 'boolean') {\n utf8 = bool;\n }\n return this;\n };\n },\n\n /**\n * CRC-32 calculation\n * @member Hashes\n * @method CRC32\n * @static\n * @param {String} str Input String\n * @return {String}\n */\n CRC32: function(str) {\n var crc = 0,\n x = 0,\n y = 0,\n table, i, iTop;\n str = utf8Encode(str);\n\n table = [\n '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ',\n '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ',\n '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ',\n '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ',\n 'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ',\n '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ',\n 'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ',\n '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ',\n 'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ',\n '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ',\n 'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ',\n '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ',\n 'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ',\n '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ',\n '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ',\n '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ',\n '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ',\n 'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ',\n '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ',\n 'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ',\n '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ',\n 'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ',\n '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ',\n 'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ',\n '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ',\n 'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'\n ].join('');\n\n crc = crc ^ (-1);\n for (i = 0, iTop = str.length; i < iTop; i += 1) {\n y = (crc ^ str.charCodeAt(i)) & 0xFF;\n x = '0x' + table.substr(y * 9, 8);\n crc = (crc >>> 8) ^ x;\n }\n // always return a positive number (that's what >>> 0 does)\n return (crc ^ (-1)) >>> 0;\n },\n /**\n * @member Hashes\n * @class MD5\n * @constructor\n * @param {Object} [config]\n *\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See for more infHashes.\n */\n MD5: function(options) {\n /**\n * Private config properties. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding\n\n // privileged (public) methods\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8), hexcase);\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d), hexcase);\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * Enable/disable uppercase hexadecimal returned string\n * @param {Boolean}\n * @return {Object} this\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {String} Pad\n * @return {Object} this\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {Boolean}\n * @return {Object} [this]\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the MD5 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binl2rstr(binl(rstr2binl(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n var bkey, ipad, opad, hash, i;\n\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n bkey = rstr2binl(key);\n if (bkey.length > 16) {\n bkey = binl(bkey, key.length * 8);\n }\n\n ipad = Array(16), opad = Array(16);\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl(opad.concat(hash), 512 + 128));\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n function binl(x, len) {\n var i, olda, oldb, oldc, oldd,\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878;\n\n /* append padding */\n x[len >> 5] |= 0x80 << ((len) % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n }\n return Array(a, b, c, d);\n }\n\n /**\n * These functions implement the four basic operations the algorithm uses.\n */\n\n function md5_cmn(q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);\n }\n\n function md5_ff(a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\n }\n\n function md5_gg(a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\n }\n\n function md5_hh(a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t);\n }\n\n function md5_ii(a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\n }\n },\n /**\n * @member Hashes\n * @class Hashes.SHA1\n * @param {Object} [config]\n * @constructor\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n SHA1: function(options) {\n /**\n * Private config properties. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding\n\n // public methods\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8), hexcase);\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n var bkey, ipad, opad, i, hash;\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n bkey = rstr2binb(key);\n\n if (bkey.length > 16) {\n bkey = binb(bkey, key.length * 8);\n }\n ipad = Array(16), opad = Array(16);\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 512 + 160));\n }\n\n /**\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */\n\n function binb(x, len) {\n var i, j, t, olda, oldb, oldc, oldd, olde,\n w = Array(80),\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878,\n e = -1009589776;\n\n /* append padding */\n x[len >> 5] |= 0x80 << (24 - len % 32);\n x[((len + 64 >> 9) << 4) + 15] = len;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n olde = e;\n\n for (j = 0; j < 80; j += 1) {\n if (j < 16) {\n w[j] = x[i + j];\n } else {\n w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return Array(a, b, c, d, e);\n }\n\n /**\n * Perform the appropriate triplet combination function for the current\n * iteration\n */\n\n function sha1_ft(t, b, c, d) {\n if (t < 20) {\n return (b & c) | ((~b) & d);\n }\n if (t < 40) {\n return b ^ c ^ d;\n }\n if (t < 60) {\n return (b & c) | (b & d) | (c & d);\n }\n return b ^ c ^ d;\n }\n\n /**\n * Determine the appropriate additive constant for the current iteration\n */\n\n function sha1_kt(t) {\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n (t < 60) ? -1894007588 : -899497514;\n }\n },\n /**\n * @class Hashes.SHA256\n * @param {config}\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2\n * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://anmar.eu.org/projects/jssha2/\n */\n SHA256: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n sha256_K;\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s, utf8) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-sha256 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n var hash, i = 0,\n bkey = rstr2binb(key),\n ipad = Array(16),\n opad = Array(16);\n\n if (bkey.length > 16) {\n bkey = binb(bkey, key.length * 8);\n }\n\n for (; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 512 + 256));\n }\n\n /*\n * Main sha256 function, with its support functions\n */\n\n function sha256_S(X, n) {\n return (X >>> n) | (X << (32 - n));\n }\n\n function sha256_R(X, n) {\n return (X >>> n);\n }\n\n function sha256_Ch(x, y, z) {\n return ((x & y) ^ ((~x) & z));\n }\n\n function sha256_Maj(x, y, z) {\n return ((x & y) ^ (x & z) ^ (y & z));\n }\n\n function sha256_Sigma0256(x) {\n return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));\n }\n\n function sha256_Sigma1256(x) {\n return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));\n }\n\n function sha256_Gamma0256(x) {\n return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));\n }\n\n function sha256_Gamma1256(x) {\n return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));\n }\n\n function sha256_Sigma0512(x) {\n return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));\n }\n\n function sha256_Sigma1512(x) {\n return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));\n }\n\n function sha256_Gamma0512(x) {\n return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7));\n }\n\n function sha256_Gamma1512(x) {\n return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));\n }\n\n sha256_K = [\n 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,\n 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,\n 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,\n 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,\n 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,\n 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,\n 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998\n ];\n\n function binb(m, l) {\n var HASH = [1779033703, -1150833019, 1013904242, -1521486534,\n 1359893119, -1694144372, 528734635, 1541459225\n ];\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n\n /* append padding */\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >> 9) << 4) + 15] = l;\n\n for (i = 0; i < m.length; i += 16) {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n\n for (j = 0; j < 64; j += 1) {\n if (j < 16) {\n W[j] = m[j + i];\n } else {\n W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])), W[j - 16]);\n }\n\n T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n }\n\n },\n\n /**\n * @class Hashes.SHA512\n * @param {config}\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2\n * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n SHA512: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,\n /* hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n sha512_k;\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n /* private methods */\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n /*\n * Calculate the HMAC-SHA-512 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n\n var hash, i = 0,\n bkey = rstr2binb(key),\n ipad = Array(32),\n opad = Array(32);\n\n if (bkey.length > 32) {\n bkey = binb(bkey, key.length * 8);\n }\n\n for (; i < 32; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 1024 + 512));\n }\n\n /**\n * Calculate the SHA-512 of an array of big-endian dwords, and a bit length\n */\n\n function binb(x, len) {\n var j, i, l,\n W = new Array(80),\n hash = new Array(16),\n //Initial hash values\n H = [\n new int64(0x6a09e667, -205731576),\n new int64(-1150833019, -2067093701),\n new int64(0x3c6ef372, -23791573),\n new int64(-1521486534, 0x5f1d36f1),\n new int64(0x510e527f, -1377402159),\n new int64(-1694144372, 0x2b3e6c1f),\n new int64(0x1f83d9ab, -79577749),\n new int64(0x5be0cd19, 0x137e2179)\n ],\n T1 = new int64(0, 0),\n T2 = new int64(0, 0),\n a = new int64(0, 0),\n b = new int64(0, 0),\n c = new int64(0, 0),\n d = new int64(0, 0),\n e = new int64(0, 0),\n f = new int64(0, 0),\n g = new int64(0, 0),\n h = new int64(0, 0),\n //Temporary variables not specified by the document\n s0 = new int64(0, 0),\n s1 = new int64(0, 0),\n Ch = new int64(0, 0),\n Maj = new int64(0, 0),\n r1 = new int64(0, 0),\n r2 = new int64(0, 0),\n r3 = new int64(0, 0);\n\n if (sha512_k === undefined) {\n //SHA512 constants\n sha512_k = [\n new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),\n new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),\n new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),\n new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),\n new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),\n new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),\n new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),\n new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),\n new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),\n new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),\n new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),\n new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),\n new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),\n new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),\n new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),\n new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),\n new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),\n new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),\n new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),\n new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),\n new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),\n new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),\n new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),\n new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),\n new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),\n new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),\n new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),\n new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),\n new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),\n new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),\n new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),\n new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),\n new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),\n new int64(-354779690, -840897762), new int64(-176337025, -294727304),\n new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),\n new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),\n new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),\n new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),\n new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),\n new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)\n ];\n }\n\n for (i = 0; i < 80; i += 1) {\n W[i] = new int64(0, 0);\n }\n\n // append padding to the source string. The format is described in the FIPS.\n x[len >> 5] |= 0x80 << (24 - (len & 0x1f));\n x[((len + 128 >> 10) << 5) + 31] = len;\n l = x.length;\n for (i = 0; i < l; i += 32) { //32 dwords is the block size\n int64copy(a, H[0]);\n int64copy(b, H[1]);\n int64copy(c, H[2]);\n int64copy(d, H[3]);\n int64copy(e, H[4]);\n int64copy(f, H[5]);\n int64copy(g, H[6]);\n int64copy(h, H[7]);\n\n for (j = 0; j < 16; j += 1) {\n W[j].h = x[i + 2 * j];\n W[j].l = x[i + 2 * j + 1];\n }\n\n for (j = 16; j < 80; j += 1) {\n //sigma1\n int64rrot(r1, W[j - 2], 19);\n int64revrrot(r2, W[j - 2], 29);\n int64shr(r3, W[j - 2], 6);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n //sigma0\n int64rrot(r1, W[j - 15], 1);\n int64rrot(r2, W[j - 15], 8);\n int64shr(r3, W[j - 15], 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n int64add4(W[j], s1, W[j - 7], s0, W[j - 16]);\n }\n\n for (j = 0; j < 80; j += 1) {\n //Ch\n Ch.l = (e.l & f.l) ^ (~e.l & g.l);\n Ch.h = (e.h & f.h) ^ (~e.h & g.h);\n\n //Sigma1\n int64rrot(r1, e, 14);\n int64rrot(r2, e, 18);\n int64revrrot(r3, e, 9);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n\n //Sigma0\n int64rrot(r1, a, 28);\n int64revrrot(r2, a, 2);\n int64revrrot(r3, a, 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n //Maj\n Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);\n Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);\n\n int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);\n int64add(T2, s0, Maj);\n\n int64copy(h, g);\n int64copy(g, f);\n int64copy(f, e);\n int64add(e, d, T1);\n int64copy(d, c);\n int64copy(c, b);\n int64copy(b, a);\n int64add(a, T1, T2);\n }\n int64add(H[0], H[0], a);\n int64add(H[1], H[1], b);\n int64add(H[2], H[2], c);\n int64add(H[3], H[3], d);\n int64add(H[4], H[4], e);\n int64add(H[5], H[5], f);\n int64add(H[6], H[6], g);\n int64add(H[7], H[7], h);\n }\n\n //represent the hash as an array of 32-bit dwords\n for (i = 0; i < 8; i += 1) {\n hash[2 * i] = H[i].h;\n hash[2 * i + 1] = H[i].l;\n }\n return hash;\n }\n\n //A constructor for 64-bit numbers\n\n function int64(h, l) {\n this.h = h;\n this.l = l;\n //this.toString = int64toString;\n }\n\n //Copies src into dst, assuming both are 64-bit numbers\n\n function int64copy(dst, src) {\n dst.h = src.h;\n dst.l = src.l;\n }\n\n //Right-rotates a 64-bit number by shift\n //Won't handle cases of shift>=32\n //The function revrrot() is for that\n\n function int64rrot(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift) | (x.l << (32 - shift));\n }\n\n //Reverses the dwords of the source and then rotates right by shift.\n //This is equivalent to rotation by 32+shift\n\n function int64revrrot(dst, x, shift) {\n dst.l = (x.h >>> shift) | (x.l << (32 - shift));\n dst.h = (x.l >>> shift) | (x.h << (32 - shift));\n }\n\n //Bitwise-shifts right a 64-bit number by shift\n //Won't handle shift>=32, but it's never needed in SHA512\n\n function int64shr(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift);\n }\n\n //Adds two 64-bit numbers\n //Like the original implementation, does not rely on 32-bit operations\n\n function int64add(dst, x, y) {\n var w0 = (x.l & 0xffff) + (y.l & 0xffff);\n var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);\n var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);\n var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n\n //Same, except with 4 addends. Works faster than adding them one by one.\n\n function int64add4(dst, a, b, c, d) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n\n //Same, except with 5 addends\n\n function int64add5(dst, a, b, c, d, e) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff),\n w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16),\n w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16),\n w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n },\n /**\n * @class Hashes.RMD160\n * @constructor\n * @param {Object} [config]\n *\n * A JavaScript implementation of the RIPEMD-160 Algorithm\n * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/\n */\n RMD160: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,\n /* hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pa : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n rmd160_r1 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n ],\n rmd160_r2 = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n ],\n rmd160_s1 = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n ],\n rmd160_s2 = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n ];\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n if (typeof a !== 'undefined') {\n b64pad = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n /* private methods */\n\n /**\n * Calculate the rmd160 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binl2rstr(binl(rstr2binl(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-rmd160 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n var i, hash,\n bkey = rstr2binl(key),\n ipad = Array(16),\n opad = Array(16);\n\n if (bkey.length > 16) {\n bkey = binl(bkey, key.length * 8);\n }\n\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl(opad.concat(hash), 512 + 160));\n }\n\n /**\n * Convert an array of little-endian words to a string\n */\n\n function binl2rstr(input) {\n var i, output = '',\n l = input.length * 32;\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length.\n */\n\n function binl(x, len) {\n var T, j, i, l,\n h0 = 0x67452301,\n h1 = 0xefcdab89,\n h2 = 0x98badcfe,\n h3 = 0x10325476,\n h4 = 0xc3d2e1f0,\n A1, B1, C1, D1, E1,\n A2, B2, C2, D2, E2;\n\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n l = x.length;\n\n for (i = 0; i < l; i += 16) {\n A1 = A2 = h0;\n B1 = B2 = h1;\n C1 = C2 = h2;\n D1 = D2 = h3;\n E1 = E2 = h4;\n for (j = 0; j <= 79; j += 1) {\n T = safe_add(A1, rmd160_f(j, B1, C1, D1));\n T = safe_add(T, x[i + rmd160_r1[j]]);\n T = safe_add(T, rmd160_K1(j));\n T = safe_add(bit_rol(T, rmd160_s1[j]), E1);\n A1 = E1;\n E1 = D1;\n D1 = bit_rol(C1, 10);\n C1 = B1;\n B1 = T;\n T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2));\n T = safe_add(T, x[i + rmd160_r2[j]]);\n T = safe_add(T, rmd160_K2(j));\n T = safe_add(bit_rol(T, rmd160_s2[j]), E2);\n A2 = E2;\n E2 = D2;\n D2 = bit_rol(C2, 10);\n C2 = B2;\n B2 = T;\n }\n\n T = safe_add(h1, safe_add(C1, D2));\n h1 = safe_add(h2, safe_add(D1, E2));\n h2 = safe_add(h3, safe_add(E1, A2));\n h3 = safe_add(h4, safe_add(A1, B2));\n h4 = safe_add(h0, safe_add(B1, C2));\n h0 = T;\n }\n return [h0, h1, h2, h3, h4];\n }\n\n // specific algorithm methods\n\n function rmd160_f(j, x, y, z) {\n return (0 <= j && j <= 15) ? (x ^ y ^ z) :\n (16 <= j && j <= 31) ? (x & y) | (~x & z) :\n (32 <= j && j <= 47) ? (x | ~y) ^ z :\n (48 <= j && j <= 63) ? (x & z) | (y & ~z) :\n (64 <= j && j <= 79) ? x ^ (y | ~z) :\n 'rmd160_f: j out of range';\n }\n\n function rmd160_K1(j) {\n return (0 <= j && j <= 15) ? 0x00000000 :\n (16 <= j && j <= 31) ? 0x5a827999 :\n (32 <= j && j <= 47) ? 0x6ed9eba1 :\n (48 <= j && j <= 63) ? 0x8f1bbcdc :\n (64 <= j && j <= 79) ? 0xa953fd4e :\n 'rmd160_K1: j out of range';\n }\n\n function rmd160_K2(j) {\n return (0 <= j && j <= 15) ? 0x50a28be6 :\n (16 <= j && j <= 31) ? 0x5c4dd124 :\n (32 <= j && j <= 47) ? 0x6d703ef3 :\n (48 <= j && j <= 63) ? 0x7a6d76e9 :\n (64 <= j && j <= 79) ? 0x00000000 :\n 'rmd160_K2: j out of range';\n }\n }\n };\n\n // exposes Hashes\n (function(window, undefined) {\n var freeExports = false;\n if (typeof exports === 'object') {\n freeExports = exports;\n if (exports && typeof global === 'object' && global && global === global.global) {\n window = global;\n }\n }\n\n if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // define as an anonymous module, so, through path mapping, it can be aliased\n define(function() {\n return Hashes;\n });\n } else if (freeExports) {\n // in Node.js or RingoJS v0.8.0+\n if (typeof module === 'object' && module && module.exports === freeExports) {\n module.exports = Hashes;\n }\n // in Narwhal or RingoJS v0.7.0-\n else {\n freeExports.Hashes = Hashes;\n }\n } else {\n // in a browser or Rhino\n window.Hashes = Hashes;\n }\n }(this));\n}()); // IIFE\n","const Hashes = require('jshashes')\n\nconst server = 'https://upload.wikimedia.org/wikipedia/commons/'\n\nconst encodeTitle = function (file) {\n let title = file.replace(/^(image|file?)\\:/i, '')\n //titlecase it\n title = title.charAt(0).toUpperCase() + title.substring(1)\n //spaces to underscores\n title = title.trim().replace(/ /g, '_')\n return title\n}\n\n//the wikimedia image url is a little silly:\n//https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F\nconst commonsURL = function () {\n let file = this.data.file\n let title = encodeTitle(file)\n let hash = new Hashes.MD5().hex(title)\n let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'\n title = encodeURIComponent(title)\n path += title\n return server + path\n}\nmodule.exports = commonsURL\n","const https = require('https')\n\n// use the native nodejs request function\nconst request = function (url, opts = {}) {\n return new Promise((resolve, reject) => {\n https\n .get(url, opts, (resp) => {\n let status = String(resp.statusCode) || ''\n let bool = /^[23]/.test(status)\n resolve(bool)\n })\n .on('error', (err) => {\n reject(err)\n })\n })\n}\nmodule.exports = request\n","const http = require('./http/server')\n\n// test if the image url exists or not\nconst imgExists = function (callback) {\n return http(this.url(), {\n method: 'HEAD'\n })\n .then(function (bool) {\n //support callback non-promise form\n if (callback) {\n callback(null, bool)\n }\n return bool\n })\n .catch((e) => {\n console.error(e)\n if (callback) {\n callback(e, null)\n }\n })\n}\nmodule.exports = imgExists\n","// is there a good image of this\nconst mainImage = function () {\n let box = this.infobox()\n if (box) {\n let img = box.image()\n if (img) {\n return img\n }\n }\n let s = this.section()\n let imgs = s.images()\n if (imgs.length === 1) {\n return imgs[0]\n }\n return null\n}\nmodule.exports = mainImage\n","const commonsURL = require('./url-hash')\nconst imgExists = require('./img-exists')\nconst mainImage = require('./mainImage')\n\nconst addMethod = function (models) {\n models.Doc.prototype.mainImage = mainImage\n // add a new method to Image class\n models.Image.prototype.commonsURL = commonsURL\n models.Image.prototype.exists = imgExists\n}\nmodule.exports = addMethod\n"],"names":["Hashes","utf8Encode","str","x","y","output","i","l","length","charCodeAt","String","fromCharCode","utf8Decode","ac","c1","c2","c3","arr","join","safe_add","lsw","msw","bit_rol","num","cnt","rstr2hex","input","hexcase","hex_tab","charAt","binb2rstr","binl2rstr","rstr2binl","Array","lo","rstr2binb","rstr2any","encoding","divisor","remainders","q","ld","quotient","dividend","full_length","Math","ceil","floor","log","rstr2b64","b64pad","tab","len","j","triplet","VERSION","Base64","pad","utf8","encode","decode","o1","o2","o3","h1","h2","h3","h4","bits","dec","replace","RegExp","indexOf","setPad","setTab","setUTF8","bool","CRC32","crc","table","iTop","substr","MD5","options","uppercase","hex","s","rstr","b64","any","e","raw","hex_hmac","k","d","rstr_hmac","b64_hmac","any_hmac","vm_test","toLowerCase","setUpperCase","a","binl","key","data","bkey","ipad","opad","hash","concat","olda","oldb","oldc","oldd","b","c","md5_ff","md5_gg","md5_hh","md5_ii","md5_cmn","t","SHA1","binb","olde","w","sha1_ft","sha1_kt","SHA256","sha256_K","sha256_S","X","n","sha256_R","sha256_Ch","z","sha256_Maj","sha256_Sigma0256","sha256_Sigma1256","sha256_Gamma0256","sha256_Gamma1256","m","HASH","W","f","g","h","T1","T2","SHA512","sha512_k","H","int64","s0","s1","Ch","Maj","r1","r2","r3","undefined","int64copy","int64rrot","int64revrrot","int64shr","int64add4","int64add5","int64add","dst","src","shift","w0","w1","w2","w3","RMD160","pa","rmd160_r1","rmd160_r2","rmd160_s1","rmd160_s2","T","h0","A1","B1","C1","D1","E1","A2","B2","C2","D2","E2","rmd160_f","rmd160_K1","rmd160_K2","window","freeExports","exports","global","define","amd","module","server","encodeTitle","file","title","toUpperCase","substring","trim","commonsURL","path","encodeURIComponent","request","url","opts","Promise","resolve","reject","https","get","resp","status","statusCode","test","on","err","imgExists","callback","http","method","then","catch","console","error","mainImage","box","infobox","img","image","section","imgs","images","addMethod","models","Doc","prototype","Image","exists"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/image/builds/wtf-plugin-image.min.js b/plugins/image/builds/wtf-plugin-image.min.js index e9fee5bf..9e7f9369 100644 --- a/plugins/image/builds/wtf-plugin-image.min.js +++ b/plugins/image/builds/wtf-plugin-image.min.js @@ -1 +1 @@ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("https")):"function"==typeof define&&define.amd?define(["https"],t):(n="undefined"!=typeof globalThis?globalThis:n||self).wtfImage=t(n.https)}(this,(function(n){"use strict";function t(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}var e=t(n),r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var o=function(n,t){return n(t={exports:{}},t.exports),t.exports}((function(n,t){!function(){var e;function o(n){var t,e,r,o="",h=-1;if(n&&n.length)for(r=n.length;(h+=1)>>6&31,128|63&t):t<=65535?o+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):t<=2097151&&(o+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t));return o}function h(n,t){var e=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(e>>16)<<16|65535&e}function u(n,t){return n<>>32-t}function i(n,t){for(var e,r=t?"0123456789ABCDEF":"0123456789abcdef",o="",h=0,u=n.length;h>>4&15)+r.charAt(15&e);return o}function f(n){var t,e=32*n.length,r="";for(t=0;t>5]>>>24-t%32&255);return r}function a(n){var t,e=32*n.length,r="";for(t=0;t>5]>>>t%32&255);return r}function c(n){var t,e=8*n.length,r=Array(n.length>>2),o=r.length;for(t=0;t>5]|=(255&n.charCodeAt(t/8))<>2),o=r.length;for(t=0;t>5]|=(255&n.charCodeAt(t/8))<<24-t%32;return r}function D(n,t){var e,r,o,h,u,i,f,a,c=t.length,l=Array();for(h=(i=Array(Math.ceil(n.length/2))).length,e=0;e0;){for(u=Array(),o=0,e=0;e0||r>0)&&(u[u.length]=r);l[l.length]=o,i=u}for(f="",e=l.length-1;e>=0;e--)f+=t.charAt(l[e]);for(a=Math.ceil(8*n.length/(Math.log(t.length)/Math.log(2))),e=f.length;e8*n.length?h+=t:h+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(o>>>6*(3-r)&63);return h}e={VERSION:"1.0.6",Base64:function(){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="=",e=!0;this.encode=function(r){var h,u,i,f="",a=r.length;for(t=t||"=",r=e?o(r):r,h=0;h8*a?t:n.charAt(i>>>6*(3-u)&63);return f},this.decode=function(r){var o,h,u,i,f,a,c,l,D="",B=[];if(!r)return r;o=l=0,r=r.replace(new RegExp("\\"+t,"gi"),"");do{h=(c=n.indexOf(r.charAt(o+=1))<<18|n.indexOf(r.charAt(o+=1))<<12|(f=n.indexOf(r.charAt(o+=1)))<<6|(a=n.indexOf(r.charAt(o+=1))))>>16&255,u=c>>8&255,i=255&c,B[l+=1]=64===f?String.fromCharCode(h):64===a?String.fromCharCode(h,u):String.fromCharCode(h,u,i)}while(o191&&r<224?(o=n.charCodeAt(t+1),i[e]=String.fromCharCode((31&r)<<6|63&o),t+=2):(o=n.charCodeAt(t+1),h=n.charCodeAt(t+2),i[e]=String.fromCharCode((15&r)<<12|(63&o)<<6|63&h),t+=3);return i.join("")}(D):D},this.setPad=function(n){return t=n||t,this},this.setTab=function(t){return n=t||n,this},this.setUTF8=function(n){return"boolean"==typeof n&&(e=n),this}},CRC32:function(n){var t,e,r,h=0,u=0;for(n=o(n),t=["00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ","79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ","84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ","63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ","A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ","51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ","B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ","06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ","E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ","12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ","D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ","33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ","CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ","9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ","7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ","806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ","60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ","AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ","5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ","B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ","05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ","F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ","11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ","D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ","30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ","C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"].join(""),h^=-1,e=0,r=n.length;e>>8^"0x"+t.substr(9*u,8);return(-1^h)>>>0},MD5:function(n){var t=!(!n||"boolean"!=typeof n.uppercase)&&n.uppercase,e=n&&"string"==typeof n.pad?n.pad:"=",r=!n||"boolean"!=typeof n.utf8||n.utf8;function f(n){return a(s(c(n=r?o(n):n),8*n.length))}function l(n,t){var e,h,u,i,f;for(n=r?o(n):n,t=r?o(t):t,(e=c(n)).length>16&&(e=s(e,8*n.length)),h=Array(16),u=Array(16),f=0;f<16;f+=1)h[f]=909522486^e[f],u[f]=1549556828^e[f];return i=s(h.concat(c(t)),512+8*t.length),a(s(u.concat(i),640))}function s(n,t){var e,r,o,u,i,f=1732584193,a=-271733879,c=-1732584194,l=271733878;for(n[t>>5]|=128<>>9<<4)]=t,e=0;e16&&(e=s(e,8*n.length)),h=Array(16),u=Array(16),i=0;i<16;i+=1)h[i]=909522486^e[i],u[i]=1549556828^e[i];return a=s(h.concat(l(t)),512+8*t.length),f(s(u.concat(a),672))}function s(n,t){var e,r,o,i,f,a,c,l,D=Array(80),B=1732584193,s=-271733879,w=-1732584194,F=271733878,E=-1009589776;for(n[t>>5]|=128<<24-t%32,n[15+(t+64>>9<<4)]=t,e=0;e16&&(u=d(u,8*n.length));h<16;h+=1)i[h]=909522486^u[h],a[h]=1549556828^u[h];return e=d(i.concat(l(t)),512+8*t.length),f(d(a.concat(e),768))}function c(n,t){return n>>>t|n<<32-t}function s(n,t){return n>>>t}function C(n,t,e){return n&t^~n&e}function A(n,t,e){return n&t^n&e^t&e}function w(n){return c(n,2)^c(n,13)^c(n,22)}function F(n){return c(n,6)^c(n,11)^c(n,25)}function E(n){return c(n,7)^c(n,18)^s(n,3)}function d(n,e){var r,o,u,i,f,a,l,D,B,d,g,p,y,b=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],m=new Array(64);for(n[e>>5]|=128<<24-e%32,n[15+(e+64>>9<<4)]=e,B=0;B32&&(u=a(u,8*n.length));h<32;h+=1)i[h]=909522486^u[h],c[h]=1549556828^u[h];return e=a(i.concat(l(t)),1024+8*t.length),f(a(c.concat(e),1536))}function a(n,e){var r,o,h,u=new Array(80),i=new Array(16),f=[new c(1779033703,-205731576),new c(-1150833019,-2067093701),new c(1013904242,-23791573),new c(-1521486534,1595750129),new c(1359893119,-1377402159),new c(-1694144372,725511199),new c(528734635,-79577749),new c(1541459225,327033209)],a=new c(0,0),l=new c(0,0),D=new c(0,0),B=new c(0,0),g=new c(0,0),p=new c(0,0),y=new c(0,0),b=new c(0,0),m=new c(0,0),v=new c(0,0),x=new c(0,0),_=new c(0,0),S=new c(0,0),U=new c(0,0),T=new c(0,0),j=new c(0,0),M=new c(0,0);for(void 0===t&&(t=[new c(1116352408,-685199838),new c(1899447441,602891725),new c(-1245643825,-330482897),new c(-373957723,-2121671748),new c(961987163,-213338824),new c(1508970993,-1241133031),new c(-1841331548,-1357295717),new c(-1424204075,-630357736),new c(-670586216,-1560083902),new c(310598401,1164996542),new c(607225278,1323610764),new c(1426881987,-704662302),new c(1925078388,-226784913),new c(-2132889090,991336113),new c(-1680079193,633803317),new c(-1046744716,-815192428),new c(-459576895,-1628353838),new c(-272742522,944711139),new c(264347078,-1953704523),new c(604807628,2007800933),new c(770255983,1495990901),new c(1249150122,1856431235),new c(1555081692,-1119749164),new c(1996064986,-2096016459),new c(-1740746414,-295247957),new c(-1473132947,766784016),new c(-1341970488,-1728372417),new c(-1084653625,-1091629340),new c(-958395405,1034457026),new c(-710438585,-1828018395),new c(113926993,-536640913),new c(338241895,168717936),new c(666307205,1188179964),new c(773529912,1546045734),new c(1294757372,1522805485),new c(1396182291,-1651133473),new c(1695183700,-1951439906),new c(1986661051,1014477480),new c(-2117940946,1206759142),new c(-1838011259,344077627),new c(-1564481375,1290863460),new c(-1474664885,-1136513023),new c(-1035236496,-789014639),new c(-949202525,106217008),new c(-778901479,-688958952),new c(-694614492,1432725776),new c(-200395387,1467031594),new c(275423344,851169720),new c(430227734,-1194143544),new c(506948616,1363258195),new c(659060556,-544281703),new c(883997877,-509917016),new c(958139571,-976659869),new c(1322822218,-482243893),new c(1537002063,2003034995),new c(1747873779,-692930397),new c(1955562222,1575990012),new c(2024104815,1125592928),new c(-2067236844,-1578062990),new c(-1933114872,442776044),new c(-1866530822,593698344),new c(-1538233109,-561857047),new c(-1090935817,-1295615723),new c(-965641998,-479046869),new c(-903397682,-366583396),new c(-779700025,566280711),new c(-354779690,-840897762),new c(-176337025,-294727304),new c(116418474,1914138554),new c(174292421,-1563912026),new c(289380356,-1090974290),new c(460393269,320620315),new c(685471733,587496836),new c(852142971,1086792851),new c(1017036298,365543100),new c(1126000580,-1676669620),new c(1288033470,-885112138),new c(1501505948,-60457430),new c(1607167915,987167468),new c(1816402316,1246189591)]),o=0;o<80;o+=1)u[o]=new c(0,0);for(n[e>>5]|=128<<24-(31&e),n[31+(e+128>>10<<5)]=e,h=n.length,o=0;o>>e|t.h<<32-e,n.h=t.h>>>e|t.l<<32-e}function A(n,t,e){n.l=t.h>>>e|t.l<<32-e,n.h=t.l>>>e|t.h<<32-e}function w(n,t,e){n.l=t.l>>>e|t.h<<32-e,n.h=t.h>>>e}function F(n,t,e){var r=(65535&t.l)+(65535&e.l),o=(t.l>>>16)+(e.l>>>16)+(r>>>16),h=(65535&t.h)+(65535&e.h)+(o>>>16),u=(t.h>>>16)+(e.h>>>16)+(h>>>16);n.l=65535&r|o<<16,n.h=65535&h|u<<16}function E(n,t,e,r,o){var h=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l),u=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(h>>>16),i=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(u>>>16),f=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(i>>>16);n.l=65535&h|u<<16,n.h=65535&i|f<<16}function d(n,t,e,r,o,h){var u=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l)+(65535&h.l),i=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(h.l>>>16)+(u>>>16),f=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(65535&h.h)+(i>>>16),a=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(h.h>>>16)+(f>>>16);n.l=65535&u|i<<16,n.h=65535&f|a<<16}this.hex=function(n){return i(h(n))},this.b64=function(n){return B(h(n),e)},this.any=function(n,t){return D(h(n),t)},this.raw=function(n){return h(n)},this.hex_hmac=function(n,t){return i(u(n,t))},this.b64_hmac=function(n,t){return B(u(n,t),e)},this.any_hmac=function(n,t,e){return D(u(n,t),e)},this.vm_test=function(){return"900150983cd24fb0d6963f7d28e17f72"===hex("abc").toLowerCase()},this.setUpperCase=function(n){return this},this.setPad=function(n){return e=n||e,this},this.setUTF8=function(n){return"boolean"==typeof n&&(r=n),this}},RMD160:function(n){n&&"boolean"==typeof n.uppercase&&n.uppercase;var t=n&&"string"==typeof n.pad?n.pa:"=",e=!n||"boolean"!=typeof n.utf8||n.utf8,r=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],f=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],a=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];function s(n){return A(w(c(n=e?o(n):n),8*n.length))}function C(n,t){n=e?o(n):n,t=e?o(t):t;var r,h,u=c(n),i=Array(16),f=Array(16);for(u.length>16&&(u=w(u,8*n.length)),r=0;r<16;r+=1)i[r]=909522486^u[r],f[r]=1549556828^u[r];return h=w(i.concat(c(t)),512+8*t.length),A(w(f.concat(h),672))}function A(n){var t,e="",r=32*n.length;for(t=0;t>5]>>>t%32&255);return e}function w(n,t){var e,o,i,c,D,B,s,C,A,w,g,p,y,b,m=1732584193,v=4023233417,x=2562383102,_=271733878,S=3285377520;for(n[t>>5]|=128<>>9<<4)]=t,c=n.length,i=0;i{e.default.get(n,t,(n=>{let t=String(n.statusCode)||"",e=/^[23]/.test(t);r(e)})).on("error",(n=>{o(n)}))}))};var i=function(n){return u(this.url(),{method:"HEAD"}).then((function(t){return n&&n(null,t),t})).catch((t=>{console.error(t),n&&n(t,null)}))};var f=function(n={}){return null};return function(n){n.Doc.mainImage=f,n.Image.prototype.commonsURL=h,n.Image.prototype.exists=i}})); +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("https")):"function"==typeof define&&define.amd?define(["https"],t):(n="undefined"!=typeof globalThis?globalThis:n||self).wtfImage=t(n.https)}(this,(function(n){"use strict";function t(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}var e=t(n),r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var o=function(n,t){return n(t={exports:{}},t.exports),t.exports}((function(n,t){!function(){var e;function o(n){var t,e,r,o="",h=-1;if(n&&n.length)for(r=n.length;(h+=1)>>6&31,128|63&t):t<=65535?o+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):t<=2097151&&(o+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t));return o}function h(n,t){var e=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(e>>16)<<16|65535&e}function u(n,t){return n<>>32-t}function i(n,t){for(var e,r=t?"0123456789ABCDEF":"0123456789abcdef",o="",h=0,u=n.length;h>>4&15)+r.charAt(15&e);return o}function f(n){var t,e=32*n.length,r="";for(t=0;t>5]>>>24-t%32&255);return r}function a(n){var t,e=32*n.length,r="";for(t=0;t>5]>>>t%32&255);return r}function c(n){var t,e=8*n.length,r=Array(n.length>>2),o=r.length;for(t=0;t>5]|=(255&n.charCodeAt(t/8))<>2),o=r.length;for(t=0;t>5]|=(255&n.charCodeAt(t/8))<<24-t%32;return r}function D(n,t){var e,r,o,h,u,i,f,a,c=t.length,l=Array();for(h=(i=Array(Math.ceil(n.length/2))).length,e=0;e0;){for(u=Array(),o=0,e=0;e0||r>0)&&(u[u.length]=r);l[l.length]=o,i=u}for(f="",e=l.length-1;e>=0;e--)f+=t.charAt(l[e]);for(a=Math.ceil(8*n.length/(Math.log(t.length)/Math.log(2))),e=f.length;e8*n.length?h+=t:h+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(o>>>6*(3-r)&63);return h}e={VERSION:"1.0.6",Base64:function(){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="=",e=!0;this.encode=function(r){var h,u,i,f="",a=r.length;for(t=t||"=",r=e?o(r):r,h=0;h8*a?t:n.charAt(i>>>6*(3-u)&63);return f},this.decode=function(r){var o,h,u,i,f,a,c,l,D="",s=[];if(!r)return r;o=l=0,r=r.replace(new RegExp("\\"+t,"gi"),"");do{h=(c=n.indexOf(r.charAt(o+=1))<<18|n.indexOf(r.charAt(o+=1))<<12|(f=n.indexOf(r.charAt(o+=1)))<<6|(a=n.indexOf(r.charAt(o+=1))))>>16&255,u=c>>8&255,i=255&c,s[l+=1]=64===f?String.fromCharCode(h):64===a?String.fromCharCode(h,u):String.fromCharCode(h,u,i)}while(o191&&r<224?(o=n.charCodeAt(t+1),i[e]=String.fromCharCode((31&r)<<6|63&o),t+=2):(o=n.charCodeAt(t+1),h=n.charCodeAt(t+2),i[e]=String.fromCharCode((15&r)<<12|(63&o)<<6|63&h),t+=3);return i.join("")}(D):D},this.setPad=function(n){return t=n||t,this},this.setTab=function(t){return n=t||n,this},this.setUTF8=function(n){return"boolean"==typeof n&&(e=n),this}},CRC32:function(n){var t,e,r,h=0,u=0;for(n=o(n),t=["00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ","79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ","84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ","63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ","A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ","51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ","B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ","06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ","E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ","12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ","D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ","33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ","CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ","9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ","7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ","806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ","60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ","AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ","5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ","B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ","05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ","F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ","11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ","D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ","30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ","C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"].join(""),h^=-1,e=0,r=n.length;e>>8^"0x"+t.substr(9*u,8);return(-1^h)>>>0},MD5:function(n){var t=!(!n||"boolean"!=typeof n.uppercase)&&n.uppercase,e=n&&"string"==typeof n.pad?n.pad:"=",r=!n||"boolean"!=typeof n.utf8||n.utf8;function f(n){return a(B(c(n=r?o(n):n),8*n.length))}function l(n,t){var e,h,u,i,f;for(n=r?o(n):n,t=r?o(t):t,(e=c(n)).length>16&&(e=B(e,8*n.length)),h=Array(16),u=Array(16),f=0;f<16;f+=1)h[f]=909522486^e[f],u[f]=1549556828^e[f];return i=B(h.concat(c(t)),512+8*t.length),a(B(u.concat(i),640))}function B(n,t){var e,r,o,u,i,f=1732584193,a=-271733879,c=-1732584194,l=271733878;for(n[t>>5]|=128<>>9<<4)]=t,e=0;e16&&(e=B(e,8*n.length)),h=Array(16),u=Array(16),i=0;i<16;i+=1)h[i]=909522486^e[i],u[i]=1549556828^e[i];return a=B(h.concat(l(t)),512+8*t.length),f(B(u.concat(a),672))}function B(n,t){var e,r,o,i,f,a,c,l,D=Array(80),s=1732584193,B=-271733879,w=-1732584194,F=271733878,E=-1009589776;for(n[t>>5]|=128<<24-t%32,n[15+(t+64>>9<<4)]=t,e=0;e16&&(u=d(u,8*n.length));h<16;h+=1)i[h]=909522486^u[h],a[h]=1549556828^u[h];return e=d(i.concat(l(t)),512+8*t.length),f(d(a.concat(e),768))}function c(n,t){return n>>>t|n<<32-t}function B(n,t){return n>>>t}function C(n,t,e){return n&t^~n&e}function A(n,t,e){return n&t^n&e^t&e}function w(n){return c(n,2)^c(n,13)^c(n,22)}function F(n){return c(n,6)^c(n,11)^c(n,25)}function E(n){return c(n,7)^c(n,18)^B(n,3)}function d(n,e){var r,o,u,i,f,a,l,D,s,d,g,p,y,m=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],b=new Array(64);for(n[e>>5]|=128<<24-e%32,n[15+(e+64>>9<<4)]=e,s=0;s32&&(u=a(u,8*n.length));h<32;h+=1)i[h]=909522486^u[h],c[h]=1549556828^u[h];return e=a(i.concat(l(t)),1024+8*t.length),f(a(c.concat(e),1536))}function a(n,e){var r,o,h,u=new Array(80),i=new Array(16),f=[new c(1779033703,-205731576),new c(-1150833019,-2067093701),new c(1013904242,-23791573),new c(-1521486534,1595750129),new c(1359893119,-1377402159),new c(-1694144372,725511199),new c(528734635,-79577749),new c(1541459225,327033209)],a=new c(0,0),l=new c(0,0),D=new c(0,0),s=new c(0,0),g=new c(0,0),p=new c(0,0),y=new c(0,0),m=new c(0,0),b=new c(0,0),v=new c(0,0),x=new c(0,0),_=new c(0,0),S=new c(0,0),U=new c(0,0),T=new c(0,0),j=new c(0,0),M=new c(0,0);for(void 0===t&&(t=[new c(1116352408,-685199838),new c(1899447441,602891725),new c(-1245643825,-330482897),new c(-373957723,-2121671748),new c(961987163,-213338824),new c(1508970993,-1241133031),new c(-1841331548,-1357295717),new c(-1424204075,-630357736),new c(-670586216,-1560083902),new c(310598401,1164996542),new c(607225278,1323610764),new c(1426881987,-704662302),new c(1925078388,-226784913),new c(-2132889090,991336113),new c(-1680079193,633803317),new c(-1046744716,-815192428),new c(-459576895,-1628353838),new c(-272742522,944711139),new c(264347078,-1953704523),new c(604807628,2007800933),new c(770255983,1495990901),new c(1249150122,1856431235),new c(1555081692,-1119749164),new c(1996064986,-2096016459),new c(-1740746414,-295247957),new c(-1473132947,766784016),new c(-1341970488,-1728372417),new c(-1084653625,-1091629340),new c(-958395405,1034457026),new c(-710438585,-1828018395),new c(113926993,-536640913),new c(338241895,168717936),new c(666307205,1188179964),new c(773529912,1546045734),new c(1294757372,1522805485),new c(1396182291,-1651133473),new c(1695183700,-1951439906),new c(1986661051,1014477480),new c(-2117940946,1206759142),new c(-1838011259,344077627),new c(-1564481375,1290863460),new c(-1474664885,-1136513023),new c(-1035236496,-789014639),new c(-949202525,106217008),new c(-778901479,-688958952),new c(-694614492,1432725776),new c(-200395387,1467031594),new c(275423344,851169720),new c(430227734,-1194143544),new c(506948616,1363258195),new c(659060556,-544281703),new c(883997877,-509917016),new c(958139571,-976659869),new c(1322822218,-482243893),new c(1537002063,2003034995),new c(1747873779,-692930397),new c(1955562222,1575990012),new c(2024104815,1125592928),new c(-2067236844,-1578062990),new c(-1933114872,442776044),new c(-1866530822,593698344),new c(-1538233109,-561857047),new c(-1090935817,-1295615723),new c(-965641998,-479046869),new c(-903397682,-366583396),new c(-779700025,566280711),new c(-354779690,-840897762),new c(-176337025,-294727304),new c(116418474,1914138554),new c(174292421,-1563912026),new c(289380356,-1090974290),new c(460393269,320620315),new c(685471733,587496836),new c(852142971,1086792851),new c(1017036298,365543100),new c(1126000580,-1676669620),new c(1288033470,-885112138),new c(1501505948,-60457430),new c(1607167915,987167468),new c(1816402316,1246189591)]),o=0;o<80;o+=1)u[o]=new c(0,0);for(n[e>>5]|=128<<24-(31&e),n[31+(e+128>>10<<5)]=e,h=n.length,o=0;o>>e|t.h<<32-e,n.h=t.h>>>e|t.l<<32-e}function A(n,t,e){n.l=t.h>>>e|t.l<<32-e,n.h=t.l>>>e|t.h<<32-e}function w(n,t,e){n.l=t.l>>>e|t.h<<32-e,n.h=t.h>>>e}function F(n,t,e){var r=(65535&t.l)+(65535&e.l),o=(t.l>>>16)+(e.l>>>16)+(r>>>16),h=(65535&t.h)+(65535&e.h)+(o>>>16),u=(t.h>>>16)+(e.h>>>16)+(h>>>16);n.l=65535&r|o<<16,n.h=65535&h|u<<16}function E(n,t,e,r,o){var h=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l),u=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(h>>>16),i=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(u>>>16),f=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(i>>>16);n.l=65535&h|u<<16,n.h=65535&i|f<<16}function d(n,t,e,r,o,h){var u=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l)+(65535&h.l),i=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(h.l>>>16)+(u>>>16),f=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(65535&h.h)+(i>>>16),a=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(h.h>>>16)+(f>>>16);n.l=65535&u|i<<16,n.h=65535&f|a<<16}this.hex=function(n){return i(h(n))},this.b64=function(n){return s(h(n),e)},this.any=function(n,t){return D(h(n),t)},this.raw=function(n){return h(n)},this.hex_hmac=function(n,t){return i(u(n,t))},this.b64_hmac=function(n,t){return s(u(n,t),e)},this.any_hmac=function(n,t,e){return D(u(n,t),e)},this.vm_test=function(){return"900150983cd24fb0d6963f7d28e17f72"===hex("abc").toLowerCase()},this.setUpperCase=function(n){return this},this.setPad=function(n){return e=n||e,this},this.setUTF8=function(n){return"boolean"==typeof n&&(r=n),this}},RMD160:function(n){n&&"boolean"==typeof n.uppercase&&n.uppercase;var t=n&&"string"==typeof n.pad?n.pa:"=",e=!n||"boolean"!=typeof n.utf8||n.utf8,r=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],f=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],a=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];function B(n){return A(w(c(n=e?o(n):n),8*n.length))}function C(n,t){n=e?o(n):n,t=e?o(t):t;var r,h,u=c(n),i=Array(16),f=Array(16);for(u.length>16&&(u=w(u,8*n.length)),r=0;r<16;r+=1)i[r]=909522486^u[r],f[r]=1549556828^u[r];return h=w(i.concat(c(t)),512+8*t.length),A(w(f.concat(h),672))}function A(n){var t,e="",r=32*n.length;for(t=0;t>5]>>>t%32&255);return e}function w(n,t){var e,o,i,c,D,s,B,C,A,w,g,p,y,m,b=1732584193,v=4023233417,x=2562383102,_=271733878,S=3285377520;for(n[t>>5]|=128<>>9<<4)]=t,c=n.length,i=0;i{e.default.get(n,t,(n=>{let t=String(n.statusCode)||"",e=/^[23]/.test(t);r(e)})).on("error",(n=>{o(n)}))}))};var i=function(n){return u(this.url(),{method:"HEAD"}).then((function(t){return n&&n(null,t),t})).catch((t=>{console.error(t),n&&n(t,null)}))};var f=function(){let n=this.infobox();if(n){let t=n.image();if(t)return t}let t=this.section().images();return 1===t.length?t[0]:null};return function(n){n.Doc.prototype.mainImage=f,n.Image.prototype.commonsURL=h,n.Image.prototype.exists=i}})); diff --git a/plugins/image/builds/wtf-plugin-image.mjs b/plugins/image/builds/wtf-plugin-image.mjs index b35b67eb..66032dbf 100644 --- a/plugins/image/builds/wtf-plugin-image.mjs +++ b/plugins/image/builds/wtf-plugin-image.mjs @@ -1,4 +1,4 @@ -/* wtf-plugin-image 0.2.0 MIT */ +/* wtf-plugin-image 0.3.0 MIT */ import https from 'https'; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; @@ -1846,14 +1846,31 @@ const imgExists = function (callback) { var imgExists_1 = imgExists; // is there a good image of this -const mainImage = function (opt = {}) { +const mainImage = function () { + let box = this.infobox(); + + if (box) { + let img = box.image(); + + if (img) { + return img; + } + } + + let s = this.section(); + let imgs = s.images(); + + if (imgs.length === 1) { + return imgs[0]; + } + return null; }; var mainImage_1 = mainImage; const addMethod = function (models) { - models.Doc.mainImage = mainImage_1; // add a new method to Image class + models.Doc.prototype.mainImage = mainImage_1; // add a new method to Image class models.Image.prototype.commonsURL = urlHash; models.Image.prototype.exists = imgExists_1; diff --git a/plugins/image/package.json b/plugins/image/package.json index a3793fbe..229b7b87 100644 --- a/plugins/image/package.json +++ b/plugins/image/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-image", "description": "image plugin for wtf_wikipedia", - "version": "0.2.0", + "version": "0.3.0", "main": "./builds/wtf-plugin-image.js", "unpkg": "./builds/wtf-plugin-image.min.js", "module": "./builds/wtf-plugin-image.mjs", diff --git a/plugins/latex/tests/_lib.js b/plugins/latex/tests/_lib.js index 955cc178..446cf771 100644 --- a/plugins/latex/tests/_lib.js +++ b/plugins/latex/tests/_lib.js @@ -2,7 +2,7 @@ if (typeof process !== undefined && typeof module !== undefined) { let wtf if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') - wtf = require('../../../types') + wtf = require('../../../') wtf.extend(require(`..`)) } else { wtf = require('../../../src') diff --git a/plugins/markdown/tests/_lib.js b/plugins/markdown/tests/_lib.js index 955cc178..446cf771 100644 --- a/plugins/markdown/tests/_lib.js +++ b/plugins/markdown/tests/_lib.js @@ -2,7 +2,7 @@ if (typeof process !== undefined && typeof module !== undefined) { let wtf if (process.env.TESTENV === 'prod') { console.log('🧢 - testing production') - wtf = require('../../../types') + wtf = require('../../../') wtf.extend(require(`..`)) } else { wtf = require('../../../src') diff --git a/plugins/person/builds/wtf-plugin-person.js b/plugins/person/builds/wtf-plugin-person.js index 46f4bdd6..19c3cafd 100644 --- a/plugins/person/builds/wtf-plugin-person.js +++ b/plugins/person/builds/wtf-plugin-person.js @@ -1,4 +1,4 @@ -/* wtf-plugin-person 0.1.0 MIT */ +/* wtf-plugin-person 0.2.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -4822,7 +4822,7 @@ }; const byTemplate = function (doc) { - let templates = doc.templates(); + let templates = doc.templates().map(tmpl => tmpl.json()); for (let i = 0; i < templates.length; i++) { let title = templates[i].template || ''; @@ -4841,7 +4841,8 @@ let bio = doc.template('WikiProject Biography'); if (bio) { - //living blp BLP + bio = bio.json(); //living blp BLP + if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') { return true; } diff --git a/plugins/person/builds/wtf-plugin-person.js.map b/plugins/person/builds/wtf-plugin-person.js.map index fb2ed395..d04bc8e0 100644 --- a/plugins/person/builds/wtf-plugin-person.js.map +++ b/plugins/person/builds/wtf-plugin-person.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-person.js","sources":["../src/_lib/_infoboxes.js","../src/getInfobox.js","../node_modules/spacetime/builds/spacetime.mjs","../src/getSentence.js","../src/birthDate/byCategory.js","../src/parseDate.js","../src/birthDate/index.js","../src/birthPlace/index.js","../src/isAlive/byCategory.js","../src/isAlive/byTemplate.js","../src/isAlive/index.js","../src/deathDate/byCategory.js","../src/deathDate/index.js","../src/deathPlace/index.js","../src/nationality/index.js","../src/index.js"],"sourcesContent":["// from ./plugins/classify/infobox, April 15 2020\n// https://en.wikipedia.org/wiki/Category:People_and_person_infobox_templates\nmodule.exports = {\n actor: true,\n adult_biography: true,\n afl_biography: true,\n alpine_ski_racer: true,\n archbishop: true,\n architect: true,\n artist: true,\n athlete: true,\n baseball_biography: true,\n basketball_biography: true,\n boxer: true,\n canadianmp: true,\n cfl_player: true,\n chef: true,\n chess_player: true,\n christian_leader: true,\n college_coach: true,\n college_football_player: true,\n comedian: true,\n comics_creator: true,\n cricketer: true,\n criminal: true,\n cyclist: true,\n economist: true,\n engineer: true,\n fashion_designer: true,\n field_hockey_player: true,\n figure_skater: true,\n football_biography: true,\n gaa_player: true,\n golfer: true,\n governor: true,\n gridiron_football_person: true,\n gymnast: true,\n handball_biography: true,\n hindu_leader: true,\n horseracing_personality: true,\n ice_hockey_player: true,\n indian_politician: true,\n judge: true,\n lacrosse_player: true,\n martial_artist: true,\n mass_murderer: true,\n medical_person: true,\n military_person: true,\n minister: true,\n mlb_player: true,\n model: true,\n monarch: true,\n mp: true,\n nascar_driver: true,\n nba_biography: true,\n nfl_biography: true,\n nfl_player: true,\n officeholder: true,\n person: true,\n philosopher: true,\n police_officer: true,\n politician: true,\n 'politician_(general)': true,\n presenter: true,\n president: true,\n professional_wrestler: true,\n racing_driver: true,\n religious_biography: true,\n roman_emperor: true,\n royalty: true,\n rugby_biography: true,\n rugby_league_biography: true,\n saint: true,\n scholar: true,\n scientist: true,\n skier: true,\n sportsperson: true,\n squash_player: true,\n state_representative: true,\n state_senator: true,\n swimmer: true,\n tennis_biography: true,\n volleyball_biography: true,\n volleyball_player: true,\n wrc_driver: true,\n writer: true,\n 'hockey team player': true,\n 'snooker player': true,\n bishop: true,\n 'football biography': true,\n 'military person': true,\n 'baseball biography': true,\n 'ice hockey player': true,\n 'nfl player': true,\n 'christian leader': true,\n congressman: true,\n 'basketball biography': true,\n 'comics creator': true,\n 'professional wrestler': true,\n 'college coach': true,\n 'tennis biography': true,\n 'afl biography': true,\n 'nfl biography': true,\n 'rugby biography': true,\n 'rugby league biography': true,\n 'prime minister': true,\n 'nba biography': true,\n 'figure skater': true,\n 'f1 driver': true,\n 'gridiron football person': true,\n 'indian politician': true,\n 'racing driver': true,\n 'martial artist': true,\n 'chinese-language singer and actor': true,\n astronaut: true,\n senator: true,\n 'nascar driver': true,\n 'adult biography': true,\n 'state representative': true,\n 'state senator': true,\n 'coa wide': true,\n 'religious biography': true,\n 'chess player': true,\n 'pageant titleholder': true,\n 'gaa player': true,\n 'us cabinet official': true,\n}\n","const mapping = require('./_lib/_infoboxes')\n\nconst byInfobox = function (doc, prop) {\n let infoboxes = doc.infoboxes()\n for (let i = 0; i < infoboxes.length; i++) {\n let inf = infoboxes[i]\n let type = inf.type()\n type = type.toLowerCase()\n type = type.trim()\n\n if (mapping.hasOwnProperty(type)) {\n let s = inf.get(prop)\n if (s) {\n return s.text()\n }\n }\n }\n return null\n}\nmodule.exports = byInfobox\n","/* spencermountain/spacetime 6.14.0 Apache 2.0 */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date\n\nvar toUtc = function toUtc(dstChange, offset, year) {\n var _dstChange$split = dstChange.split('/'),\n _dstChange$split2 = _slicedToArray(_dstChange$split, 2),\n month = _dstChange$split2[0],\n rest = _dstChange$split2[1];\n\n var _rest$split = rest.split(':'),\n _rest$split2 = _slicedToArray(_rest$split, 2),\n day = _rest$split2[0],\n hour = _rest$split2[1];\n\n return Date.UTC(year, month - 1, day, hour) - offset * MSEC_IN_HOUR;\n}; // compare epoch with dst change events (in utc)\n\n\nvar inSummerTime = function inSummerTime(epoch, start, end, summerOffset, winterOffset) {\n var year = new Date(epoch).getUTCFullYear();\n var startUtc = toUtc(start, winterOffset, year);\n var endUtc = toUtc(end, summerOffset, year); // simple number comparison now\n\n return epoch >= startUtc && epoch < endUtc;\n};\n\nvar summerTime = inSummerTime;\n\n// it reproduces some things in ./index.js, but speeds up spacetime considerably\n\nvar quickOffset = function quickOffset(s) {\n var zones = s.timezones;\n var obj = zones[s.tz];\n\n if (obj === undefined) {\n console.warn(\"Warning: couldn't find timezone \" + s.tz);\n return 0;\n }\n\n if (obj.dst === undefined) {\n return obj.offset;\n } //get our two possible offsets\n\n\n var jul = obj.offset;\n var dec = obj.offset + 1; // assume it's the same for now\n\n if (obj.hem === 'n') {\n dec = jul - 1;\n }\n\n var split = obj.dst.split('->');\n var inSummer = summerTime(s.epoch, split[0], split[1], jul, dec);\n\n if (inSummer === true) {\n return jul;\n }\n\n return dec;\n};\n\nvar quick = quickOffset;\n\nvar _build = {\n\t\"9|s\": \"2/dili,2/jayapura\",\n\t\"9|n\": \"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau\",\n\t\"9.5|s|04/04:03->10/03:02\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n\t\"9.5|s\": \"4/darwin,4/north\",\n\t\"8|s|03/08:01->10/04:00\": \"12/casey\",\n\t\"8|s\": \"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west\",\n\t\"8|n\": \"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator\",\n\t\"8.75|s\": \"4/eucla\",\n\t\"7|s\": \"12/davis,2/jakarta,9/christmas\",\n\t\"7|n\": \"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh\",\n\t\"6|s\": \"12/vostok\",\n\t\"6|n\": \"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu\",\n\t\"6.5|n\": \"2/rangoon,9/cocos,2/yangon\",\n\t\"5|s\": \"12/mawson,9/kerguelen\",\n\t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad\",\n\t\"5.75|n\": \"2/katmandu,2/kathmandu\",\n\t\"5.5|n\": \"2/calcutta,2/colombo,2/kolkata\",\n\t\"4|s\": \"9/reunion\",\n\t\"4|n\": \"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius\",\n\t\"4.5|n|03/22:00->09/21:24\": \"2/tehran\",\n\t\"4.5|n\": \"2/kabul\",\n\t\"3|s\": \"12/syowa,9/antananarivo\",\n\t\"3|n|03/28:03->10/31:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia\",\n\t\"3|n|03/28:02->10/31:03\": \"8/chisinau,8/tiraspol\",\n\t\"3|n|03/28:00->10/30:24\": \"2/beirut\",\n\t\"3|n|03/27:00->10/30:01\": \"2/gaza,2/hebron\",\n\t\"3|n|03/26:02->10/31:02\": \"2/jerusalem,2/tel_aviv\",\n\t\"3|n|03/26:00->10/29:01\": \"2/amman\",\n\t\"3|n|03/26:00->10/28:24\": \"2/damascus\",\n\t\"3|n\": \"0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul\",\n\t\"2|s|03/28:02->10/31:02\": \"12/troll\",\n\t\"2|s\": \"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\n\t\"2|n|03/28:02->10/31:03\": \"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen\",\n\t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n\t\"1|s\": \"0/brazzaville,0/kinshasa,0/luanda,0/windhoek\",\n\t\"1|n|04/11:03->05/16:02\": \"0/casablanca,0/el_aaiun\",\n\t\"1|n|03/28:01->10/31:02\": \"3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast\",\n\t\"1|n\": \"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\n\t\"14|n\": \"11/kiritimati\",\n\t\"13|s|04/04:04->09/26:03\": \"11/apia\",\n\t\"13|s|01/15:02->11/05:03\": \"11/tongatapu\",\n\t\"13|n\": \"11/enderbury,11/fakaofo\",\n\t\"12|s|04/04:03->09/26:02\": \"12/mcmurdo,11/auckland,12/south_pole\",\n\t\"12|s|01/17:03->11/14:02\": \"11/fiji\",\n\t\"12|n\": \"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis\",\n\t\"12.75|s|04/04:03->04/04:02\": \"11/chatham\",\n\t\"11|s|04/04:03->10/03:02\": \"12/macquarie\",\n\t\"11|s\": \"11/bougainville\",\n\t\"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei\",\n\t\"11.5|n|04/04:03->10/03:02\": \"11/norfolk\",\n\t\"10|s|04/04:03->10/03:02\": \"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria\",\n\t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland\",\n\t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap\",\n\t\"10.5|s|04/04:01->10/03:02\": \"4/lord_howe,4/lhi\",\n\t\"0|n|03/28:00->10/31:01\": \"1/scoresbysund,3/azores\",\n\t\"0|n\": \"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu\",\n\t\"-9|n|03/14:02->11/07:02\": \"1/adak,1/atka,us/aleutian\",\n\t\"-9|n\": \"11/gambier\",\n\t\"-9.5|n\": \"11/marquesas\",\n\t\"-8|n|03/14:02->11/07:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska\",\n\t\"-8|n\": \"11/pitcairn\",\n\t\"-7|n|03/14:02->11/07:02\": \"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific\",\n\t\"-7|n|03/08:02->11/01:01\": \"1/dawson,1/whitehorse,6/yukon\",\n\t\"-7|n\": \"1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona\",\n\t\"-6|s|04/03:22->09/04:22\": \"11/easter,7/easterisland\",\n\t\"-6|n|04/04:02->10/31:02\": \"1/chihuahua,1/mazatlan,10/bajasur\",\n\t\"-6|n|03/14:02->11/07:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain\",\n\t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan\",\n\t\"-5|s\": \"1/lima,1/rio_branco,1/porto_acre,5/acre\",\n\t\"-5|n|04/04:02->10/31:02\": \"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general\",\n\t\"-5|n|03/14:02->11/07:02\": \"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke\",\n\t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n\t\"-5|n\": \"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan\",\n\t\"-4|s|05/13:23->08/13:01\": \"12/palmer\",\n\t\"-4|s|04/03:24->09/05:00\": \"1/santiago,7/continental\",\n\t\"-4|s|03/27:24->10/03:00\": \"1/asuncion\",\n\t\"-4|s|02/16:24->11/03:00\": \"1/campo_grande,1/cuiaba\",\n\t\"-4|s\": \"1/la_paz,1/manaus,5/west\",\n\t\"-4|n|03/14:02->11/07:02\": \"1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan\",\n\t\"-4|n|03/14:00->11/07:01\": \"1/havana\",\n\t\"-4|n|03/12:03->11/05:01\": \"1/indiana,1/kentucky\",\n\t\"-4|n\": \"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\n\t\"-3|s\": \"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east\",\n\t\"-3|n|03/14:02->11/07:02\": \"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\n\t\"-3|n\": \"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem\",\n\t\"-2|n|03/27:22->10/30:23\": \"1/godthab,1/nuuk\",\n\t\"-2|n|03/14:02->11/07:02\": \"1/miquelon\",\n\t\"-2|n\": \"1/noronha,3/south_georgia,5/denoronha\",\n\t\"-2.5|n|03/14:02->11/07:02\": \"1/st_johns,6/newfoundland\",\n\t\"-1|n\": \"3/cape_verde\",\n\t\"-11|n\": \"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa\",\n\t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii\"\n};\n\nvar _build$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': _build\n});\n\n//prefixes for iana names..\nvar _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc'];\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar data = getCjsExportFromNamespace(_build$1);\n\nvar all = {};\nObject.keys(data).forEach(function (k) {\n var split = k.split('|');\n var obj = {\n offset: Number(split[0]),\n hem: split[1]\n };\n\n if (split[2]) {\n obj.dst = split[2];\n }\n\n var names = data[k].split(',');\n names.forEach(function (str) {\n str = str.replace(/(^[0-9]+)\\//, function (before, num) {\n num = Number(num);\n return _prefixes[num] + '/';\n });\n all[str] = obj;\n });\n});\nall['utc'] = {\n offset: 0,\n hem: 'n' //default to northern hemisphere - (sorry!)\n\n}; //add etc/gmt+n\n\nfor (var i = -14; i <= 14; i += 0.5) {\n var num = i;\n\n if (num > 0) {\n num = '+' + num;\n }\n\n var name = 'etc/gmt' + num;\n all[name] = {\n offset: i * -1,\n //they're negative!\n hem: 'n' //(sorry)\n\n };\n name = 'utc/gmt' + num; //this one too, why not.\n\n all[name] = {\n offset: i * -1,\n hem: 'n'\n };\n}\n\nvar unpack = all;\n\n//find the implicit iana code for this machine.\n//safely query the Intl object\n//based on - https://bitbucket.org/pellepim/jstimezonedetect/src\nvar fallbackTZ = 'utc'; //\n//this Intl object is not supported often, yet\n\nvar safeIntl = function safeIntl() {\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return null;\n }\n\n var format = Intl.DateTimeFormat();\n\n if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n return null;\n }\n\n var timezone = format.resolvedOptions().timeZone;\n\n if (!timezone) {\n return null;\n }\n\n return timezone.toLowerCase();\n};\n\nvar guessTz = function guessTz() {\n var timezone = safeIntl();\n\n if (timezone === null) {\n return fallbackTZ;\n }\n\n return timezone;\n}; //do it once per computer\n\n\nvar guessTz_1 = guessTz;\n\nvar isOffset = /(\\-?[0-9]+)h(rs)?/i;\nvar isNumber = /(\\-?[0-9]+)/;\nvar utcOffset = /utc([\\-+]?[0-9]+)/i;\nvar gmtOffset = /gmt([\\-+]?[0-9]+)/i;\n\nvar toIana = function toIana(num) {\n num = Number(num);\n\n if (num >= -13 && num <= 13) {\n num = num * -1; //it's opposite!\n\n num = (num > 0 ? '+' : '') + num; //add plus sign\n\n return 'etc/gmt' + num;\n }\n\n return null;\n};\n\nvar parseOffset$1 = function parseOffset(tz) {\n // '+5hrs'\n var m = tz.match(isOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'utc+5'\n\n\n m = tz.match(utcOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'GMT-5' (not opposite)\n\n\n m = tz.match(gmtOffset);\n\n if (m !== null) {\n var num = Number(m[1]) * -1;\n return toIana(num);\n } // '+5'\n\n\n m = tz.match(isNumber);\n\n if (m !== null) {\n return toIana(m[1]);\n }\n\n return null;\n};\n\nvar parseOffset_1$1 = parseOffset$1;\n\nvar local = guessTz_1(); //add all the city names by themselves\n\nvar cities = Object.keys(unpack).reduce(function (h, k) {\n var city = k.split('/')[1] || '';\n city = city.replace(/_/g, ' ');\n h[city] = k;\n return h;\n}, {}); //try to match these against iana form\n\nvar normalize = function normalize(tz) {\n tz = tz.replace(/ time/g, '');\n tz = tz.replace(/ (standard|daylight|summer)/g, '');\n tz = tz.replace(/\\b(east|west|north|south)ern/g, '$1');\n tz = tz.replace(/\\b(africa|america|australia)n/g, '$1');\n tz = tz.replace(/\\beuropean/g, 'europe');\n tz = tz.replace(/\\islands/g, 'island');\n return tz;\n}; // try our best to reconcile the timzone to this given string\n\n\nvar lookupTz = function lookupTz(str, zones) {\n if (!str) {\n return local;\n }\n\n if (typeof str !== 'string') {\n console.error(\"Timezone must be a string - recieved: '\", str, \"'\\n\");\n }\n\n var tz = str.trim(); // let split = str.split('/')\n //support long timezones like 'America/Argentina/Rio_Gallegos'\n // if (split.length > 2 && zones.hasOwnProperty(tz) === false) {\n // tz = split[0] + '/' + split[1]\n // }\n\n tz = tz.toLowerCase();\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //lookup more loosely..\n\n\n tz = normalize(tz);\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //try city-names\n\n\n if (cities.hasOwnProperty(tz) === true) {\n return cities[tz];\n } // //try to parse '-5h'\n\n\n if (/[0-9]/.test(tz) === true) {\n var id = parseOffset_1$1(tz);\n\n if (id) {\n return id;\n }\n }\n\n throw new Error(\"Spacetime: Cannot find timezone named: '\" + str + \"'. Please enter an IANA timezone id.\");\n};\n\nvar find = lookupTz;\n\nvar o = {\n millisecond: 1\n};\no.second = 1000;\no.minute = 60000;\no.hour = 3.6e6; // dst is supported post-hoc\n\no.day = 8.64e7; //\n\no.date = o.day;\no.month = 8.64e7 * 29.5; //(average)\n\no.week = 6.048e8;\no.year = 3.154e10; // leap-years are supported post-hoc\n//add plurals\n\nObject.keys(o).forEach(function (k) {\n o[k + 's'] = o[k];\n});\nvar milliseconds = o;\n\nvar walk = function walk(s, n, fn, unit, previous) {\n var current = s.d[fn]();\n\n if (current === n) {\n return; //already there\n }\n\n var startUnit = previous === null ? null : s.d[previous]();\n var original = s.epoch; //try to get it as close as we can\n\n var diff = n - current;\n s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative\n // console.log(unit, diff)\n\n if (unit === 'day') {\n // s.epoch -= ms.minute\n //but don't push it over a month\n if (Math.abs(diff) > 28 && n < 28) {\n s.epoch += milliseconds.hour;\n }\n } // 1st time: oops, did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...?\n } //repair it if we've gone too far or something\n //(go by half-steps, just in case)\n\n\n var halfStep = milliseconds[unit] / 2;\n\n while (s.d[fn]() < n) {\n s.epoch += halfStep;\n }\n\n while (s.d[fn]() > n) {\n s.epoch -= halfStep;\n } // 2nd time: did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original;\n }\n}; //find the desired date by a increment/check while loop\n\n\nvar units$3 = {\n year: {\n valid: function valid(n) {\n return n > -4000 && n < 4000;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getFullYear', 'year', null);\n }\n },\n month: {\n valid: function valid(n) {\n return n >= 0 && n <= 11;\n },\n walkTo: function walkTo(s, n) {\n var d = s.d;\n var current = d.getMonth();\n var original = s.epoch;\n var startUnit = d.getFullYear();\n\n if (current === n) {\n return;\n } //try to get it as close as we can..\n\n\n var diff = n - current;\n s.epoch += milliseconds.day * (diff * 28); //special case\n //oops, did we change the year? revert it.\n\n if (startUnit !== s.d.getFullYear()) {\n s.epoch = original;\n } //increment by day\n\n\n while (s.d.getMonth() < n) {\n s.epoch += milliseconds.day;\n }\n\n while (s.d.getMonth() > n) {\n s.epoch -= milliseconds.day;\n }\n }\n },\n date: {\n valid: function valid(n) {\n return n > 0 && n <= 31;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getDate', 'day', 'getMonth');\n }\n },\n hour: {\n valid: function valid(n) {\n return n >= 0 && n < 24;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getHours', 'hour', 'getDate');\n }\n },\n minute: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getMinutes', 'minute', 'getHours');\n }\n },\n second: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.seconds(n).epoch;\n }\n },\n millisecond: {\n valid: function valid(n) {\n return n >= 0 && n < 1000;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.milliseconds(n).epoch;\n }\n }\n};\n\nvar walkTo = function walkTo(s, wants) {\n var keys = Object.keys(units$3);\n var old = s.clone();\n\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n var n = wants[k];\n\n if (n === undefined) {\n n = old[k]();\n }\n\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n } //make-sure it's valid\n\n\n if (!units$3[k].valid(n)) {\n s.epoch = null;\n\n if (s.silent === false) {\n console.warn('invalid ' + k + ': ' + n);\n }\n\n return;\n }\n\n units$3[k].walkTo(s, n);\n }\n\n return;\n};\n\nvar walk_1 = walkTo;\n\nvar shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec'];\nvar longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\nfunction buildMapping() {\n var obj = {\n sep: 8 //support this format\n\n };\n\n for (var i = 0; i < shortMonths.length; i++) {\n obj[shortMonths[i]] = i;\n }\n\n for (var _i = 0; _i < longMonths.length; _i++) {\n obj[longMonths[_i]] = _i;\n }\n\n return obj;\n}\n\nvar months$1 = {\n \"short\": function short() {\n return shortMonths;\n },\n \"long\": function long() {\n return longMonths;\n },\n mapping: function mapping() {\n return buildMapping();\n },\n set: function set(i18n) {\n shortMonths = i18n[\"short\"] || shortMonths;\n longMonths = i18n[\"long\"] || longMonths;\n }\n};\n\n//pull-apart ISO offsets, like \"+0100\"\nvar parseOffset = function parseOffset(s, offset) {\n if (!offset) {\n return s;\n } //this is a fancy-move\n\n\n if (offset === 'Z' || offset === 'z') {\n offset = '+0000';\n } // according to ISO8601, tz could be hh:mm, hhmm or hh\n // so need few more steps before the calculation.\n\n\n var num = 0; // for (+-)hh:mm\n\n if (/^[\\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) {\n //support \"+01:00\"\n if (/:00/.test(offset) === true) {\n offset = offset.replace(/:00/, '');\n } //support \"+01:30\"\n\n\n if (/:30/.test(offset) === true) {\n offset = offset.replace(/:30/, '.5');\n }\n } // for (+-)hhmm\n\n\n if (/^[\\+-]?[0-9]{4}$/.test(offset)) {\n offset = offset.replace(/30$/, '.5');\n }\n\n num = parseFloat(offset); //divide by 100 or 10 - , \"+0100\", \"+01\"\n\n if (Math.abs(num) > 100) {\n num = num / 100;\n } //okay, try to match it to a utc timezone\n //remember - this is opposite! a -5 offset maps to Etc/GMT+5 ¯\\_(:/)_/¯\n //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem\n\n\n num *= -1;\n\n if (num >= 0) {\n num = '+' + num;\n }\n\n var tz = 'etc/gmt' + num;\n var zones = s.timezones;\n\n if (zones[tz]) {\n // log a warning if we're over-writing a given timezone?\n // console.log('changing timezone to: ' + tz)\n s.tz = tz;\n }\n\n return s;\n};\n\nvar parseOffset_1 = parseOffset;\n\nvar parseTime = function parseTime(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n str = str.replace(/^\\s+/, '').toLowerCase(); //trim\n //formal time formats - 04:30.23\n\n var arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\\.]?([0-9]{1,4})?/);\n\n if (arr !== null) {\n //validate it a little\n var h = Number(arr[1]);\n\n if (h < 0 || h > 24) {\n return s.startOf('day');\n }\n\n var m = Number(arr[2]); //don't accept '5:3pm'\n\n if (arr[2].length < 2 || m < 0 || m > 59) {\n return s.startOf('day');\n }\n\n if (arr[4] > 999) {\n // fix overflow issue with milliseconds, if input is longer than standard (e.g. 2017-08-06T09:00:00.123456Z)\n arr[4] = parseInt(\"\".concat(arr[4]).substring(0, 3), 10);\n }\n\n s = s.hour(h);\n s = s.minute(m);\n s = s.seconds(arr[3] || 0);\n s = s.millisecond(arr[4] || 0); //parse-out am/pm\n\n var ampm = str.match(/[\\b0-9](am|pm)\\b/);\n\n if (ampm !== null && ampm[1]) {\n s = s.ampm(ampm[1]);\n }\n\n return s;\n } //try an informal form - 5pm (no minutes)\n\n\n arr = str.match(/([0-9]+) ?(am|pm)/);\n\n if (arr !== null && arr[1]) {\n var _h = Number(arr[1]); //validate it a little..\n\n\n if (_h > 12 || _h < 1) {\n return s.startOf('day');\n }\n\n s = s.hour(arr[1] || 0);\n s = s.ampm(arr[2]);\n s = s.startOf('hour');\n return s;\n } //no time info found, use start-of-day\n\n\n s = s.startOf('day');\n return s;\n};\n\nvar parseTime_1 = parseTime;\n\nvar monthLengths = [31, // January - 31 days\n28, // February - 28 days in a common year and 29 days in leap years\n31, // March - 31 days\n30, // April - 30 days\n31, // May - 31 days\n30, // June - 30 days\n31, // July - 31 days\n31, // August - 31 days\n30, // September - 30 days\n31, // October - 31 days\n30, // November - 30 days\n31 // December - 31 days\n];\nvar monthLengths_1 = monthLengths; // 28 - feb\n\nvar fns = createCommonjsModule(function (module, exports) {\n //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html\n exports.isLeapYear = function (year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }; // unsurprisingly-nasty `typeof date` call\n\n\n exports.isDate = function (d) {\n return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf());\n };\n\n exports.isArray = function (input) {\n return Object.prototype.toString.call(input) === '[object Array]';\n };\n\n exports.isObject = function (input) {\n return Object.prototype.toString.call(input) === '[object Object]';\n };\n\n exports.isBoolean = function (input) {\n return Object.prototype.toString.call(input) === '[object Boolean]';\n };\n\n exports.zeroPad = function (str) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var pad = '0';\n str = str + '';\n return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str;\n };\n\n exports.titleCase = function (str) {\n if (!str) {\n return '';\n }\n\n return str[0].toUpperCase() + str.substr(1);\n };\n\n exports.ordinal = function (i) {\n var j = i % 10;\n var k = i % 100;\n\n if (j === 1 && k !== 11) {\n return i + 'st';\n }\n\n if (j === 2 && k !== 12) {\n return i + 'nd';\n }\n\n if (j === 3 && k !== 13) {\n return i + 'rd';\n }\n\n return i + 'th';\n }; //strip 'st' off '1st'..\n\n\n exports.toCardinal = function (str) {\n str = String(str);\n str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1');\n return parseInt(str, 10);\n }; //used mostly for cleanup of unit names, like 'months'\n\n\n exports.normalize = function () {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n str = str.toLowerCase().trim();\n str = str.replace(/ies$/, 'y'); //'centuries'\n\n str = str.replace(/s$/, '');\n str = str.replace(/-/g, '');\n\n if (str === 'day' || str === 'days') {\n return 'date';\n }\n\n if (str === 'min' || str === 'mins') {\n return 'minute';\n }\n\n return str;\n };\n\n exports.getEpoch = function (tmp) {\n //support epoch\n if (typeof tmp === 'number') {\n return tmp;\n } //suport date objects\n\n\n if (exports.isDate(tmp)) {\n return tmp.getTime();\n }\n\n if (tmp.epoch) {\n return tmp.epoch;\n }\n\n return null;\n }; //make sure this input is a spacetime obj\n\n\n exports.beADate = function (d, s) {\n if (exports.isObject(d) === false) {\n return s.clone().set(d);\n }\n\n return d;\n };\n\n exports.formatTimezone = function (offset) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '+' : '-';\n var absOffset = Math.abs(offset);\n var hours = exports.zeroPad(parseInt('' + absOffset, 10));\n var minutes = exports.zeroPad(absOffset % 1 * 60);\n return \"\".concat(sign).concat(hours).concat(delimiter).concat(minutes);\n };\n});\nfns.isLeapYear;\nfns.isDate;\nfns.isArray;\nfns.isObject;\nfns.isBoolean;\nfns.zeroPad;\nfns.titleCase;\nfns.ordinal;\nfns.toCardinal;\nfns.normalize;\nfns.getEpoch;\nfns.beADate;\nfns.formatTimezone;\n\nvar isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it\n\nvar hasDate = function hasDate(obj) {\n //invalid values\n if (monthLengths_1.hasOwnProperty(obj.month) !== true) {\n return false;\n } //support leap-year in february\n\n\n if (obj.month === 1) {\n if (isLeapYear$2(obj.year) && obj.date <= 29) {\n return true;\n } else {\n return obj.date <= 28;\n }\n } //is this date too-big for this month?\n\n\n var max = monthLengths_1[obj.month] || 0;\n\n if (obj.date <= max) {\n return true;\n }\n\n return false;\n};\n\nvar hasDate_1 = hasDate;\n\nvar months = months$1.mapping();\n\nvar parseYear = function parseYear() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var today = arguments.length > 1 ? arguments[1] : undefined;\n var year = parseInt(str.trim(), 10); // use a given year from options.today\n\n if (!year && today) {\n year = today.year;\n } // fallback to this year\n\n\n year = year || new Date().getFullYear();\n return year;\n};\n\nvar strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700\n{\n reg: /^(\\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\\-\\+:]+)?$/i,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: arr[3]\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //iso \"2015-03-25\" or \"2015/03/25\" or \"2015/03/25 12:26:14 PM\"\n{\n reg: /^([0-9]{4})[\\-\\/.]([0-9]{1,2})[\\-\\/.]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var obj = {\n year: arr[1],\n month: parseInt(arr[2], 10) - 1,\n date: parseInt(arr[3], 10)\n };\n\n if (obj.month >= 12) {\n //support yyyy/dd/mm (weird, but ok)\n obj.date = parseInt(arr[2], 10);\n obj.month = parseInt(arr[3], 10) - 1;\n }\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //mm/dd/yyyy - uk/canada \"6/28/2019, 12:26:14 PM\"\n{\n reg: /^([0-9]{1,2})[\\-\\/.]([0-9]{1,2})[\\-\\/.]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = parseInt(arr[1], 10) - 1;\n var date = parseInt(arr[2], 10); //support dd/mm/yyy\n\n if (s.british || month >= 12) {\n date = parseInt(arr[1], 10);\n month = parseInt(arr[2], 10) - 1;\n }\n\n var year = parseYear(arr[3], s._today) || new Date().getFullYear();\n var obj = {\n year: year,\n month: month,\n date: date\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, // '2012-06' last attempt at iso-like format\n{\n reg: /^([0-9]{4})[\\-\\/]([0-9]{2})$/i,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //common british format - \"25-feb-2015\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([a-z]+)[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[2].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //alt short format - \"feb-25-2015\"\n{\n reg: /^([a-z]+)[\\-\\/]([0-9]{1,2})[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"Mar 25 2015\"\n//February 22, 2017 15:30:00\n{\n reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //February 2017 (implied date)\n{\n reg: /^([a-z]+) ([0-9]{4})$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[2], s._today);\n var obj = {\n year: year,\n month: month,\n date: s._today.date || 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"25 Mar 2015\"\n{\n reg: /^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[2].toLowerCase()];\n\n if (!month) {\n return null;\n }\n\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1])\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, {\n // 'q2 2002'\n reg: /^(q[0-9])( of)?( [0-9]{4})?/i,\n parse: function parse(s, arr) {\n var quarter = arr[1] || '';\n s = s.quarter(quarter);\n var year = arr[3] || '';\n\n if (year) {\n year = year.trim();\n s = s.year(year);\n }\n\n return s;\n }\n}, {\n // 'summer 2002'\n reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,\n parse: function parse(s, arr) {\n var season = arr[1] || '';\n s = s.season(season);\n var year = arr[3] || '';\n\n if (year) {\n year = year.trim();\n s = s.year(year);\n }\n\n return s;\n }\n}, {\n // '200bc'\n reg: /^[0-9,]+ ?b\\.?c\\.?$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //make negative-year\n\n str = str.replace(/^([0-9,]+) ?b\\.?c\\.?$/i, '-$1'); //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '200ad'\n reg: /^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '1992'\n reg: /^[0-9]{4}( ?a\\.?d\\.?)?$/i,\n parse: function parse(s, arr) {\n var today = s._today;\n var year = parseYear(arr[0], today);\n var d = new Date(); // using today's date, but a new month is awkward.\n\n if (today.month && !today.date) {\n today.date = 1;\n }\n\n var obj = {\n year: year,\n month: today.month || d.getMonth(),\n date: today.date || d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}];\nvar strParse = strFmt;\n\n// pull in 'today' data for the baseline moment\nvar getNow = function getNow(s) {\n s.epoch = Date.now();\n Object.keys(s._today || {}).forEach(function (k) {\n if (typeof s[k] === 'function') {\n s = s[k](s._today[k]);\n }\n });\n return s;\n};\n\nvar dates = {\n now: function now(s) {\n return getNow(s);\n },\n today: function today(s) {\n return getNow(s);\n },\n tonight: function tonight(s) {\n s = getNow(s);\n s = s.hour(18); //6pm\n\n return s;\n },\n tomorrow: function tomorrow(s) {\n s = getNow(s);\n s = s.add(1, 'day');\n s = s.startOf('day');\n return s;\n },\n yesterday: function yesterday(s) {\n s = getNow(s);\n s = s.subtract(1, 'day');\n s = s.startOf('day');\n return s;\n },\n christmas: function christmas(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25\n\n return s;\n },\n 'new years': function newYears(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31\n\n return s;\n }\n};\ndates['new years eve'] = dates['new years'];\nvar namedDates = dates;\n\n// - can't use built-in js parser ;(\n//=========================================\n// ISO Date\t \"2015-03-25\"\n// Short Date\t\"03/25/2015\" or \"2015/03/25\"\n// Long Date\t\"Mar 25 2015\" or \"25 Mar 2015\"\n// Full Date\t\"Wednesday March 25 2015\"\n//=========================================\n//-- also -\n// if the given epoch is really small, they've probably given seconds and not milliseconds\n// anything below this number is likely (but not necessarily) a mistaken input.\n// this may seem like an arbitrary number, but it's 'within jan 1970'\n// this is only really ambiguous until 2054 or so\n\nvar minimumEpoch = 2500000000;\nvar defaults = {\n year: new Date().getFullYear(),\n month: 0,\n date: 1\n}; //support [2016, 03, 01] format\n\nvar handleArray = function handleArray(s, arr, today) {\n if (arr.length === 0) {\n return s;\n }\n\n var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond'];\n\n for (var i = 0; i < order.length; i++) {\n var num = arr[i] || today[order[i]] || defaults[order[i]] || 0;\n s = s[order[i]](num);\n }\n\n return s;\n}; //support {year:2016, month:3} format\n\n\nvar handleObject = function handleObject(s, obj, today) {\n // if obj is empty, do nothing\n if (Object.keys(obj).length === 0) {\n return s;\n }\n\n obj = Object.assign({}, defaults, today, obj);\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var unit = keys[i]; //make sure we have this method\n\n if (s[unit] === undefined || typeof s[unit] !== 'function') {\n continue;\n } //make sure the value is a number\n\n\n if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') {\n continue;\n }\n\n var num = obj[unit] || today[unit] || defaults[unit] || 0;\n s = s[unit](num);\n }\n\n return s;\n}; //find the epoch from different input styles\n\n\nvar parseInput = function parseInput(s, input, givenTz) {\n var today = s._today || defaults; //if we've been given a epoch number, it's easy\n\n if (typeof input === 'number') {\n if (input > 0 && input < minimumEpoch && s.silent === false) {\n console.warn(' - Warning: You are setting the date to January 1970.');\n console.warn(' - did input seconds instead of milliseconds?');\n }\n\n s.epoch = input;\n return s;\n } //set tmp time\n\n\n s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists\n\n if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) {\n var res = handleObject(s, today, defaults);\n\n if (res.isValid()) {\n s.epoch = res.epoch;\n }\n } // null input means 'now'\n\n\n if (input === null || input === undefined || input === '') {\n return s; //k, we're good.\n } //support input of Date() object\n\n\n if (fns.isDate(input) === true) {\n s.epoch = input.getTime();\n return s;\n } //support [2016, 03, 01] format\n\n\n if (fns.isArray(input) === true) {\n s = handleArray(s, input, today);\n return s;\n } //support {year:2016, month:3} format\n\n\n if (fns.isObject(input) === true) {\n //support spacetime object as input\n if (input.epoch) {\n s.epoch = input.epoch;\n s.tz = input.tz;\n return s;\n }\n\n s = handleObject(s, input, today);\n return s;\n } //input as a string..\n\n\n if (typeof input !== 'string') {\n return s;\n } //little cleanup..\n\n\n input = input.replace(/\\b(mon|tues|wed|wednes|thu|thurs|fri|sat|satur|sun)(day)?\\b/i, '');\n input = input.replace(/,/g, '');\n input = input.replace(/ +/g, ' ').trim(); //try some known-words, like 'now'\n\n if (namedDates.hasOwnProperty(input) === true) {\n s = namedDates[input](s);\n return s;\n } //try each text-parse template, use the first good result\n\n\n for (var i = 0; i < strParse.length; i++) {\n var m = input.match(strParse[i].reg);\n\n if (m) {\n // console.log(strFmt[i].reg)\n var _res = strParse[i].parse(s, m, givenTz);\n\n if (_res !== null && _res.isValid()) {\n return _res;\n }\n }\n }\n\n if (s.silent === false) {\n console.warn(\"Warning: couldn't parse date-string: '\" + input + \"'\");\n }\n\n s.epoch = null;\n return s;\n};\n\nvar input = parseInput;\n\nvar shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nvar days = {\n \"short\": function short() {\n return shortDays;\n },\n \"long\": function long() {\n return longDays;\n },\n set: function set(i18n) {\n shortDays = i18n[\"short\"] || shortDays;\n longDays = i18n[\"long\"] || longDays;\n },\n aliases: {\n mo: 1,\n tu: 2,\n we: 3,\n th: 4,\n fr: 5,\n sa: 6,\n su: 7,\n tues: 2,\n weds: 3,\n wedn: 3,\n thur: 4,\n thurs: 4\n }\n};\n\nvar titleCaseEnabled = true;\nvar caseFormat = {\n useTitleCase: function useTitleCase() {\n return titleCaseEnabled;\n },\n set: function set(useTitleCase) {\n titleCaseEnabled = useTitleCase;\n }\n};\n\n// it's kind of nuts how involved this is\n// \"+01:00\", \"+0100\", or simply \"+01\"\n\nvar isoOffset = function isoOffset(s) {\n var offset = s.timezone().current.offset;\n return !offset ? 'Z' : fns.formatTimezone(offset, ':');\n};\n\nvar _offset = isoOffset;\n\nvar applyCaseFormat = function applyCaseFormat(str) {\n if (caseFormat.useTitleCase()) {\n return fns.titleCase(str);\n }\n\n return str;\n};\n\nvar format = {\n day: function day(s) {\n return applyCaseFormat(s.dayName());\n },\n 'day-short': function dayShort(s) {\n return applyCaseFormat(days[\"short\"]()[s.day()]);\n },\n 'day-number': function dayNumber(s) {\n return s.day();\n },\n 'day-ordinal': function dayOrdinal(s) {\n return fns.ordinal(s.day());\n },\n 'day-pad': function dayPad(s) {\n return fns.zeroPad(s.day());\n },\n date: function date(s) {\n return s.date();\n },\n 'date-ordinal': function dateOrdinal(s) {\n return fns.ordinal(s.date());\n },\n 'date-pad': function datePad(s) {\n return fns.zeroPad(s.date());\n },\n month: function month(s) {\n return applyCaseFormat(s.monthName());\n },\n 'month-short': function monthShort(s) {\n return applyCaseFormat(months$1[\"short\"]()[s.month()]);\n },\n 'month-number': function monthNumber(s) {\n return s.month();\n },\n 'month-ordinal': function monthOrdinal(s) {\n return fns.ordinal(s.month());\n },\n 'month-pad': function monthPad(s) {\n return fns.zeroPad(s.month());\n },\n 'iso-month': function isoMonth(s) {\n return fns.zeroPad(s.month() + 1);\n },\n //1-based months\n year: function year(s) {\n var year = s.year();\n\n if (year > 0) {\n return year;\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'year-short': function yearShort(s) {\n var year = s.year();\n\n if (year > 0) {\n return \"'\".concat(String(s.year()).substr(2, 4));\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'iso-year': function isoYear(s) {\n var year = s.year();\n var isNegative = year < 0;\n var str = fns.zeroPad(Math.abs(year), 4); //0-padded\n\n if (isNegative) {\n //negative years are for some reason 6-digits ('-00008')\n str = fns.zeroPad(str, 6);\n str = '-' + str;\n }\n\n return str;\n },\n time: function time(s) {\n return s.time();\n },\n 'time-24': function time24(s) {\n return \"\".concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n hour: function hour(s) {\n return s.hour12();\n },\n 'hour-pad': function hourPad(s) {\n return fns.zeroPad(s.hour12());\n },\n 'hour-24': function hour24(s) {\n return s.hour24();\n },\n 'hour-24-pad': function hour24Pad(s) {\n return fns.zeroPad(s.hour24());\n },\n minute: function minute(s) {\n return s.minute();\n },\n 'minute-pad': function minutePad(s) {\n return fns.zeroPad(s.minute());\n },\n second: function second(s) {\n return s.second();\n },\n 'second-pad': function secondPad(s) {\n return fns.zeroPad(s.second());\n },\n ampm: function ampm(s) {\n return s.ampm();\n },\n quarter: function quarter(s) {\n return 'Q' + s.quarter();\n },\n season: function season(s) {\n return s.season();\n },\n era: function era(s) {\n return s.era();\n },\n json: function json(s) {\n return s.json();\n },\n timezone: function timezone(s) {\n return s.timezone().name;\n },\n offset: function offset(s) {\n return _offset(s);\n },\n numeric: function numeric(s) {\n return \"\".concat(s.year(), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n // yyyy/mm/dd\n 'numeric-us': function numericUs(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()), \"/\").concat(s.year());\n },\n // mm/dd/yyyy\n 'numeric-uk': function numericUk(s) {\n return \"\".concat(fns.zeroPad(s.date()), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(s.year());\n },\n //dd/mm/yyyy\n 'mm/dd': function mmDd(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n //mm/dd\n // ... https://en.wikipedia.org/wiki/ISO_8601 ;(((\n iso: function iso(s) {\n var year = s.format('iso-year');\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n var hour = fns.zeroPad(s.h24());\n var minute = fns.zeroPad(s.minute());\n var second = fns.zeroPad(s.second());\n var ms = fns.zeroPad(s.millisecond(), 3);\n var offset = _offset(s);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(date, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second, \".\").concat(ms).concat(offset); //2018-03-09T08:50:00.000-05:00\n },\n 'iso-short': function isoShort(s) {\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n return \"\".concat(s.year(), \"-\").concat(month, \"-\").concat(date); //2017-02-15\n },\n 'iso-utc': function isoUtc(s) {\n return new Date(s.epoch).toISOString(); //2017-03-08T19:45:28.367Z\n },\n //i made these up\n nice: function nice(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-24': function nice24(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n 'nice-year': function niceYear(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.year());\n },\n 'nice-day': function niceDay(s) {\n return \"\".concat(days[\"short\"]()[s.day()], \" \").concat(applyCaseFormat(months$1[\"short\"]()[s.month()]), \" \").concat(fns.ordinal(s.date()));\n },\n 'nice-full': function niceFull(s) {\n return \"\".concat(s.dayName(), \" \").concat(applyCaseFormat(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-full-24': function niceFull24(s) {\n return \"\".concat(s.dayName(), \" \").concat(applyCaseFormat(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n }\n}; //aliases\n\nvar aliases = {\n 'day-name': 'day',\n 'month-name': 'month',\n 'iso 8601': 'iso',\n 'time-h24': 'time-24',\n 'time-12': 'time',\n 'time-h12': 'time',\n tz: 'timezone',\n 'day-num': 'day-number',\n 'month-num': 'month-number',\n 'month-iso': 'iso-month',\n 'year-iso': 'iso-year',\n 'nice-short': 'nice',\n 'nice-short-24': 'nice-24',\n mdy: 'numeric-us',\n dmy: 'numeric-uk',\n ymd: 'numeric',\n 'yyyy/mm/dd': 'numeric',\n 'mm/dd/yyyy': 'numeric-us',\n 'dd/mm/yyyy': 'numeric-us',\n 'little-endian': 'numeric-uk',\n 'big-endian': 'numeric',\n 'day-nice': 'nice-day'\n};\nObject.keys(aliases).forEach(function (k) {\n return format[k] = format[aliases[k]];\n});\n\nvar printFormat = function printFormat(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n //don't print anything if it's an invalid date\n if (s.isValid() !== true) {\n return '';\n } //support .format('month')\n\n\n if (format.hasOwnProperty(str)) {\n var out = format[str](s) || '';\n\n if (str !== 'json') {\n out = String(out);\n\n if (str !== 'ampm') {\n out = applyCaseFormat(out);\n }\n }\n\n return out;\n } //support '{hour}:{minute}' notation\n\n\n if (str.indexOf('{') !== -1) {\n var sections = /\\{(.+?)\\}/g;\n str = str.replace(sections, function (_, fmt) {\n fmt = fmt.toLowerCase().trim();\n\n if (format.hasOwnProperty(fmt)) {\n var _out = String(format[fmt](s));\n\n if (fmt !== 'ampm') {\n return applyCaseFormat(_out);\n }\n\n return _out;\n }\n\n return '';\n });\n return str;\n }\n\n return s.format('iso-short');\n};\n\nvar format_1 = printFormat;\n\nvar pad = fns.zeroPad;\nvar formatTimezone = fns.formatTimezone; //parse this insane unix-time-templating thing, from the 19th century\n//http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns\n//time-symbols we support\n\nvar mapping = {\n G: function G(s) {\n return s.era();\n },\n GG: function GG(s) {\n return s.era();\n },\n GGG: function GGG(s) {\n return s.era();\n },\n GGGG: function GGGG(s) {\n return s.era() === 'AD' ? 'Anno Domini' : 'Before Christ';\n },\n //year\n y: function y(s) {\n return s.year();\n },\n yy: function yy(s) {\n //last two chars\n return parseInt(String(s.year()).substr(2, 4), 10);\n },\n yyy: function yyy(s) {\n return s.year();\n },\n yyyy: function yyyy(s) {\n return s.year();\n },\n yyyyy: function yyyyy(s) {\n return '0' + s.year();\n },\n // u: (s) => {},//extended non-gregorian years\n //quarter\n Q: function Q(s) {\n return s.quarter();\n },\n QQ: function QQ(s) {\n return s.quarter();\n },\n QQQ: function QQQ(s) {\n return s.quarter();\n },\n QQQQ: function QQQQ(s) {\n return s.quarter();\n },\n //month\n M: function M(s) {\n return s.month() + 1;\n },\n MM: function MM(s) {\n return pad(s.month() + 1);\n },\n MMM: function MMM(s) {\n return s.format('month-short');\n },\n MMMM: function MMMM(s) {\n return s.format('month');\n },\n //week\n w: function w(s) {\n return s.week();\n },\n ww: function ww(s) {\n return pad(s.week());\n },\n //week of month\n // W: (s) => s.week(),\n //date of month\n d: function d(s) {\n return s.date();\n },\n dd: function dd(s) {\n return pad(s.date());\n },\n //date of year\n D: function D(s) {\n return s.dayOfYear();\n },\n DD: function DD(s) {\n return pad(s.dayOfYear());\n },\n DDD: function DDD(s) {\n return pad(s.dayOfYear(), 3);\n },\n // F: (s) => {},//date of week in month\n // g: (s) => {},//modified julian day\n //day\n E: function E(s) {\n return s.format('day-short');\n },\n EE: function EE(s) {\n return s.format('day-short');\n },\n EEE: function EEE(s) {\n return s.format('day-short');\n },\n EEEE: function EEEE(s) {\n return s.format('day');\n },\n EEEEE: function EEEEE(s) {\n return s.format('day')[0];\n },\n e: function e(s) {\n return s.day();\n },\n ee: function ee(s) {\n return s.day();\n },\n eee: function eee(s) {\n return s.format('day-short');\n },\n eeee: function eeee(s) {\n return s.format('day');\n },\n eeeee: function eeeee(s) {\n return s.format('day')[0];\n },\n //am/pm\n a: function a(s) {\n return s.ampm().toUpperCase();\n },\n aa: function aa(s) {\n return s.ampm().toUpperCase();\n },\n aaa: function aaa(s) {\n return s.ampm().toUpperCase();\n },\n aaaa: function aaaa(s) {\n return s.ampm().toUpperCase();\n },\n //hour\n h: function h(s) {\n return s.h12();\n },\n hh: function hh(s) {\n return pad(s.h12());\n },\n H: function H(s) {\n return s.hour();\n },\n HH: function HH(s) {\n return pad(s.hour());\n },\n // j: (s) => {},//weird hour format\n m: function m(s) {\n return s.minute();\n },\n mm: function mm(s) {\n return pad(s.minute());\n },\n s: function s(_s) {\n return _s.second();\n },\n ss: function ss(s) {\n return pad(s.second());\n },\n //milliseconds in the day\n A: function A(s) {\n return s.epoch - s.startOf('day').epoch;\n },\n //timezone\n z: function z(s) {\n return s.timezone().name;\n },\n zz: function zz(s) {\n return s.timezone().name;\n },\n zzz: function zzz(s) {\n return s.timezone().name;\n },\n zzzz: function zzzz(s) {\n return s.timezone().name;\n },\n Z: function Z(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZ: function ZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZ: function ZZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZZ: function ZZZZ(s) {\n return formatTimezone(s.timezone().current.offset, ':');\n }\n};\n\nvar addAlias = function addAlias(_char, to, n) {\n var name = _char;\n var toName = to;\n\n for (var i = 0; i < n; i += 1) {\n mapping[name] = mapping[toName];\n name += _char;\n toName += to;\n }\n};\n\naddAlias('q', 'Q', 4);\naddAlias('L', 'M', 4);\naddAlias('Y', 'y', 4);\naddAlias('c', 'e', 4);\naddAlias('k', 'H', 2);\naddAlias('K', 'h', 2);\naddAlias('S', 's', 2);\naddAlias('v', 'z', 4);\naddAlias('V', 'Z', 4); // support unix-style escaping with ' character\n\nvar escapeChars = function escapeChars(arr) {\n for (var i = 0; i < arr.length; i += 1) {\n if (arr[i] === \"'\") {\n // greedy-search for next apostrophe\n for (var o = i + 1; o < arr.length; o += 1) {\n if (arr[o]) {\n arr[i] += arr[o];\n }\n\n if (arr[o] === \"'\") {\n arr[o] = null;\n break;\n }\n\n arr[o] = null;\n }\n }\n }\n\n return arr.filter(function (ch) {\n return ch;\n });\n}; //combine consecutive chars, like 'yyyy' as one.\n\n\nvar combineRepeated = function combineRepeated(arr) {\n for (var i = 0; i < arr.length; i += 1) {\n var c = arr[i]; // greedy-forward\n\n for (var o = i + 1; o < arr.length; o += 1) {\n if (arr[o] === c) {\n arr[i] += arr[o];\n arr[o] = null;\n } else {\n break;\n }\n }\n } // '' means one apostrophe\n\n\n arr = arr.filter(function (ch) {\n return ch;\n });\n arr = arr.map(function (str) {\n if (str === \"''\") {\n str = \"'\";\n }\n\n return str;\n });\n return arr;\n};\n\nvar unixFmt = function unixFmt(s, str) {\n var arr = str.split(''); // support character escaping\n\n arr = escapeChars(arr); //combine 'yyyy' as string.\n\n arr = combineRepeated(arr);\n return arr.reduce(function (txt, c) {\n if (mapping[c] !== undefined) {\n txt += mapping[c](s) || '';\n } else {\n // 'unescape'\n if (/^'.{1,}'$/.test(c)) {\n c = c.replace(/'/g, '');\n }\n\n txt += c;\n }\n\n return txt;\n }, '');\n};\n\nvar unixFmt_1 = unixFmt;\n\nvar units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\nvar doUnit = function doUnit(s, k) {\n var start = s.clone().startOf(k);\n var end = s.clone().endOf(k);\n var duration = end.epoch - start.epoch;\n var percent = (s.epoch - start.epoch) / duration;\n return parseFloat(percent.toFixed(2));\n}; //how far it is along, from 0-1\n\n\nvar progress = function progress(s, unit) {\n if (unit) {\n unit = fns.normalize(unit);\n return doUnit(s, unit);\n }\n\n var obj = {};\n units$2.forEach(function (k) {\n obj[k] = doUnit(s, k);\n });\n return obj;\n};\n\nvar progress_1 = progress;\n\nvar nearest = function nearest(s, unit) {\n //how far have we gone?\n var prog = s.progress();\n unit = fns.normalize(unit); //fix camel-case for this one\n\n if (unit === 'quarterhour') {\n unit = 'quarterHour';\n }\n\n if (prog[unit] !== undefined) {\n // go forward one?\n if (prog[unit] > 0.5) {\n s = s.add(1, unit);\n } // go to start\n\n\n s = s.startOf(unit);\n } else if (s.silent === false) {\n console.warn(\"no known unit '\" + unit + \"'\");\n }\n\n return s;\n};\n\nvar nearest_1 = nearest;\n\n//increment until dates are the same\nvar climb = function climb(a, b, unit) {\n var i = 0;\n a = a.clone();\n\n while (a.isBefore(b)) {\n //do proper, expensive increment to catch all-the-tricks\n a = a.add(1, unit);\n i += 1;\n } //oops, we went too-far..\n\n\n if (a.isAfter(b, unit)) {\n i -= 1;\n }\n\n return i;\n}; // do a thurough +=1 on the unit, until they match\n// for speed-reasons, only used on day, month, week.\n\n\nvar diffOne = function diffOne(a, b, unit) {\n if (a.isBefore(b)) {\n return climb(a, b, unit);\n } else {\n return climb(b, a, unit) * -1; //reverse it\n }\n};\n\nvar one = diffOne;\n\n// 2020 - 2019 may be 1 year, or 0 years\n// - '1 year difference' means 366 days during a leap year\n\nvar fastYear = function fastYear(a, b) {\n var years = b.year() - a.year(); // should we decrement it by 1?\n\n a = a.year(b.year());\n\n if (a.isAfter(b)) {\n years -= 1;\n }\n\n return years;\n}; // use a waterfall-method for computing a diff of any 'pre-knowable' units\n// compute years, then compute months, etc..\n// ... then ms-math for any very-small units\n\n\nvar diff$1 = function diff(a, b) {\n // an hour is always the same # of milliseconds\n // so these units can be 'pre-calculated'\n var msDiff = b.epoch - a.epoch;\n var obj = {\n milliseconds: msDiff,\n seconds: parseInt(msDiff / 1000, 10)\n };\n obj.minutes = parseInt(obj.seconds / 60, 10);\n obj.hours = parseInt(obj.minutes / 60, 10); //do the year\n\n var tmp = a.clone();\n obj.years = fastYear(tmp, b);\n tmp = a.add(obj.years, 'year'); //there's always 12 months in a year...\n\n obj.months = obj.years * 12;\n tmp = a.add(obj.months, 'month');\n obj.months += one(tmp, b, 'month'); // there's always atleast 52 weeks in a year..\n // (month * 4) isn't as close\n\n obj.weeks = obj.years * 52;\n tmp = a.add(obj.weeks, 'week');\n obj.weeks += one(tmp, b, 'week'); // there's always atleast 7 days in a week\n\n obj.days = obj.weeks * 7;\n tmp = a.add(obj.days, 'day');\n obj.days += one(tmp, b, 'day');\n return obj;\n};\n\nvar waterfall = diff$1;\n\nvar reverseDiff = function reverseDiff(obj) {\n Object.keys(obj).forEach(function (k) {\n obj[k] *= -1;\n });\n return obj;\n}; // this method counts a total # of each unit, between a, b.\n// '1 month' means 28 days in february\n// '1 year' means 366 days in a leap year\n\n\nvar main$1 = function main(a, b, unit) {\n b = fns.beADate(b, a); //reverse values, if necessary\n\n var reversed = false;\n\n if (a.isAfter(b)) {\n var tmp = a;\n a = b;\n b = tmp;\n reversed = true;\n } //compute them all (i know!)\n\n\n var obj = waterfall(a, b);\n\n if (reversed) {\n obj = reverseDiff(obj);\n } //return just the requested unit\n\n\n if (unit) {\n //make sure it's plural-form\n unit = fns.normalize(unit);\n\n if (/s$/.test(unit) !== true) {\n unit += 's';\n }\n\n if (unit === 'dates') {\n unit = 'days';\n }\n\n return obj[unit];\n }\n\n return obj;\n};\n\nvar diff = main$1;\n\n//our conceptual 'break-points' for each unit\n\nvar qualifiers = {\n months: {\n almost: 10,\n over: 4\n },\n days: {\n almost: 25,\n over: 10\n },\n hours: {\n almost: 20,\n over: 8\n },\n minutes: {\n almost: 50,\n over: 20\n },\n seconds: {\n almost: 50,\n over: 20\n }\n}; //get number of hours/minutes... between the two dates\n\nfunction getDiff(a, b) {\n var isBefore = a.isBefore(b);\n var later = isBefore ? b : a;\n var earlier = isBefore ? a : b;\n earlier = earlier.clone();\n var diff = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n Object.keys(diff).forEach(function (unit) {\n if (earlier.isSame(later, unit)) {\n return;\n }\n\n var max = earlier.diff(later, unit);\n earlier = earlier.add(max, unit);\n diff[unit] = max;\n }); //reverse it, if necessary\n\n if (isBefore) {\n Object.keys(diff).forEach(function (u) {\n if (diff[u] !== 0) {\n diff[u] *= -1;\n }\n });\n }\n\n return diff;\n} // Expects a plural unit arg\n\n\nfunction pluralize(value, unit) {\n if (value === 1) {\n unit = unit.slice(0, -1);\n }\n\n return value + ' ' + unit;\n} //create the human-readable diff between the two dates\n\n\nvar since = function since(start, end) {\n end = fns.beADate(end, start);\n var diff = getDiff(start, end);\n var isNow = Object.keys(diff).every(function (u) {\n return !diff[u];\n });\n\n if (isNow === true) {\n return {\n diff: diff,\n rounded: 'now',\n qualified: 'now',\n precise: 'now'\n };\n }\n\n var rounded;\n var qualified;\n var precise;\n var englishValues = []; //go through each value and create its text-representation\n\n Object.keys(diff).forEach(function (unit, i, units) {\n var value = Math.abs(diff[unit]);\n\n if (value === 0) {\n return;\n }\n\n var englishValue = pluralize(value, unit);\n englishValues.push(englishValue);\n\n if (!rounded) {\n rounded = qualified = englishValue;\n\n if (i > 4) {\n return;\n } //is it a 'almost' something, etc?\n\n\n var nextUnit = units[i + 1];\n var nextValue = Math.abs(diff[nextUnit]);\n\n if (nextValue > qualifiers[nextUnit].almost) {\n rounded = pluralize(value + 1, unit);\n qualified = 'almost ' + rounded;\n } else if (nextValue > qualifiers[nextUnit].over) qualified = 'over ' + englishValue;\n }\n }); //make them into a string\n\n precise = englishValues.splice(0, 2).join(', '); //handle before/after logic\n\n if (start.isAfter(end) === true) {\n rounded += ' ago';\n qualified += ' ago';\n precise += ' ago';\n } else {\n rounded = 'in ' + rounded;\n qualified = 'in ' + qualified;\n precise = 'in ' + precise;\n }\n\n return {\n diff: diff,\n rounded: rounded,\n qualified: qualified,\n precise: precise\n };\n};\n\nvar since_1 = since;\n\n//https://www.timeanddate.com/calendar/aboutseasons.html\n// Spring - from March 1 to May 31;\n// Summer - from June 1 to August 31;\n// Fall (autumn) - from September 1 to November 30; and,\n// Winter - from December 1 to February 28 (February 29 in a leap year).\nvar seasons = {\n north: [['spring', 2, 1], //spring march 1\n ['summer', 5, 1], //june 1\n ['fall', 8, 1], //sept 1\n ['autumn', 8, 1], //sept 1\n ['winter', 11, 1] //dec 1\n ],\n south: [['fall', 2, 1], //march 1\n ['autumn', 2, 1], //march 1\n ['winter', 5, 1], //june 1\n ['spring', 8, 1], //sept 1\n ['summer', 11, 1] //dec 1\n ]\n};\n\nvar quarters = [null, [0, 1], //jan 1\n[3, 1], //apr 1\n[6, 1], //july 1\n[9, 1] //oct 1\n];\n\nvar units$1 = {\n minute: function minute(s) {\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarterhour: function quarterhour(s) {\n var minute = s.minutes();\n\n if (minute >= 45) {\n s = s.minutes(45);\n } else if (minute >= 30) {\n s = s.minutes(30);\n } else if (minute >= 15) {\n s = s.minutes(15);\n } else {\n s = s.minutes(0);\n }\n\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n hour: function hour(s) {\n walk_1(s, {\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n day: function day(s) {\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n week: function week(s) {\n var original = s.clone();\n s = s.day(s._weekStart); //monday\n\n if (s.isAfter(original)) {\n s = s.subtract(1, 'week');\n }\n\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n month: function month(s) {\n walk_1(s, {\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarter: function quarter(s) {\n var q = s.quarter();\n\n if (quarters[q]) {\n walk_1(s, {\n month: quarters[q][0],\n date: quarters[q][1],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n }\n\n return s;\n },\n season: function season(s) {\n var current = s.season();\n var hem = 'north';\n\n if (s.hemisphere() === 'South') {\n hem = 'south';\n }\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (seasons[hem][i][0] === current) {\n //winter goes between years\n var year = s.year();\n\n if (current === 'winter' && s.month() < 3) {\n year -= 1;\n }\n\n walk_1(s, {\n year: year,\n month: seasons[hem][i][1],\n date: seasons[hem][i][2],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n }\n }\n\n return s;\n },\n year: function year(s) {\n walk_1(s, {\n month: 0,\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n decade: function decade(s) {\n s = s.startOf('year');\n var year = s.year();\n var decade = parseInt(year / 10, 10) * 10;\n s = s.year(decade);\n return s;\n },\n century: function century(s) {\n s = s.startOf('year');\n var year = s.year(); // near 0AD goes '-1 | +1'\n\n var decade = parseInt(year / 100, 10) * 100;\n s = s.year(decade);\n return s;\n }\n};\nunits$1.date = units$1.day;\n\nvar startOf = function startOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$1[unit]) {\n return units$1[unit](s);\n }\n\n if (unit === 'summer' || unit === 'winter') {\n s = s.season(unit);\n return units$1.season(s);\n }\n\n return s;\n}; //piggy-backs off startOf\n\n\nvar endOf = function endOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$1[unit]) {\n // go to beginning, go to next one, step back 1ms\n s = units$1[unit](s); // startof\n\n s = s.add(1, unit);\n s = s.subtract(1, 'millisecond');\n return s;\n }\n\n return s;\n};\n\nvar startOf_1 = {\n startOf: startOf,\n endOf: endOf\n};\n\nvar isDay = function isDay(unit) {\n if (days[\"short\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n if (days[\"long\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n return false;\n}; // return a list of the weeks/months/days between a -> b\n// returns spacetime objects in the timezone of the input\n\n\nvar every = function every(start) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var end = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!unit || !end) {\n return [];\n } //cleanup unit param\n\n\n unit = fns.normalize(unit); //cleanup to param\n\n end = start.clone().set(end); //swap them, if they're backwards\n\n if (start.isAfter(end)) {\n var tmp = start;\n start = end;\n end = tmp;\n } //support 'every wednesday'\n\n\n var d = start.clone();\n\n if (isDay(unit)) {\n d = d.next(unit);\n unit = 'week';\n } else {\n d = d.next(unit);\n } //okay, actually start doing it\n\n\n var result = [];\n\n while (d.isBefore(end)) {\n result.push(d);\n d = d.add(1, unit);\n }\n\n return result;\n};\n\nvar every_1 = every;\n\nvar parseDst = function parseDst(dst) {\n if (!dst) {\n return [];\n }\n\n return dst.split('->');\n};\n\nvar titleCase = function titleCase(str) {\n str = str[0].toUpperCase() + str.substr(1);\n str = str.replace(/\\/gmt/, '/GMT');\n str = str.replace(/[\\/_]([a-z])/gi, function (s) {\n return s.toUpperCase();\n });\n return str;\n}; //get metadata about this timezone\n\n\nvar timezone = function timezone(s) {\n var zones = s.timezones;\n var tz = s.tz;\n\n if (zones.hasOwnProperty(tz) === false) {\n tz = find(s.tz, zones);\n }\n\n if (tz === null) {\n if (s.silent === false) {\n console.warn(\"Warn: could not find given or local timezone - '\" + s.tz + \"'\");\n }\n\n return {\n current: {\n epochShift: 0\n }\n };\n }\n\n var found = zones[tz];\n var result = {\n name: titleCase(tz),\n hasDst: Boolean(found.dst),\n default_offset: found.offset,\n //do north-hemisphere version as default (sorry!)\n hemisphere: found.hem === 's' ? 'South' : 'North',\n current: {}\n };\n\n if (result.hasDst) {\n var arr = parseDst(found.dst);\n result.change = {\n start: arr[0],\n back: arr[1]\n };\n } //find the offsets for summer/winter times\n //(these variable names are north-centric)\n\n\n var summer = found.offset; // (july)\n\n var winter = summer; // (january) assume it's the same for now\n\n if (result.hasDst === true) {\n if (result.hemisphere === 'North') {\n winter = summer - 1;\n } else {\n //southern hemisphere\n winter = found.offset + 1;\n }\n } //find out which offset to use right now\n //use 'summer' time july-time\n\n\n if (result.hasDst === false) {\n result.current.offset = summer;\n result.current.isDST = false;\n } else if (summerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) {\n result.current.offset = summer;\n result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north\n } else {\n //use 'winter' january-time\n result.current.offset = winter;\n result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south\n }\n\n return result;\n};\n\nvar timezone_1 = timezone;\n\nvar units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\nvar methods$4 = {\n set: function set(input$1, tz) {\n var s = this.clone();\n s = input(s, input$1, null);\n\n if (tz) {\n this.tz = find(tz);\n }\n\n return s;\n },\n timezone: function timezone() {\n return timezone_1(this);\n },\n isDST: function isDST() {\n return timezone_1(this).current.isDST;\n },\n hasDST: function hasDST() {\n return timezone_1(this).hasDst;\n },\n offset: function offset() {\n return timezone_1(this).current.offset * 60;\n },\n hemisphere: function hemisphere() {\n return timezone_1(this).hemisphere;\n },\n format: function format(fmt) {\n return format_1(this, fmt);\n },\n unixFmt: function unixFmt(fmt) {\n return unixFmt_1(this, fmt);\n },\n startOf: function startOf(unit) {\n return startOf_1.startOf(this, unit);\n },\n endOf: function endOf(unit) {\n return startOf_1.endOf(this, unit);\n },\n leapYear: function leapYear() {\n var year = this.year();\n return fns.isLeapYear(year);\n },\n progress: function progress(unit) {\n return progress_1(this, unit);\n },\n nearest: function nearest(unit) {\n return nearest_1(this, unit);\n },\n diff: function diff$1(d, unit) {\n return diff(this, d, unit);\n },\n since: function since(d) {\n if (!d) {\n d = this.clone().set();\n }\n\n return since_1(this, d);\n },\n next: function next(unit) {\n var s = this.add(1, unit);\n return s.startOf(unit);\n },\n //the start of the previous year/week/century\n last: function last(unit) {\n var s = this.subtract(1, unit);\n return s.startOf(unit);\n },\n isValid: function isValid() {\n //null/undefined epochs\n if (!this.epoch && this.epoch !== 0) {\n return false;\n }\n\n return !isNaN(this.d.getTime());\n },\n //travel to this timezone\n \"goto\": function goto(tz) {\n var s = this.clone();\n s.tz = find(tz, s.timezones); //science!\n\n return s;\n },\n //get each week/month/day between a -> b\n every: function every(unit, to) {\n // allow swapping these params:\n if (_typeof(unit) === 'object' && typeof to === 'string') {\n var tmp = to;\n to = unit;\n unit = tmp;\n }\n\n return every_1(this, unit, to);\n },\n isAwake: function isAwake() {\n var hour = this.hour(); //10pm -> 8am\n\n if (hour < 8 || hour > 22) {\n return false;\n }\n\n return true;\n },\n isAsleep: function isAsleep() {\n return !this.isAwake();\n },\n //pretty-printing\n log: function log() {\n console.log('');\n console.log(format_1(this, 'nice-short'));\n return this;\n },\n logYear: function logYear() {\n console.log('');\n console.log(format_1(this, 'full-short'));\n return this;\n },\n json: function json() {\n var _this = this;\n\n return units.reduce(function (h, unit) {\n h[unit] = _this[unit]();\n return h;\n }, {});\n },\n debug: function debug() {\n var tz = this.timezone();\n var date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year();\n date += '\\n - ' + this.format('time');\n console.log('\\n\\n', date + '\\n - ' + tz.name + ' (' + tz.current.offset + ')');\n return this;\n },\n //alias of 'since' but opposite - like moment.js\n from: function from(d) {\n d = this.clone().set(d);\n return d.since(this);\n },\n fromNow: function fromNow() {\n var d = this.clone().set(Date.now());\n return d.since(this);\n },\n weekStart: function weekStart(input) {\n //accept a number directly\n if (typeof input === 'number') {\n this._weekStart = input;\n return this;\n }\n\n if (typeof input === 'string') {\n // accept 'wednesday'\n input = input.toLowerCase().trim();\n var num = days[\"short\"]().indexOf(input);\n\n if (num === -1) {\n num = days[\"long\"]().indexOf(input);\n }\n\n if (num === -1) {\n num = 1; //go back to default\n }\n\n this._weekStart = num;\n } else {\n console.warn('Spacetime Error: Cannot understand .weekStart() input:', input);\n }\n\n return this;\n }\n}; // aliases\n\nmethods$4.inDST = methods$4.isDST;\nmethods$4.round = methods$4.nearest;\nmethods$4.each = methods$4.every;\nvar methods_1 = methods$4;\n\n//these methods wrap around them.\n\nvar isLeapYear$1 = fns.isLeapYear;\n\nvar validate = function validate(n) {\n //handle number as a string\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n }\n\n return n;\n};\n\nvar order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond\n\nvar confirm = function confirm(s, tmp, unit) {\n var n = order$1.indexOf(unit);\n var arr = order$1.slice(n, order$1.length);\n\n for (var i = 0; i < arr.length; i++) {\n var want = tmp[arr[i]]();\n s[arr[i]](want);\n }\n\n return s;\n};\n\nvar set = {\n milliseconds: function milliseconds(s, n) {\n n = validate(n);\n var current = s.millisecond();\n var diff = current - n; //milliseconds to shift by\n\n return s.epoch - diff;\n },\n seconds: function seconds(s, n) {\n n = validate(n);\n var diff = s.second() - n;\n var shift = diff * milliseconds.second;\n return s.epoch - shift;\n },\n minutes: function minutes(s, n) {\n n = validate(n);\n var old = s.clone();\n var diff = s.minute() - n;\n var shift = diff * milliseconds.minute;\n s.epoch -= shift; // check against a screw-up\n // if (old.hour() != s.hour()) {\n // walkTo(old, {\n // minute: n\n // })\n // return old.epoch\n // }\n\n confirm(s, old, 'second');\n return s.epoch;\n },\n hours: function hours(s, n) {\n n = validate(n);\n\n if (n >= 24) {\n n = 24;\n } else if (n < 0) {\n n = 0;\n }\n\n var old = s.clone();\n var diff = s.hour() - n;\n var shift = diff * milliseconds.hour;\n s.epoch -= shift; // oops, did we change the day?\n\n if (s.date() !== old.date()) {\n s = old.clone();\n\n if (diff > 1) {\n diff -= 1;\n }\n\n if (diff < 1) {\n diff += 1;\n }\n\n shift = diff * milliseconds.hour;\n s.epoch -= shift;\n }\n\n walk_1(s, {\n hour: n\n });\n confirm(s, old, 'minute');\n return s.epoch;\n },\n //support setting time by '4:25pm' - this isn't very-well developed..\n time: function time(s, str) {\n var m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);\n\n if (!m) {\n //fallback to support just '2am'\n m = str.match(/([0-9]{1,2}) ?(am|pm)/);\n\n if (!m) {\n return s.epoch;\n }\n\n m.splice(2, 0, '0'); //add implicit 0 minutes\n\n m.splice(3, 0, ''); //add implicit seconds\n }\n\n var h24 = false;\n var hour = parseInt(m[1], 10);\n var minute = parseInt(m[2], 10);\n\n if (hour > 12) {\n h24 = true;\n } //make the hour into proper 24h time\n\n\n if (h24 === false) {\n if (m[4] === 'am' && hour === 12) {\n //12am is midnight\n hour = 0;\n }\n\n if (m[4] === 'pm' && hour < 12) {\n //12pm is noon\n hour += 12;\n }\n } // handle seconds\n\n\n m[3] = m[3] || '';\n m[3] = m[3].replace(/:/, '');\n var sec = parseInt(m[3], 10) || 0;\n s = s.hour(hour);\n s = s.minute(minute);\n s = s.second(sec);\n s = s.millisecond(0);\n return s.epoch;\n },\n date: function date(s, n) {\n n = validate(n); //avoid setting february 31st\n\n if (n > 28) {\n var month = s.month();\n var max = monthLengths_1[month]; // support leap day in february\n\n if (month === 1 && n === 29 && isLeapYear$1(s.year())) {\n max = 29;\n }\n\n if (n > max) {\n n = max;\n }\n } //avoid setting < 0\n\n\n if (n <= 0) {\n n = 1;\n }\n\n walk_1(s, {\n date: n\n });\n return s.epoch;\n },\n //this one's tricky\n month: function month(s, n) {\n if (typeof n === 'string') {\n n = months$1.mapping()[n.toLowerCase()];\n }\n\n n = validate(n); //don't go past december\n\n if (n >= 12) {\n n = 11;\n }\n\n if (n <= 0) {\n n = 0;\n }\n\n var date = s.date(); //there's no 30th of february, etc.\n\n if (date > monthLengths_1[n]) {\n //make it as close as we can..\n date = monthLengths_1[n];\n }\n\n walk_1(s, {\n month: n,\n date: date\n });\n return s.epoch;\n },\n year: function year(s, n) {\n // support '97\n if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) {\n n = n.replace(/'/, '').trim();\n n = Number(n); // '89 is 1989\n\n if (n > 30) {\n //change this in 10y\n n = 1900 + n;\n } else {\n // '12 is 2012\n n = 2000 + n;\n }\n }\n\n n = validate(n);\n walk_1(s, {\n year: n\n });\n return s.epoch;\n },\n dayOfYear: function dayOfYear(s, n) {\n n = validate(n);\n var old = s.clone();\n n -= 1; //days are 1-based\n\n if (n <= 0) {\n n = 0;\n } else if (n >= 365) {\n n = 364;\n }\n\n s = s.startOf('year');\n s = s.add(n, 'day');\n confirm(s, old, 'hour');\n return s.epoch;\n }\n};\n\nvar methods$3 = {\n millisecond: function millisecond(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.milliseconds(s, num);\n return s;\n }\n\n return this.d.getMilliseconds();\n },\n second: function second(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.seconds(s, num);\n return s;\n }\n\n return this.d.getSeconds();\n },\n minute: function minute(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.minutes(s, num);\n return s;\n }\n\n return this.d.getMinutes();\n },\n hour: function hour(num) {\n var d = this.d;\n\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.hours(s, num);\n return s;\n }\n\n return d.getHours();\n },\n //'3:30' is 3.5\n hourFloat: function hourFloat(num) {\n if (num !== undefined) {\n var s = this.clone();\n\n var _minute = num % 1;\n\n _minute = _minute * 60;\n\n var _hour = parseInt(num, 10);\n\n s.epoch = set.hours(s, _hour);\n s.epoch = set.minutes(s, _minute);\n return s;\n }\n\n var d = this.d;\n var hour = d.getHours();\n var minute = d.getMinutes();\n minute = minute / 60;\n return hour + minute;\n },\n // hour in 12h format\n hour12: function hour12(str) {\n var d = this.d;\n\n if (str !== undefined) {\n var s = this.clone();\n str = '' + str;\n var m = str.match(/^([0-9]+)(am|pm)$/);\n\n if (m) {\n var hour = parseInt(m[1], 10);\n\n if (m[2] === 'pm') {\n hour += 12;\n }\n\n s.epoch = set.hours(s, hour);\n }\n\n return s;\n } //get the hour\n\n\n var hour12 = d.getHours();\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n }\n\n if (hour12 === 0) {\n hour12 = 12;\n }\n\n return hour12;\n },\n //some ambiguity here with 12/24h\n time: function time(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase().trim();\n s.epoch = set.time(s, str);\n return s;\n }\n\n return \"\".concat(this.h12(), \":\").concat(fns.zeroPad(this.minute())).concat(this.ampm());\n },\n // either 'am' or 'pm'\n ampm: function ampm(input) {\n var which = 'am';\n var hour = this.hour();\n\n if (hour >= 12) {\n which = 'pm';\n }\n\n if (typeof input !== 'string') {\n return which;\n } //okay, we're doing a setter\n\n\n var s = this.clone();\n input = input.toLowerCase().trim(); //ampm should never change the day\n // - so use `.hour(n)` instead of `.minus(12,'hour')`\n\n if (hour >= 12 && input === 'am') {\n //noon is 12pm\n hour -= 12;\n return s.hour(hour);\n }\n\n if (hour < 12 && input === 'pm') {\n hour += 12;\n return s.hour(hour);\n }\n\n return s;\n },\n //some hard-coded times of day, like 'noon'\n dayTime: function dayTime(str) {\n if (str !== undefined) {\n var times = {\n morning: '7:00am',\n breakfast: '7:00am',\n noon: '12:00am',\n lunch: '12:00pm',\n afternoon: '2:00pm',\n evening: '6:00pm',\n dinner: '6:00pm',\n night: '11:00pm',\n midnight: '23:59pm'\n };\n var s = this.clone();\n str = str || '';\n str = str.toLowerCase();\n\n if (times.hasOwnProperty(str) === true) {\n s = s.time(times[str]);\n }\n\n return s;\n }\n\n var h = this.hour();\n\n if (h < 6) {\n return 'night';\n }\n\n if (h < 12) {\n //until noon\n return 'morning';\n }\n\n if (h < 17) {\n //until 5pm\n return 'afternoon';\n }\n\n if (h < 22) {\n //until 10pm\n return 'evening';\n }\n\n return 'night';\n },\n //parse a proper iso string\n iso: function iso(num) {\n if (num !== undefined) {\n return this.set(num);\n }\n\n return this.format('iso');\n }\n};\nvar _01Time = methods$3;\n\nvar methods$2 = {\n // # day in the month\n date: function date(num) {\n if (num !== undefined) {\n var s = this.clone();\n num = parseInt(num, 10);\n\n if (num) {\n s.epoch = set.date(s, num);\n }\n\n return s;\n }\n\n return this.d.getDate();\n },\n //like 'wednesday' (hard!)\n day: function day(input) {\n if (input === undefined) {\n return this.d.getDay();\n }\n\n var original = this.clone();\n var want = input; // accept 'wednesday'\n\n if (typeof input === 'string') {\n input = input.toLowerCase();\n\n if (days.aliases.hasOwnProperty(input)) {\n want = days.aliases[input];\n } else {\n want = days[\"short\"]().indexOf(input);\n\n if (want === -1) {\n want = days[\"long\"]().indexOf(input);\n }\n }\n } //move approx\n\n\n var day = this.d.getDay();\n var diff = day - want;\n var s = this.subtract(diff, 'days'); //tighten it back up\n\n walk_1(s, {\n hour: original.hour(),\n minute: original.minute(),\n second: original.second()\n });\n return s;\n },\n //these are helpful name-wrappers\n dayName: function dayName(input) {\n if (input === undefined) {\n return days[\"long\"]()[this.day()];\n }\n\n var s = this.clone();\n s = s.day(input);\n return s;\n },\n //either name or number\n month: function month(input) {\n if (input !== undefined) {\n var s = this.clone();\n s.epoch = set.month(s, input);\n return s;\n }\n\n return this.d.getMonth();\n }\n};\nvar _02Date = methods$2;\n\nvar clearMinutes = function clearMinutes(s) {\n s = s.minute(0);\n s = s.second(0);\n s = s.millisecond(1);\n return s;\n};\n\nvar methods$1 = {\n // day 0-366\n dayOfYear: function dayOfYear(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.dayOfYear(s, num);\n return s;\n } //days since newyears - jan 1st is 1, jan 2nd is 2...\n\n\n var sum = 0;\n var month = this.d.getMonth();\n var tmp; //count the num days in each month\n\n for (var i = 1; i <= month; i++) {\n tmp = new Date();\n tmp.setDate(1);\n tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years\n\n tmp.setHours(1);\n tmp.setMinutes(1);\n tmp.setMonth(i);\n tmp.setHours(-2); //the last day of the month\n\n sum += tmp.getDate();\n }\n\n return sum + this.d.getDate();\n },\n //since the start of the year\n week: function week(num) {\n // week-setter\n if (num !== undefined) {\n var s = this.clone();\n s = s.month(0);\n s = s.date(1);\n s = s.day('monday');\n s = clearMinutes(s); //first week starts first Thurs in Jan\n // so mon dec 28th is 1st week\n // so mon dec 29th is not the week\n\n if (s.monthName() === 'december' && s.date() >= 28) {\n s = s.add(1, 'week');\n }\n\n num -= 1; //1-based\n\n s = s.add(num, 'weeks');\n return s;\n } //find-out which week it is\n\n\n var tmp = this.clone();\n tmp = tmp.month(0);\n tmp = tmp.date(1);\n tmp = clearMinutes(tmp);\n tmp = tmp.day('monday'); //don't go into last-year\n\n if (tmp.monthName() === 'december' && tmp.date() >= 28) {\n tmp = tmp.add(1, 'week');\n } // is first monday the 1st?\n\n\n var toAdd = 1;\n\n if (tmp.date() === 1) {\n toAdd = 0;\n }\n\n tmp = tmp.minus(1, 'second');\n var thisOne = this.epoch; //if the week technically hasn't started yet\n\n if (tmp.epoch > thisOne) {\n return 1;\n } //speed it up, if we can\n\n\n var i = 0;\n var skipWeeks = this.month() * 4;\n tmp.epoch += milliseconds.week * skipWeeks;\n i += skipWeeks;\n\n for (; i <= 52; i++) {\n if (tmp.epoch > thisOne) {\n return i + toAdd;\n }\n\n tmp = tmp.add(1, 'week');\n }\n\n return 52;\n },\n //'january'\n monthName: function monthName(input) {\n if (input === undefined) {\n return months$1[\"long\"]()[this.month()];\n }\n\n var s = this.clone();\n s = s.month(input);\n return s;\n },\n //q1, q2, q3, q4\n quarter: function quarter(num) {\n if (num !== undefined) {\n if (typeof num === 'string') {\n num = num.replace(/^q/i, '');\n num = parseInt(num, 10);\n }\n\n if (quarters[num]) {\n var s = this.clone();\n var _month = quarters[num][0];\n s = s.month(_month);\n s = s.date(1);\n s = s.startOf('day');\n return s;\n }\n }\n\n var month = this.d.getMonth();\n\n for (var i = 1; i < quarters.length; i++) {\n if (month < quarters[i][0]) {\n return i - 1;\n }\n }\n\n return 4;\n },\n //spring, summer, winter, fall\n season: function season(input) {\n var hem = 'north';\n\n if (this.hemisphere() === 'South') {\n hem = 'south';\n }\n\n if (input !== undefined) {\n var s = this.clone();\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (input === seasons[hem][i][0]) {\n s = s.month(seasons[hem][i][1]);\n s = s.date(1);\n s = s.startOf('day');\n }\n }\n\n return s;\n }\n\n var month = this.d.getMonth();\n\n for (var _i = 0; _i < seasons[hem].length - 1; _i++) {\n if (month >= seasons[hem][_i][1] && month < seasons[hem][_i + 1][1]) {\n return seasons[hem][_i][0];\n }\n }\n\n return 'winter';\n },\n //the year number\n year: function year(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.year(s, num);\n return s;\n }\n\n return this.d.getFullYear();\n },\n //bc/ad years\n era: function era(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase(); //TODO: there is no year-0AD i think. may have off-by-1 error here\n\n var year = s.d.getFullYear(); //make '1992' into 1992bc..\n\n if (str === 'bc' && year > 0) {\n s.epoch = set.year(s, year * -1);\n } //make '1992bc' into '1992'\n\n\n if (str === 'ad' && year < 0) {\n s.epoch = set.year(s, year * -1);\n }\n\n return s;\n }\n\n if (this.d.getFullYear() < 0) {\n return 'BC';\n }\n\n return 'AD';\n },\n // 2019 -> 2010\n decade: function decade(input) {\n if (input !== undefined) {\n input = String(input);\n input = input.replace(/([0-9])'?s$/, '$1'); //1950's\n\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n if (!input) {\n console.warn('Spacetime: Invalid decade input');\n return this;\n } // assume 20th century?? for '70s'.\n\n\n if (input.length === 2 && /[0-9][0-9]/.test(input)) {\n input = '19' + input;\n }\n\n var year = Number(input);\n\n if (isNaN(year)) {\n return this;\n } // round it down to the decade\n\n\n year = Math.floor(year / 10) * 10;\n return this.year(year); //.startOf('decade')\n }\n\n return this.startOf('decade').year();\n },\n // 1950 -> 19+1\n century: function century(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = input.replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i, function (a, b, c) {\n if (c.match(/b\\.?c\\.?/i)) {\n b = '-' + b;\n }\n\n return b;\n });\n input = input.replace(/c$/, ''); //20thC\n }\n\n var year = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid century input');\n return this;\n } // there is no century 0\n\n\n if (year === 0) {\n year = 1;\n }\n\n if (year >= 0) {\n year = (year - 1) * 100;\n } else {\n year = (year + 1) * 100;\n }\n\n return this.year(year);\n } // century getter\n\n\n var num = this.startOf('century').year();\n num = Math.floor(num / 100);\n\n if (num < 0) {\n return num - 1;\n }\n\n return num + 1;\n },\n // 2019 -> 2+1\n millenium: function millenium(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid millenium input');\n return this;\n }\n }\n\n if (input > 0) {\n input -= 1;\n }\n\n var year = input * 1000; // there is no year 0\n\n if (year === 0) {\n year = 1;\n }\n\n return this.year(year);\n } // get the current millenium\n\n\n var num = Math.floor(this.year() / 1000);\n\n if (num >= 0) {\n num += 1;\n }\n\n return num;\n }\n};\nvar _03Year = methods$1;\n\nvar methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\nmethods.milliseconds = methods.millisecond;\nmethods.seconds = methods.second;\nmethods.minutes = methods.minute;\nmethods.hours = methods.hour;\nmethods.hour24 = methods.hour;\nmethods.h12 = methods.hour12;\nmethods.h24 = methods.hour24;\nmethods.days = methods.day;\n\nvar addMethods$4 = function addMethods(Space) {\n //hook the methods into prototype\n Object.keys(methods).forEach(function (k) {\n Space.prototype[k] = methods[k];\n });\n};\n\nvar query = addMethods$4;\n\nvar isLeapYear = fns.isLeapYear;\n\nvar getMonthLength = function getMonthLength(month, year) {\n if (month === 1 && isLeapYear(year)) {\n return 29;\n }\n\n return monthLengths_1[month];\n}; //month is the one thing we 'model/compute'\n//- because ms-shifting can be off by enough\n\n\nvar rollMonth = function rollMonth(want, old) {\n //increment year\n if (want.month > 0) {\n var years = parseInt(want.month / 12, 10);\n want.year = old.year() + years;\n want.month = want.month % 12;\n } else if (want.month < 0) {\n //decrement year\n var _years = Math.floor(Math.abs(want.month) / 13, 10);\n\n _years = Math.abs(_years) + 1;\n want.year = old.year() - _years; //ignore extras\n\n want.month = want.month % 12;\n want.month = want.month + 12;\n\n if (want.month === 12) {\n want.month = 0;\n }\n }\n\n return want;\n}; // briefly support day=-2 (this does not need to be perfect.)\n\n\nvar rollDaysDown = function rollDaysDown(want, old, sum) {\n want.year = old.year();\n want.month = old.month();\n var date = old.date();\n want.date = date - Math.abs(sum);\n\n while (want.date < 1) {\n want.month -= 1;\n\n if (want.month < 0) {\n want.month = 11;\n want.year -= 1;\n }\n\n var max = getMonthLength(want.month, want.year);\n want.date += max;\n }\n\n return want;\n}; // briefly support day=33 (this does not need to be perfect.)\n\n\nvar rollDaysUp = function rollDaysUp(want, old, sum) {\n var year = old.year();\n var month = old.month();\n var max = getMonthLength(month, year);\n\n while (sum > max) {\n sum -= max;\n month += 1;\n\n if (month >= 12) {\n month -= 12;\n year += 1;\n }\n\n max = getMonthLength(month, year);\n }\n\n want.month = month;\n want.date = sum;\n return want;\n};\n\nvar _model = {\n months: rollMonth,\n days: rollDaysUp,\n daysBack: rollDaysDown\n};\n\n// but briefly:\n// millisecond-math, and some post-processing covers most-things\n// we 'model' the calendar here only a little bit\n// and that usually works-out...\n\nvar order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\nvar keep = {\n second: order.slice(0, 1),\n minute: order.slice(0, 2),\n quarterhour: order.slice(0, 2),\n hour: order.slice(0, 3),\n date: order.slice(0, 4),\n month: order.slice(0, 4),\n quarter: order.slice(0, 4),\n season: order.slice(0, 4),\n year: order,\n decade: order,\n century: order\n};\nkeep.week = keep.hour;\nkeep.season = keep.date;\nkeep.quarter = keep.date; // Units need to be dst adjuested\n\nvar dstAwareUnits = {\n year: true,\n quarter: true,\n season: true,\n month: true,\n week: true,\n day: true\n};\nvar keepDate = {\n month: true,\n quarter: true,\n season: true,\n year: true\n};\n\nvar addMethods$3 = function addMethods(SpaceTime) {\n SpaceTime.prototype.add = function (num, unit) {\n var s = this.clone();\n\n if (!unit || num === 0) {\n return s; //don't bother\n }\n\n var old = this.clone();\n unit = fns.normalize(unit);\n\n if (unit === 'millisecond') {\n s.epoch += num;\n return s;\n } // support 'fortnight' alias\n\n\n if (unit === 'fortnight') {\n num *= 2;\n unit = 'week';\n } //move forward by the estimated milliseconds (rough)\n\n\n if (milliseconds[unit]) {\n s.epoch += milliseconds[unit] * num;\n } else if (unit === 'week') {\n s.epoch += milliseconds.day * (num * 7);\n } else if (unit === 'quarter' || unit === 'season') {\n s.epoch += milliseconds.month * (num * 3);\n } else if (unit === 'quarterhour') {\n s.epoch += milliseconds.minute * 15 * num;\n } //now ensure our milliseconds/etc are in-line\n\n\n var want = {};\n\n if (keep[unit]) {\n keep[unit].forEach(function (u) {\n want[u] = old[u]();\n });\n }\n\n if (dstAwareUnits[unit]) {\n var diff = old.timezone().current.offset - s.timezone().current.offset;\n s.epoch += diff * 3600 * 1000;\n } //ensure month/year has ticked-over\n\n\n if (unit === 'month') {\n want.month = old.month() + num; //month is the one unit we 'model' directly\n\n want = _model.months(want, old);\n } //support coercing a week, too\n\n\n if (unit === 'week') {\n var sum = old.date() + num * 7;\n\n if (sum <= 28 && sum > 1) {\n want.date = sum;\n }\n } //support 25-hour day-changes on dst-changes\n else if (unit === 'date') {\n if (num < 0) {\n want = _model.daysBack(want, old, num);\n } else {\n //specify a naive date number, if it's easy to do...\n var _sum = old.date() + num; // ok, model this one too\n\n\n want = _model.days(want, old, _sum);\n } //manually punt it if we haven't moved at all..\n\n\n if (num !== 0 && old.isSame(s, 'day')) {\n want.date = old.date() + num;\n }\n } // ensure a quarter is 3 months over\n else if (unit === 'quarter') {\n want.month = old.month() + num * 3;\n want.year = old.year(); // handle rollover\n\n if (want.month < 0) {\n var years = Math.floor(want.month / 12);\n var remainder = want.month + Math.abs(years) * 12;\n want.month = remainder;\n want.year += years;\n } else if (want.month >= 12) {\n var _years = Math.floor(want.month / 12);\n\n want.month = want.month % 12;\n want.year += _years;\n }\n\n want.date = old.date();\n } //ensure year has changed (leap-years)\n else if (unit === 'year') {\n var wantYear = old.year() + num;\n var haveYear = s.year();\n\n if (haveYear < wantYear) {\n s.epoch += milliseconds.day;\n } else if (haveYear > wantYear) {\n s.epoch += milliseconds.day;\n }\n } //these are easier\n else if (unit === 'decade') {\n want.year = s.year() + 10;\n } else if (unit === 'century') {\n want.year = s.year() + 100;\n } //keep current date, unless the month doesn't have it.\n\n\n if (keepDate[unit]) {\n var max = monthLengths_1[want.month];\n want.date = old.date();\n\n if (want.date > max) {\n want.date = max;\n }\n }\n\n if (Object.keys(want).length > 1) {\n walk_1(s, want);\n }\n\n return s;\n }; //subtract is only add *-1\n\n\n SpaceTime.prototype.subtract = function (num, unit) {\n var s = this.clone();\n return s.add(num * -1, unit);\n }; //add aliases\n\n\n SpaceTime.prototype.minus = SpaceTime.prototype.subtract;\n SpaceTime.prototype.plus = SpaceTime.prototype.add;\n};\n\nvar add = addMethods$3;\n\n//make a string, for easy comparison between dates\nvar print = {\n millisecond: function millisecond(s) {\n return s.epoch;\n },\n second: function second(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-');\n },\n minute: function minute(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-');\n },\n hour: function hour(s) {\n return [s.year(), s.month(), s.date(), s.hour()].join('-');\n },\n day: function day(s) {\n return [s.year(), s.month(), s.date()].join('-');\n },\n week: function week(s) {\n return [s.year(), s.week()].join('-');\n },\n month: function month(s) {\n return [s.year(), s.month()].join('-');\n },\n quarter: function quarter(s) {\n return [s.year(), s.quarter()].join('-');\n },\n year: function year(s) {\n return s.year();\n }\n};\nprint.date = print.day;\n\nvar addMethods$2 = function addMethods(SpaceTime) {\n SpaceTime.prototype.isSame = function (b, unit) {\n var tzAware = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var a = this;\n\n if (!unit) {\n return null;\n } // support swapped params\n\n\n if (typeof b === 'string' && _typeof(unit) === 'object') {\n var tmp = b;\n b = unit;\n unit = tmp;\n }\n\n if (typeof b === 'string' || typeof b === 'number') {\n b = new SpaceTime(b, this.timezone.name);\n } //support 'seconds' aswell as 'second'\n\n\n unit = unit.replace(/s$/, ''); // make them the same timezone for proper comparison\n\n if (tzAware === true && a.tz !== b.tz) {\n b = b.clone();\n b.tz = a.tz;\n }\n\n if (print[unit]) {\n return print[unit](a) === print[unit](b);\n }\n\n return null;\n };\n};\n\nvar same = addMethods$2;\n\nvar addMethods$1 = function addMethods(SpaceTime) {\n var methods = {\n isAfter: function isAfter(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch > epoch;\n },\n isBefore: function isBefore(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch < epoch;\n },\n isEqual: function isEqual(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch === epoch;\n },\n isBetween: function isBetween(start, end) {\n var isInclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n start = fns.beADate(start, this);\n end = fns.beADate(end, this);\n var startEpoch = fns.getEpoch(start);\n\n if (startEpoch === null) {\n return null;\n }\n\n var endEpoch = fns.getEpoch(end);\n\n if (endEpoch === null) {\n return null;\n }\n\n if (isInclusive) {\n return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end);\n }\n\n return startEpoch < this.epoch && this.epoch < endEpoch;\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar compare = addMethods$1;\n\nvar addMethods = function addMethods(SpaceTime) {\n var methods = {\n i18n: function i18n(data) {\n //change the day names\n if (fns.isObject(data.days)) {\n days.set(data.days);\n } //change the month names\n\n\n if (fns.isObject(data.months)) {\n months$1.set(data.months);\n } // change the the display style of the month / day names\n\n\n if (fns.isBoolean(data.useTitleCase)) {\n caseFormat.set(data.useTitleCase);\n }\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar i18n = addMethods;\n\nvar timezones = unpack; //fake timezone-support, for fakers (es5 class)\n\nvar SpaceTime = function SpaceTime(input$1, tz) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n //the holy moment\n this.epoch = null; //the shift for the given timezone\n\n this.tz = find(tz, timezones); //whether to output warnings to console\n\n this.silent = options.silent || true; // favour british interpretation of 02/02/2018, etc\n\n this.british = options.dmy || options.british; //does the week start on sunday, or monday:\n\n this._weekStart = 1; //default to monday\n\n if (options.weekStart !== undefined) {\n this._weekStart = options.weekStart;\n } // the reference today date object, (for testing)\n\n\n this._today = {};\n\n if (options.today !== undefined) {\n this._today = options.today;\n } //add getter/setters\n\n\n Object.defineProperty(this, 'd', {\n //return a js date object\n get: function get() {\n var offset = quick(this); //every computer is somewhere- get this computer's built-in offset\n\n var bias = new Date(this.epoch).getTimezoneOffset() || 0; //movement\n\n var shift = bias + offset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n //remove this computer's offset\n\n var epoch = this.epoch + shift;\n var d = new Date(epoch);\n return d;\n }\n }); //add this data on the object, to allow adding new timezones\n\n Object.defineProperty(this, 'timezones', {\n get: function get() {\n return timezones;\n },\n set: function set(obj) {\n timezones = obj;\n return obj;\n }\n }); //parse the various formats\n\n var tmp = input(this, input$1, tz);\n this.epoch = tmp.epoch;\n}; //(add instance methods to prototype)\n\n\nObject.keys(methods_1).forEach(function (k) {\n SpaceTime.prototype[k] = methods_1[k];\n}); // ¯\\_(ツ)_/¯\n\nSpaceTime.prototype.clone = function () {\n return new SpaceTime(this.epoch, this.tz, {\n silent: this.silent,\n weekStart: this._weekStart,\n today: this._today\n });\n}; //return native date object at the same epoch\n\n\nSpaceTime.prototype.toLocalDate = function () {\n return new Date(this.epoch);\n}; //append more methods\n\n\nquery(SpaceTime);\nadd(SpaceTime);\nsame(SpaceTime);\ncompare(SpaceTime);\ni18n(SpaceTime);\nvar spacetime = SpaceTime;\n\nvar whereIts = function whereIts(a, b) {\n var start = new spacetime(null);\n var end = new spacetime(null);\n start = start.time(a); //if b is undefined, use as 'within one hour'\n\n if (b) {\n end = end.time(b);\n } else {\n end = start.add(59, 'minutes');\n }\n\n var startHour = start.hour();\n var endHour = end.hour();\n var tzs = Object.keys(start.timezones).filter(function (tz) {\n if (tz.indexOf('/') === -1) {\n return false;\n }\n\n var m = new spacetime(null, tz);\n var hour = m.hour(); //do 'calendar-compare' not real-time-compare\n\n if (hour >= startHour && hour <= endHour) {\n //test minutes too, if applicable\n if (hour === startHour && m.minute() < start.minute()) {\n return false;\n }\n\n if (hour === endHour && m.minute() > end.minute()) {\n return false;\n }\n\n return true;\n }\n\n return false;\n });\n return tzs;\n};\n\nvar whereIts_1 = whereIts;\n\nvar _version = '6.14.0';\n\nvar main = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n}; // set all properties of a given 'today' object\n\n\nvar setToday = function setToday(s) {\n var today = s._today || {};\n Object.keys(today).forEach(function (k) {\n s = s[k](today[k]);\n });\n return s;\n}; //some helper functions on the main method\n\n\nmain.now = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s;\n};\n\nmain.today = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.startOf('day');\n};\n\nmain.tomorrow = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.add(1, 'day').startOf('day');\n};\n\nmain.yesterday = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.subtract(1, 'day').startOf('day');\n};\n\nmain.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n};\n\nmain.timezones = function () {\n var s = new spacetime();\n return s.timezones;\n};\n\nmain.max = function (tz, options) {\n var s = new spacetime(null, tz, options);\n s.epoch = 8640000000000000;\n return s;\n};\n\nmain.min = function (tz, options) {\n var s = new spacetime(null, tz, options);\n s.epoch = -8640000000000000;\n return s;\n}; //find tz by time\n\n\nmain.whereIts = whereIts_1;\nmain.version = _version; //aliases:\n\nmain.plugin = main.extend;\nvar src = main;\n\nexport default src;\n","const spacetime = require('spacetime')\n\nconst parseSentence = function (doc) {\n let s = doc.sentence()\n if (!s) {\n return null\n }\n let txt = s.text() || ''\n let paren = txt.match(/\\(.*\\)/)\n if (!paren || !paren[0]) {\n return null\n }\n txt = paren[0] || ''\n txt = txt.trim()\n txt = txt.replace(/^\\(/, '')\n txt = txt.replace(/\\)$/, '')\n let split = txt.split(/ – /)\n split = split.filter((str) => str)\n // got birth/death info\n if (split[0] && split[1] && split.length === 2) {\n return {\n birth: split[0],\n death: split[1],\n }\n }\n // try for just birth date in parentheses\n if (split[0]) {\n let str = split[0].replace(/^(born|ne) (c\\.)?/, '')\n let d = spacetime(str)\n if (d.isValid()) {\n return {\n birth: str,\n }\n }\n }\n return null\n}\nmodule.exports = parseSentence\n","const byCategory = function (doc) {\n let cats = doc.categories()\n for (let i = 0; i < cats.length; i += 1) {\n let m = cats[i].match(/([0-9]{4}) births/)\n if (m && m[1]) {\n let year = parseInt(m[1], 10)\n if (year && year > 1000) {\n return year\n }\n }\n }\n return null\n}\nmodule.exports = byCategory\n","const spacetime = require('spacetime')\n\nconst parseDate = function (str) {\n if (!str) {\n return null\n }\n // remove parentheses\n str = str.replace(/\\(.*\\)/, '')\n str = str.trim()\n // just the year\n if (str.match(/^[0-9]{4}$/)) {\n return {\n year: parseInt(str, 10),\n }\n }\n // parse the full date\n let s = spacetime(str)\n return {\n year: s.year(),\n month: s.month(),\n date: s.date(),\n }\n}\nmodule.exports = parseDate\n","const byInfobox = require('../getInfobox')\nconst bySentence = require('../getSentence')\nconst byCategory = require('./byCategory')\nconst parseDate = require('../parseDate')\n\nconst birthDate = function (doc) {\n let res = byInfobox(doc, 'birth_date')\n if (res) {\n return parseDate(res)\n }\n\n // try parentheses in first sentence\n res = bySentence(doc)\n if (res && res.birth) {\n return parseDate(res.birth)\n }\n\n // try to get year from 'Category:1955 births'\n let year = byCategory(doc)\n if (year) {\n return { year: year }\n }\n return null\n}\nmodule.exports = birthDate\n","const byInfobox = require('../getInfobox')\n\nconst birthPlace = function (doc) {\n let res = byInfobox(doc, 'birth_place')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = birthPlace\n","const aliveCats = {\n 'Living people': true,\n 'Year of birth missing (living people)': true,\n 'Date of birth missing (living people)': true,\n 'Place of birth missing (living people)': true,\n 'Active politicians': true,\n 'Biography articles of living people': true,\n}\n\nconst didDie = {\n 'Dead people': true,\n 'Date of death missing': true,\n 'Date of death unknown': true,\n 'Place of death missing': true,\n 'Place of death unknown': true,\n 'Year of death missing': true,\n 'Year of death unknown': true,\n 'Year of death uncertain': true,\n 'Recent deaths': true,\n 'People declared dead in absentia': true,\n 'Politicians elected posthumously': true,\n 'People who died in office': true,\n 'Assassinated heads of state‎ ': true,\n 'Assassinated heads of government': true,\n 'Assassinated mayors': true,\n 'People who died in Nazi concentration camps': true,\n 'People executed in Nazi concentration camps': true,\n 'Politicians who died in Nazi concentration camps': true,\n 'People who have received posthumous pardons': true,\n 'People lost at sea‎': true,\n 'Deaths due to shipwreck': true,\n 'People who died at sea': true,\n 'Unsolved deaths‎': true,\n 'Deaths by horse-riding accident‎': true,\n 'Deaths from falls‎': true,\n 'Deaths by poisoning‎‎': true,\n 'Deaths from cerebrovascular disease‎': true,\n 'Deaths from asphyxiation‎': true,\n 'Deaths from sepsis‎': true,\n 'Deaths from pneumonia‎': true,\n 'Deaths from dysentery‎‎': true,\n 'Deaths by drowning‎': true,\n}\n\nconst byCat = function (doc) {\n let cats = doc.categories()\n\n //confirmed alive categories\n if (cats.find((c) => aliveCats.hasOwnProperty(c))) {\n return true\n }\n //confirmed death categories\n if (cats.find((c) => didDie.hasOwnProperty(c))) {\n return false\n }\n return null\n}\nmodule.exports = byCat\n","// blp = biography of living persons\n\n// {{WikiProject Biography}} (with living=yes parameter)\n// {{WikiProject banner shell}} (with blp=y parameter)\n\nconst isAlive = {\n blp: true,\n 'blp unsourced': true,\n 'blp unsourced section': true,\n 'blp primary sources': true,\n 'blp self-published': true,\n 'blp sources': true,\n 'blp sources section': true,\n 'blp imdb-only refimprove': true,\n 'blp imdb refimprove': true,\n 'blp no footnotes': true,\n 'blp more footnotes': true,\n 'blp one source': true,\n 'active politician': true,\n activepol: true,\n 'current person': true,\n}\n\nconst isDead = {\n 'recent death': true,\n 'recent death presumed': true,\n 'recent death confirmed': true,\n obituary: true,\n elegy: true,\n eulogy: true,\n panegyric: true,\n memorial: true,\n}\nconst byTemplate = function (doc) {\n let templates = doc.templates()\n for (let i = 0; i < templates.length; i++) {\n let title = templates[i].template || ''\n title = title.toLowerCase().trim()\n if (isAlive.hasOwnProperty(title)) {\n return true\n }\n if (isDead.hasOwnProperty(title)) {\n return false\n }\n }\n // `{{WikiProject Biography|living=yes|activepol=yes}}`\n let bio = doc.template('WikiProject Biography')\n if (bio) {\n //living blp BLP\n if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') {\n return true\n }\n if (bio.living === 'no' || bio.blp === 'no' || bio.BLP === 'no') {\n return false\n }\n }\n return null\n}\nmodule.exports = byTemplate\n","const byCat = require('./byCategory')\nconst byTemplate = require('./byTemplate')\n\n// maximum age of a person\nlet d = new Date()\nconst minYear = d.getFullYear() - 105\n\nconst isAlive = function (doc) {\n // if we have a death date\n let death = doc.deathDate()\n if (death) {\n return false\n }\n // if we have a death place\n let deathPlace = doc.deathPlace()\n if (deathPlace) {\n return false\n }\n // does it have a good category?\n let fromCat = byCat(doc)\n if (fromCat === true || fromCat === false) {\n return fromCat\n }\n // does it have a good template?\n let fromTemplate = byTemplate(doc)\n if (fromTemplate === true || fromTemplate === false) {\n return fromTemplate\n }\n // were they born in 1900?\n let birth = doc.birthDate()\n if (birth && birth.year && birth.year < minYear) {\n return true\n }\n return null\n}\nmodule.exports = isAlive\n","const byCategory = function (doc) {\n let cats = doc.categories()\n for (let i = 0; i < cats.length; i += 1) {\n let m = cats[i].match(/([0-9]{4}) deaths/)\n if (m && m[1]) {\n let year = parseInt(m[1], 10)\n if (year && year > 1000) {\n return year\n }\n }\n }\n return null\n}\nmodule.exports = byCategory\n","const byInfobox = require('../getInfobox')\nconst bySentence = require('../getSentence')\nconst byCategory = require('./byCategory')\nconst parseDate = require('../parseDate')\n\nconst deathDate = function (doc) {\n let res = byInfobox(doc, 'death_date')\n if (res) {\n return parseDate(res)\n }\n // try parentheses in first sentence\n res = bySentence(doc)\n if (res && res.death) {\n return parseDate(res.death)\n }\n\n // try to get year from 'Category:1955 deaths'\n let year = byCategory(doc)\n if (year) {\n return { year: year }\n }\n return null\n}\nmodule.exports = deathDate\n","const byInfobox = require('../getInfobox')\n\nconst deathPlace = function (doc) {\n let res = byInfobox(doc, 'death_place')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = deathPlace\n","const byInfobox = require('../getInfobox')\n\nconst getNationality = function (doc) {\n let res = byInfobox(doc, 'nationality')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = getNationality\n","const birthDate = require('./birthDate')\nconst birthPlace = require('./birthPlace')\nconst isAlive = require('./isAlive')\nconst deathDate = require('./deathDate')\nconst deathPlace = require('./deathPlace')\nconst nationality = require('./nationality')\n\nconst addMethod = function (models) {\n models.Doc.prototype.birthDate = function () {\n return birthDate(this)\n }\n models.Doc.prototype.birthPlace = function () {\n return birthPlace(this)\n }\n models.Doc.prototype.isAlive = function () {\n return isAlive(this)\n }\n models.Doc.prototype.deathDate = function () {\n return deathDate(this)\n }\n models.Doc.prototype.deathPlace = function () {\n return deathPlace(this)\n }\n models.Doc.prototype.nationality = function () {\n return nationality(this)\n }\n}\nmodule.exports = addMethod\n"],"names":["actor","adult_biography","afl_biography","alpine_ski_racer","archbishop","architect","artist","athlete","baseball_biography","basketball_biography","boxer","canadianmp","cfl_player","chef","chess_player","christian_leader","college_coach","college_football_player","comedian","comics_creator","cricketer","criminal","cyclist","economist","engineer","fashion_designer","field_hockey_player","figure_skater","football_biography","gaa_player","golfer","governor","gridiron_football_person","gymnast","handball_biography","hindu_leader","horseracing_personality","ice_hockey_player","indian_politician","judge","lacrosse_player","martial_artist","mass_murderer","medical_person","military_person","minister","mlb_player","model","monarch","mp","nascar_driver","nba_biography","nfl_biography","nfl_player","officeholder","person","philosopher","police_officer","politician","presenter","president","professional_wrestler","racing_driver","religious_biography","roman_emperor","royalty","rugby_biography","rugby_league_biography","saint","scholar","scientist","skier","sportsperson","squash_player","state_representative","state_senator","swimmer","tennis_biography","volleyball_biography","volleyball_player","wrc_driver","writer","bishop","congressman","astronaut","senator","byInfobox","doc","prop","infoboxes","i","length","inf","type","toLowerCase","trim","mapping","hasOwnProperty","s","get","text","_typeof","obj","Symbol","iterator","constructor","prototype","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","Object","_arr","_n","_d","_e","undefined","_i","_s","next","done","push","value","err","o","minLen","_arrayLikeToArray","n","toString","call","slice","name","from","test","len","arr2","TypeError","MSEC_IN_HOUR","toUtc","dstChange","offset","year","_dstChange$split","split","_dstChange$split2","month","rest","_rest$split","_rest$split2","day","hour","Date","UTC","inSummerTime","epoch","start","end","summerOffset","winterOffset","getUTCFullYear","startUtc","endUtc","summerTime","quickOffset","zones","timezones","tz","console","warn","dst","jul","dec","hem","inSummer","quick","_build","_build$1","freeze","__proto__","_prefixes","createCommonjsModule","fn","module","exports","getCjsExportFromNamespace","data","all","keys","forEach","k","Number","names","str","replace","before","num","unpack","fallbackTZ","safeIntl","Intl","DateTimeFormat","format","resolvedOptions","timezone","timeZone","guessTz","guessTz_1","isOffset","isNumber","utcOffset","gmtOffset","toIana","parseOffset$1","parseOffset","m","match","parseOffset_1$1","local","cities","reduce","h","city","normalize","lookupTz","error","id","Error","find","millisecond","second","minute","date","week","milliseconds","walk","unit","previous","current","d","startUnit","original","diff","Math","abs","halfStep","units$3","valid","walkTo","getMonth","getFullYear","seconds","wants","old","clone","parseInt","silent","walk_1","shortMonths","longMonths","buildMapping","sep","months$1","short","long","set","i18n","parseFloat","parseOffset_1","parseTime","arguments","startOf","concat","substring","ampm","_h","parseTime_1","monthLengths","monthLengths_1","fns","isLeapYear","isDate","isNaN","valueOf","input","isObject","isBoolean","zeroPad","pad","join","titleCase","toUpperCase","substr","ordinal","j","toCardinal","String","getEpoch","tmp","getTime","beADate","formatTimezone","delimiter","sign","absOffset","hours","minutes","isLeapYear$2","hasDate","max","hasDate_1","months","parseYear","today","strFmt","reg","parse","givenTz","options","british","_today","quarter","season","getDate","strParse","getNow","now","dates","tonight","tomorrow","add","yesterday","subtract","christmas","newYears","namedDates","minimumEpoch","defaults","handleArray","order","handleObject","assign","parseInput","res","isValid","_res","shortDays","longDays","days","aliases","mo","tu","we","th","fr","sa","su","tues","weds","wedn","thur","thurs","titleCaseEnabled","caseFormat","useTitleCase","isoOffset","_offset","applyCaseFormat","dayName","dayShort","dayNumber","dayOrdinal","dayPad","dateOrdinal","datePad","monthName","monthShort","monthNumber","monthOrdinal","monthPad","isoMonth","yearShort","isoYear","isNegative","time","time24","hour24","hour12","hourPad","hour24Pad","minutePad","secondPad","era","json","numeric","numericUs","numericUk","mmDd","iso","h24","ms","isoShort","isoUtc","toISOString","nice","nice24","niceYear","niceDay","niceFull","niceFull24","mdy","dmy","ymd","printFormat","out","indexOf","sections","_","fmt","_out","format_1","G","GG","GGG","GGGG","y","yy","yyy","yyyy","yyyyy","Q","QQ","QQQ","QQQQ","M","MM","MMM","MMMM","w","ww","dd","D","dayOfYear","DD","DDD","E","EE","EEE","EEEE","EEEEE","e","ee","eee","eeee","eeeee","a","aa","aaa","aaaa","h12","hh","H","HH","mm","ss","A","z","zz","zzz","zzzz","Z","ZZ","ZZZ","ZZZZ","addAlias","_char","to","toName","escapeChars","filter","ch","combineRepeated","c","map","unixFmt","txt","unixFmt_1","units$2","doUnit","endOf","duration","percent","toFixed","progress","progress_1","nearest","prog","nearest_1","climb","b","isBefore","isAfter","diffOne","one","fastYear","years","diff$1","msDiff","weeks","waterfall","reverseDiff","main$1","main","reversed","qualifiers","almost","over","getDiff","later","earlier","isSame","u","pluralize","since","isNow","every","rounded","qualified","precise","englishValues","units","englishValue","nextUnit","nextValue","splice","since_1","seasons","north","south","quarters","units$1","quarterhour","_weekStart","q","hemisphere","decade","century","startOf_1","isDay","result","every_1","parseDst","epochShift","found","hasDst","Boolean","default_offset","change","back","summer","winter","isDST","timezone_1","methods$4","input$1","hasDST","leapYear","last","goto","isAwake","isAsleep","log","logYear","_this","debug","fromNow","weekStart","inDST","round","each","methods_1","isLeapYear$1","validate","order$1","confirm","want","shift","sec","methods$3","getMilliseconds","getSeconds","getMinutes","getHours","hourFloat","_minute","_hour","which","dayTime","times","morning","breakfast","noon","lunch","afternoon","evening","dinner","night","midnight","_01Time","methods$2","getDay","_02Date","clearMinutes","methods$1","sum","setDate","setFullYear","setHours","setMinutes","setMonth","toAdd","minus","thisOne","skipWeeks","_month","floor","millenium","_03Year","methods","addMethods$4","addMethods","Space","query","getMonthLength","rollMonth","_years","rollDaysDown","rollDaysUp","_model","daysBack","keep","dstAwareUnits","keepDate","addMethods$3","SpaceTime","_sum","remainder","wantYear","haveYear","plus","print","addMethods$2","tzAware","same","addMethods$1","isEqual","isBetween","isInclusive","startEpoch","endEpoch","compare","defineProperty","bias","getTimezoneOffset","toLocalDate","spacetime","whereIts","startHour","endHour","tzs","whereIts_1","_version","setToday","extend","min","version","plugin","src","parseSentence","sentence","paren","birth","death","byCategory","cats","categories","parseDate","birthDate","bySentence","birthPlace","aliveCats","didDie","byCat","isAlive","blp","activepol","isDead","obituary","elegy","eulogy","panegyric","memorial","byTemplate","templates","title","template","bio","living","BLP","minYear","deathDate","deathPlace","fromCat","fromTemplate","getNationality","addMethod","models","Doc","nationality"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-person.js","sources":["../src/_lib/_infoboxes.js","../src/getInfobox.js","../node_modules/spacetime/builds/spacetime.mjs","../src/getSentence.js","../src/birthDate/byCategory.js","../src/parseDate.js","../src/birthDate/index.js","../src/birthPlace/index.js","../src/isAlive/byCategory.js","../src/isAlive/byTemplate.js","../src/isAlive/index.js","../src/deathDate/byCategory.js","../src/deathDate/index.js","../src/deathPlace/index.js","../src/nationality/index.js","../src/index.js"],"sourcesContent":["// from ./plugins/classify/infobox, April 15 2020\n// https://en.wikipedia.org/wiki/Category:People_and_person_infobox_templates\nmodule.exports = {\n actor: true,\n adult_biography: true,\n afl_biography: true,\n alpine_ski_racer: true,\n archbishop: true,\n architect: true,\n artist: true,\n athlete: true,\n baseball_biography: true,\n basketball_biography: true,\n boxer: true,\n canadianmp: true,\n cfl_player: true,\n chef: true,\n chess_player: true,\n christian_leader: true,\n college_coach: true,\n college_football_player: true,\n comedian: true,\n comics_creator: true,\n cricketer: true,\n criminal: true,\n cyclist: true,\n economist: true,\n engineer: true,\n fashion_designer: true,\n field_hockey_player: true,\n figure_skater: true,\n football_biography: true,\n gaa_player: true,\n golfer: true,\n governor: true,\n gridiron_football_person: true,\n gymnast: true,\n handball_biography: true,\n hindu_leader: true,\n horseracing_personality: true,\n ice_hockey_player: true,\n indian_politician: true,\n judge: true,\n lacrosse_player: true,\n martial_artist: true,\n mass_murderer: true,\n medical_person: true,\n military_person: true,\n minister: true,\n mlb_player: true,\n model: true,\n monarch: true,\n mp: true,\n nascar_driver: true,\n nba_biography: true,\n nfl_biography: true,\n nfl_player: true,\n officeholder: true,\n person: true,\n philosopher: true,\n police_officer: true,\n politician: true,\n 'politician_(general)': true,\n presenter: true,\n president: true,\n professional_wrestler: true,\n racing_driver: true,\n religious_biography: true,\n roman_emperor: true,\n royalty: true,\n rugby_biography: true,\n rugby_league_biography: true,\n saint: true,\n scholar: true,\n scientist: true,\n skier: true,\n sportsperson: true,\n squash_player: true,\n state_representative: true,\n state_senator: true,\n swimmer: true,\n tennis_biography: true,\n volleyball_biography: true,\n volleyball_player: true,\n wrc_driver: true,\n writer: true,\n 'hockey team player': true,\n 'snooker player': true,\n bishop: true,\n 'football biography': true,\n 'military person': true,\n 'baseball biography': true,\n 'ice hockey player': true,\n 'nfl player': true,\n 'christian leader': true,\n congressman: true,\n 'basketball biography': true,\n 'comics creator': true,\n 'professional wrestler': true,\n 'college coach': true,\n 'tennis biography': true,\n 'afl biography': true,\n 'nfl biography': true,\n 'rugby biography': true,\n 'rugby league biography': true,\n 'prime minister': true,\n 'nba biography': true,\n 'figure skater': true,\n 'f1 driver': true,\n 'gridiron football person': true,\n 'indian politician': true,\n 'racing driver': true,\n 'martial artist': true,\n 'chinese-language singer and actor': true,\n astronaut: true,\n senator: true,\n 'nascar driver': true,\n 'adult biography': true,\n 'state representative': true,\n 'state senator': true,\n 'coa wide': true,\n 'religious biography': true,\n 'chess player': true,\n 'pageant titleholder': true,\n 'gaa player': true,\n 'us cabinet official': true,\n}\n","const mapping = require('./_lib/_infoboxes')\n\nconst byInfobox = function (doc, prop) {\n let infoboxes = doc.infoboxes()\n for (let i = 0; i < infoboxes.length; i++) {\n let inf = infoboxes[i]\n let type = inf.type()\n type = type.toLowerCase()\n type = type.trim()\n\n if (mapping.hasOwnProperty(type)) {\n let s = inf.get(prop)\n if (s) {\n return s.text()\n }\n }\n }\n return null\n}\nmodule.exports = byInfobox\n","/* spencermountain/spacetime 6.14.0 Apache 2.0 */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date\n\nvar toUtc = function toUtc(dstChange, offset, year) {\n var _dstChange$split = dstChange.split('/'),\n _dstChange$split2 = _slicedToArray(_dstChange$split, 2),\n month = _dstChange$split2[0],\n rest = _dstChange$split2[1];\n\n var _rest$split = rest.split(':'),\n _rest$split2 = _slicedToArray(_rest$split, 2),\n day = _rest$split2[0],\n hour = _rest$split2[1];\n\n return Date.UTC(year, month - 1, day, hour) - offset * MSEC_IN_HOUR;\n}; // compare epoch with dst change events (in utc)\n\n\nvar inSummerTime = function inSummerTime(epoch, start, end, summerOffset, winterOffset) {\n var year = new Date(epoch).getUTCFullYear();\n var startUtc = toUtc(start, winterOffset, year);\n var endUtc = toUtc(end, summerOffset, year); // simple number comparison now\n\n return epoch >= startUtc && epoch < endUtc;\n};\n\nvar summerTime = inSummerTime;\n\n// it reproduces some things in ./index.js, but speeds up spacetime considerably\n\nvar quickOffset = function quickOffset(s) {\n var zones = s.timezones;\n var obj = zones[s.tz];\n\n if (obj === undefined) {\n console.warn(\"Warning: couldn't find timezone \" + s.tz);\n return 0;\n }\n\n if (obj.dst === undefined) {\n return obj.offset;\n } //get our two possible offsets\n\n\n var jul = obj.offset;\n var dec = obj.offset + 1; // assume it's the same for now\n\n if (obj.hem === 'n') {\n dec = jul - 1;\n }\n\n var split = obj.dst.split('->');\n var inSummer = summerTime(s.epoch, split[0], split[1], jul, dec);\n\n if (inSummer === true) {\n return jul;\n }\n\n return dec;\n};\n\nvar quick = quickOffset;\n\nvar _build = {\n\t\"9|s\": \"2/dili,2/jayapura\",\n\t\"9|n\": \"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau\",\n\t\"9.5|s|04/04:03->10/03:02\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n\t\"9.5|s\": \"4/darwin,4/north\",\n\t\"8|s|03/08:01->10/04:00\": \"12/casey\",\n\t\"8|s\": \"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west\",\n\t\"8|n\": \"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator\",\n\t\"8.75|s\": \"4/eucla\",\n\t\"7|s\": \"12/davis,2/jakarta,9/christmas\",\n\t\"7|n\": \"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh\",\n\t\"6|s\": \"12/vostok\",\n\t\"6|n\": \"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu\",\n\t\"6.5|n\": \"2/rangoon,9/cocos,2/yangon\",\n\t\"5|s\": \"12/mawson,9/kerguelen\",\n\t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad\",\n\t\"5.75|n\": \"2/katmandu,2/kathmandu\",\n\t\"5.5|n\": \"2/calcutta,2/colombo,2/kolkata\",\n\t\"4|s\": \"9/reunion\",\n\t\"4|n\": \"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius\",\n\t\"4.5|n|03/22:00->09/21:24\": \"2/tehran\",\n\t\"4.5|n\": \"2/kabul\",\n\t\"3|s\": \"12/syowa,9/antananarivo\",\n\t\"3|n|03/28:03->10/31:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia\",\n\t\"3|n|03/28:02->10/31:03\": \"8/chisinau,8/tiraspol\",\n\t\"3|n|03/28:00->10/30:24\": \"2/beirut\",\n\t\"3|n|03/27:00->10/30:01\": \"2/gaza,2/hebron\",\n\t\"3|n|03/26:02->10/31:02\": \"2/jerusalem,2/tel_aviv\",\n\t\"3|n|03/26:00->10/29:01\": \"2/amman\",\n\t\"3|n|03/26:00->10/28:24\": \"2/damascus\",\n\t\"3|n\": \"0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul\",\n\t\"2|s|03/28:02->10/31:02\": \"12/troll\",\n\t\"2|s\": \"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\n\t\"2|n|03/28:02->10/31:03\": \"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen\",\n\t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n\t\"1|s\": \"0/brazzaville,0/kinshasa,0/luanda,0/windhoek\",\n\t\"1|n|04/11:03->05/16:02\": \"0/casablanca,0/el_aaiun\",\n\t\"1|n|03/28:01->10/31:02\": \"3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast\",\n\t\"1|n\": \"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\n\t\"14|n\": \"11/kiritimati\",\n\t\"13|s|04/04:04->09/26:03\": \"11/apia\",\n\t\"13|s|01/15:02->11/05:03\": \"11/tongatapu\",\n\t\"13|n\": \"11/enderbury,11/fakaofo\",\n\t\"12|s|04/04:03->09/26:02\": \"12/mcmurdo,11/auckland,12/south_pole\",\n\t\"12|s|01/17:03->11/14:02\": \"11/fiji\",\n\t\"12|n\": \"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis\",\n\t\"12.75|s|04/04:03->04/04:02\": \"11/chatham\",\n\t\"11|s|04/04:03->10/03:02\": \"12/macquarie\",\n\t\"11|s\": \"11/bougainville\",\n\t\"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei\",\n\t\"11.5|n|04/04:03->10/03:02\": \"11/norfolk\",\n\t\"10|s|04/04:03->10/03:02\": \"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria\",\n\t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland\",\n\t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap\",\n\t\"10.5|s|04/04:01->10/03:02\": \"4/lord_howe,4/lhi\",\n\t\"0|n|03/28:00->10/31:01\": \"1/scoresbysund,3/azores\",\n\t\"0|n\": \"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu\",\n\t\"-9|n|03/14:02->11/07:02\": \"1/adak,1/atka,us/aleutian\",\n\t\"-9|n\": \"11/gambier\",\n\t\"-9.5|n\": \"11/marquesas\",\n\t\"-8|n|03/14:02->11/07:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska\",\n\t\"-8|n\": \"11/pitcairn\",\n\t\"-7|n|03/14:02->11/07:02\": \"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific\",\n\t\"-7|n|03/08:02->11/01:01\": \"1/dawson,1/whitehorse,6/yukon\",\n\t\"-7|n\": \"1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona\",\n\t\"-6|s|04/03:22->09/04:22\": \"11/easter,7/easterisland\",\n\t\"-6|n|04/04:02->10/31:02\": \"1/chihuahua,1/mazatlan,10/bajasur\",\n\t\"-6|n|03/14:02->11/07:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain\",\n\t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan\",\n\t\"-5|s\": \"1/lima,1/rio_branco,1/porto_acre,5/acre\",\n\t\"-5|n|04/04:02->10/31:02\": \"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general\",\n\t\"-5|n|03/14:02->11/07:02\": \"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke\",\n\t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n\t\"-5|n\": \"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan\",\n\t\"-4|s|05/13:23->08/13:01\": \"12/palmer\",\n\t\"-4|s|04/03:24->09/05:00\": \"1/santiago,7/continental\",\n\t\"-4|s|03/27:24->10/03:00\": \"1/asuncion\",\n\t\"-4|s|02/16:24->11/03:00\": \"1/campo_grande,1/cuiaba\",\n\t\"-4|s\": \"1/la_paz,1/manaus,5/west\",\n\t\"-4|n|03/14:02->11/07:02\": \"1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan\",\n\t\"-4|n|03/14:00->11/07:01\": \"1/havana\",\n\t\"-4|n|03/12:03->11/05:01\": \"1/indiana,1/kentucky\",\n\t\"-4|n\": \"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\n\t\"-3|s\": \"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east\",\n\t\"-3|n|03/14:02->11/07:02\": \"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\n\t\"-3|n\": \"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem\",\n\t\"-2|n|03/27:22->10/30:23\": \"1/godthab,1/nuuk\",\n\t\"-2|n|03/14:02->11/07:02\": \"1/miquelon\",\n\t\"-2|n\": \"1/noronha,3/south_georgia,5/denoronha\",\n\t\"-2.5|n|03/14:02->11/07:02\": \"1/st_johns,6/newfoundland\",\n\t\"-1|n\": \"3/cape_verde\",\n\t\"-11|n\": \"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa\",\n\t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii\"\n};\n\nvar _build$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': _build\n});\n\n//prefixes for iana names..\nvar _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc'];\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar data = getCjsExportFromNamespace(_build$1);\n\nvar all = {};\nObject.keys(data).forEach(function (k) {\n var split = k.split('|');\n var obj = {\n offset: Number(split[0]),\n hem: split[1]\n };\n\n if (split[2]) {\n obj.dst = split[2];\n }\n\n var names = data[k].split(',');\n names.forEach(function (str) {\n str = str.replace(/(^[0-9]+)\\//, function (before, num) {\n num = Number(num);\n return _prefixes[num] + '/';\n });\n all[str] = obj;\n });\n});\nall['utc'] = {\n offset: 0,\n hem: 'n' //default to northern hemisphere - (sorry!)\n\n}; //add etc/gmt+n\n\nfor (var i = -14; i <= 14; i += 0.5) {\n var num = i;\n\n if (num > 0) {\n num = '+' + num;\n }\n\n var name = 'etc/gmt' + num;\n all[name] = {\n offset: i * -1,\n //they're negative!\n hem: 'n' //(sorry)\n\n };\n name = 'utc/gmt' + num; //this one too, why not.\n\n all[name] = {\n offset: i * -1,\n hem: 'n'\n };\n}\n\nvar unpack = all;\n\n//find the implicit iana code for this machine.\n//safely query the Intl object\n//based on - https://bitbucket.org/pellepim/jstimezonedetect/src\nvar fallbackTZ = 'utc'; //\n//this Intl object is not supported often, yet\n\nvar safeIntl = function safeIntl() {\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return null;\n }\n\n var format = Intl.DateTimeFormat();\n\n if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n return null;\n }\n\n var timezone = format.resolvedOptions().timeZone;\n\n if (!timezone) {\n return null;\n }\n\n return timezone.toLowerCase();\n};\n\nvar guessTz = function guessTz() {\n var timezone = safeIntl();\n\n if (timezone === null) {\n return fallbackTZ;\n }\n\n return timezone;\n}; //do it once per computer\n\n\nvar guessTz_1 = guessTz;\n\nvar isOffset = /(\\-?[0-9]+)h(rs)?/i;\nvar isNumber = /(\\-?[0-9]+)/;\nvar utcOffset = /utc([\\-+]?[0-9]+)/i;\nvar gmtOffset = /gmt([\\-+]?[0-9]+)/i;\n\nvar toIana = function toIana(num) {\n num = Number(num);\n\n if (num >= -13 && num <= 13) {\n num = num * -1; //it's opposite!\n\n num = (num > 0 ? '+' : '') + num; //add plus sign\n\n return 'etc/gmt' + num;\n }\n\n return null;\n};\n\nvar parseOffset$1 = function parseOffset(tz) {\n // '+5hrs'\n var m = tz.match(isOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'utc+5'\n\n\n m = tz.match(utcOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'GMT-5' (not opposite)\n\n\n m = tz.match(gmtOffset);\n\n if (m !== null) {\n var num = Number(m[1]) * -1;\n return toIana(num);\n } // '+5'\n\n\n m = tz.match(isNumber);\n\n if (m !== null) {\n return toIana(m[1]);\n }\n\n return null;\n};\n\nvar parseOffset_1$1 = parseOffset$1;\n\nvar local = guessTz_1(); //add all the city names by themselves\n\nvar cities = Object.keys(unpack).reduce(function (h, k) {\n var city = k.split('/')[1] || '';\n city = city.replace(/_/g, ' ');\n h[city] = k;\n return h;\n}, {}); //try to match these against iana form\n\nvar normalize = function normalize(tz) {\n tz = tz.replace(/ time/g, '');\n tz = tz.replace(/ (standard|daylight|summer)/g, '');\n tz = tz.replace(/\\b(east|west|north|south)ern/g, '$1');\n tz = tz.replace(/\\b(africa|america|australia)n/g, '$1');\n tz = tz.replace(/\\beuropean/g, 'europe');\n tz = tz.replace(/\\islands/g, 'island');\n return tz;\n}; // try our best to reconcile the timzone to this given string\n\n\nvar lookupTz = function lookupTz(str, zones) {\n if (!str) {\n return local;\n }\n\n if (typeof str !== 'string') {\n console.error(\"Timezone must be a string - recieved: '\", str, \"'\\n\");\n }\n\n var tz = str.trim(); // let split = str.split('/')\n //support long timezones like 'America/Argentina/Rio_Gallegos'\n // if (split.length > 2 && zones.hasOwnProperty(tz) === false) {\n // tz = split[0] + '/' + split[1]\n // }\n\n tz = tz.toLowerCase();\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //lookup more loosely..\n\n\n tz = normalize(tz);\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //try city-names\n\n\n if (cities.hasOwnProperty(tz) === true) {\n return cities[tz];\n } // //try to parse '-5h'\n\n\n if (/[0-9]/.test(tz) === true) {\n var id = parseOffset_1$1(tz);\n\n if (id) {\n return id;\n }\n }\n\n throw new Error(\"Spacetime: Cannot find timezone named: '\" + str + \"'. Please enter an IANA timezone id.\");\n};\n\nvar find = lookupTz;\n\nvar o = {\n millisecond: 1\n};\no.second = 1000;\no.minute = 60000;\no.hour = 3.6e6; // dst is supported post-hoc\n\no.day = 8.64e7; //\n\no.date = o.day;\no.month = 8.64e7 * 29.5; //(average)\n\no.week = 6.048e8;\no.year = 3.154e10; // leap-years are supported post-hoc\n//add plurals\n\nObject.keys(o).forEach(function (k) {\n o[k + 's'] = o[k];\n});\nvar milliseconds = o;\n\nvar walk = function walk(s, n, fn, unit, previous) {\n var current = s.d[fn]();\n\n if (current === n) {\n return; //already there\n }\n\n var startUnit = previous === null ? null : s.d[previous]();\n var original = s.epoch; //try to get it as close as we can\n\n var diff = n - current;\n s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative\n // console.log(unit, diff)\n\n if (unit === 'day') {\n // s.epoch -= ms.minute\n //but don't push it over a month\n if (Math.abs(diff) > 28 && n < 28) {\n s.epoch += milliseconds.hour;\n }\n } // 1st time: oops, did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...?\n } //repair it if we've gone too far or something\n //(go by half-steps, just in case)\n\n\n var halfStep = milliseconds[unit] / 2;\n\n while (s.d[fn]() < n) {\n s.epoch += halfStep;\n }\n\n while (s.d[fn]() > n) {\n s.epoch -= halfStep;\n } // 2nd time: did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original;\n }\n}; //find the desired date by a increment/check while loop\n\n\nvar units$3 = {\n year: {\n valid: function valid(n) {\n return n > -4000 && n < 4000;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getFullYear', 'year', null);\n }\n },\n month: {\n valid: function valid(n) {\n return n >= 0 && n <= 11;\n },\n walkTo: function walkTo(s, n) {\n var d = s.d;\n var current = d.getMonth();\n var original = s.epoch;\n var startUnit = d.getFullYear();\n\n if (current === n) {\n return;\n } //try to get it as close as we can..\n\n\n var diff = n - current;\n s.epoch += milliseconds.day * (diff * 28); //special case\n //oops, did we change the year? revert it.\n\n if (startUnit !== s.d.getFullYear()) {\n s.epoch = original;\n } //increment by day\n\n\n while (s.d.getMonth() < n) {\n s.epoch += milliseconds.day;\n }\n\n while (s.d.getMonth() > n) {\n s.epoch -= milliseconds.day;\n }\n }\n },\n date: {\n valid: function valid(n) {\n return n > 0 && n <= 31;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getDate', 'day', 'getMonth');\n }\n },\n hour: {\n valid: function valid(n) {\n return n >= 0 && n < 24;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getHours', 'hour', 'getDate');\n }\n },\n minute: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getMinutes', 'minute', 'getHours');\n }\n },\n second: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.seconds(n).epoch;\n }\n },\n millisecond: {\n valid: function valid(n) {\n return n >= 0 && n < 1000;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.milliseconds(n).epoch;\n }\n }\n};\n\nvar walkTo = function walkTo(s, wants) {\n var keys = Object.keys(units$3);\n var old = s.clone();\n\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n var n = wants[k];\n\n if (n === undefined) {\n n = old[k]();\n }\n\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n } //make-sure it's valid\n\n\n if (!units$3[k].valid(n)) {\n s.epoch = null;\n\n if (s.silent === false) {\n console.warn('invalid ' + k + ': ' + n);\n }\n\n return;\n }\n\n units$3[k].walkTo(s, n);\n }\n\n return;\n};\n\nvar walk_1 = walkTo;\n\nvar shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec'];\nvar longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\nfunction buildMapping() {\n var obj = {\n sep: 8 //support this format\n\n };\n\n for (var i = 0; i < shortMonths.length; i++) {\n obj[shortMonths[i]] = i;\n }\n\n for (var _i = 0; _i < longMonths.length; _i++) {\n obj[longMonths[_i]] = _i;\n }\n\n return obj;\n}\n\nvar months$1 = {\n \"short\": function short() {\n return shortMonths;\n },\n \"long\": function long() {\n return longMonths;\n },\n mapping: function mapping() {\n return buildMapping();\n },\n set: function set(i18n) {\n shortMonths = i18n[\"short\"] || shortMonths;\n longMonths = i18n[\"long\"] || longMonths;\n }\n};\n\n//pull-apart ISO offsets, like \"+0100\"\nvar parseOffset = function parseOffset(s, offset) {\n if (!offset) {\n return s;\n } //this is a fancy-move\n\n\n if (offset === 'Z' || offset === 'z') {\n offset = '+0000';\n } // according to ISO8601, tz could be hh:mm, hhmm or hh\n // so need few more steps before the calculation.\n\n\n var num = 0; // for (+-)hh:mm\n\n if (/^[\\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) {\n //support \"+01:00\"\n if (/:00/.test(offset) === true) {\n offset = offset.replace(/:00/, '');\n } //support \"+01:30\"\n\n\n if (/:30/.test(offset) === true) {\n offset = offset.replace(/:30/, '.5');\n }\n } // for (+-)hhmm\n\n\n if (/^[\\+-]?[0-9]{4}$/.test(offset)) {\n offset = offset.replace(/30$/, '.5');\n }\n\n num = parseFloat(offset); //divide by 100 or 10 - , \"+0100\", \"+01\"\n\n if (Math.abs(num) > 100) {\n num = num / 100;\n } //okay, try to match it to a utc timezone\n //remember - this is opposite! a -5 offset maps to Etc/GMT+5 ¯\\_(:/)_/¯\n //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem\n\n\n num *= -1;\n\n if (num >= 0) {\n num = '+' + num;\n }\n\n var tz = 'etc/gmt' + num;\n var zones = s.timezones;\n\n if (zones[tz]) {\n // log a warning if we're over-writing a given timezone?\n // console.log('changing timezone to: ' + tz)\n s.tz = tz;\n }\n\n return s;\n};\n\nvar parseOffset_1 = parseOffset;\n\nvar parseTime = function parseTime(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n str = str.replace(/^\\s+/, '').toLowerCase(); //trim\n //formal time formats - 04:30.23\n\n var arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\\.]?([0-9]{1,4})?/);\n\n if (arr !== null) {\n //validate it a little\n var h = Number(arr[1]);\n\n if (h < 0 || h > 24) {\n return s.startOf('day');\n }\n\n var m = Number(arr[2]); //don't accept '5:3pm'\n\n if (arr[2].length < 2 || m < 0 || m > 59) {\n return s.startOf('day');\n }\n\n if (arr[4] > 999) {\n // fix overflow issue with milliseconds, if input is longer than standard (e.g. 2017-08-06T09:00:00.123456Z)\n arr[4] = parseInt(\"\".concat(arr[4]).substring(0, 3), 10);\n }\n\n s = s.hour(h);\n s = s.minute(m);\n s = s.seconds(arr[3] || 0);\n s = s.millisecond(arr[4] || 0); //parse-out am/pm\n\n var ampm = str.match(/[\\b0-9](am|pm)\\b/);\n\n if (ampm !== null && ampm[1]) {\n s = s.ampm(ampm[1]);\n }\n\n return s;\n } //try an informal form - 5pm (no minutes)\n\n\n arr = str.match(/([0-9]+) ?(am|pm)/);\n\n if (arr !== null && arr[1]) {\n var _h = Number(arr[1]); //validate it a little..\n\n\n if (_h > 12 || _h < 1) {\n return s.startOf('day');\n }\n\n s = s.hour(arr[1] || 0);\n s = s.ampm(arr[2]);\n s = s.startOf('hour');\n return s;\n } //no time info found, use start-of-day\n\n\n s = s.startOf('day');\n return s;\n};\n\nvar parseTime_1 = parseTime;\n\nvar monthLengths = [31, // January - 31 days\n28, // February - 28 days in a common year and 29 days in leap years\n31, // March - 31 days\n30, // April - 30 days\n31, // May - 31 days\n30, // June - 30 days\n31, // July - 31 days\n31, // August - 31 days\n30, // September - 30 days\n31, // October - 31 days\n30, // November - 30 days\n31 // December - 31 days\n];\nvar monthLengths_1 = monthLengths; // 28 - feb\n\nvar fns = createCommonjsModule(function (module, exports) {\n //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html\n exports.isLeapYear = function (year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }; // unsurprisingly-nasty `typeof date` call\n\n\n exports.isDate = function (d) {\n return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf());\n };\n\n exports.isArray = function (input) {\n return Object.prototype.toString.call(input) === '[object Array]';\n };\n\n exports.isObject = function (input) {\n return Object.prototype.toString.call(input) === '[object Object]';\n };\n\n exports.isBoolean = function (input) {\n return Object.prototype.toString.call(input) === '[object Boolean]';\n };\n\n exports.zeroPad = function (str) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var pad = '0';\n str = str + '';\n return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str;\n };\n\n exports.titleCase = function (str) {\n if (!str) {\n return '';\n }\n\n return str[0].toUpperCase() + str.substr(1);\n };\n\n exports.ordinal = function (i) {\n var j = i % 10;\n var k = i % 100;\n\n if (j === 1 && k !== 11) {\n return i + 'st';\n }\n\n if (j === 2 && k !== 12) {\n return i + 'nd';\n }\n\n if (j === 3 && k !== 13) {\n return i + 'rd';\n }\n\n return i + 'th';\n }; //strip 'st' off '1st'..\n\n\n exports.toCardinal = function (str) {\n str = String(str);\n str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1');\n return parseInt(str, 10);\n }; //used mostly for cleanup of unit names, like 'months'\n\n\n exports.normalize = function () {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n str = str.toLowerCase().trim();\n str = str.replace(/ies$/, 'y'); //'centuries'\n\n str = str.replace(/s$/, '');\n str = str.replace(/-/g, '');\n\n if (str === 'day' || str === 'days') {\n return 'date';\n }\n\n if (str === 'min' || str === 'mins') {\n return 'minute';\n }\n\n return str;\n };\n\n exports.getEpoch = function (tmp) {\n //support epoch\n if (typeof tmp === 'number') {\n return tmp;\n } //suport date objects\n\n\n if (exports.isDate(tmp)) {\n return tmp.getTime();\n }\n\n if (tmp.epoch) {\n return tmp.epoch;\n }\n\n return null;\n }; //make sure this input is a spacetime obj\n\n\n exports.beADate = function (d, s) {\n if (exports.isObject(d) === false) {\n return s.clone().set(d);\n }\n\n return d;\n };\n\n exports.formatTimezone = function (offset) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '+' : '-';\n var absOffset = Math.abs(offset);\n var hours = exports.zeroPad(parseInt('' + absOffset, 10));\n var minutes = exports.zeroPad(absOffset % 1 * 60);\n return \"\".concat(sign).concat(hours).concat(delimiter).concat(minutes);\n };\n});\nfns.isLeapYear;\nfns.isDate;\nfns.isArray;\nfns.isObject;\nfns.isBoolean;\nfns.zeroPad;\nfns.titleCase;\nfns.ordinal;\nfns.toCardinal;\nfns.normalize;\nfns.getEpoch;\nfns.beADate;\nfns.formatTimezone;\n\nvar isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it\n\nvar hasDate = function hasDate(obj) {\n //invalid values\n if (monthLengths_1.hasOwnProperty(obj.month) !== true) {\n return false;\n } //support leap-year in february\n\n\n if (obj.month === 1) {\n if (isLeapYear$2(obj.year) && obj.date <= 29) {\n return true;\n } else {\n return obj.date <= 28;\n }\n } //is this date too-big for this month?\n\n\n var max = monthLengths_1[obj.month] || 0;\n\n if (obj.date <= max) {\n return true;\n }\n\n return false;\n};\n\nvar hasDate_1 = hasDate;\n\nvar months = months$1.mapping();\n\nvar parseYear = function parseYear() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var today = arguments.length > 1 ? arguments[1] : undefined;\n var year = parseInt(str.trim(), 10); // use a given year from options.today\n\n if (!year && today) {\n year = today.year;\n } // fallback to this year\n\n\n year = year || new Date().getFullYear();\n return year;\n};\n\nvar strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700\n{\n reg: /^(\\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\\-\\+:]+)?$/i,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: arr[3]\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //iso \"2015-03-25\" or \"2015/03/25\" or \"2015/03/25 12:26:14 PM\"\n{\n reg: /^([0-9]{4})[\\-\\/.]([0-9]{1,2})[\\-\\/.]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var obj = {\n year: arr[1],\n month: parseInt(arr[2], 10) - 1,\n date: parseInt(arr[3], 10)\n };\n\n if (obj.month >= 12) {\n //support yyyy/dd/mm (weird, but ok)\n obj.date = parseInt(arr[2], 10);\n obj.month = parseInt(arr[3], 10) - 1;\n }\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //mm/dd/yyyy - uk/canada \"6/28/2019, 12:26:14 PM\"\n{\n reg: /^([0-9]{1,2})[\\-\\/.]([0-9]{1,2})[\\-\\/.]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = parseInt(arr[1], 10) - 1;\n var date = parseInt(arr[2], 10); //support dd/mm/yyy\n\n if (s.british || month >= 12) {\n date = parseInt(arr[1], 10);\n month = parseInt(arr[2], 10) - 1;\n }\n\n var year = parseYear(arr[3], s._today) || new Date().getFullYear();\n var obj = {\n year: year,\n month: month,\n date: date\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, // '2012-06' last attempt at iso-like format\n{\n reg: /^([0-9]{4})[\\-\\/]([0-9]{2})$/i,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //common british format - \"25-feb-2015\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([a-z]+)[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[2].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //alt short format - \"feb-25-2015\"\n{\n reg: /^([a-z]+)[\\-\\/]([0-9]{1,2})[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"Mar 25 2015\"\n//February 22, 2017 15:30:00\n{\n reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //February 2017 (implied date)\n{\n reg: /^([a-z]+) ([0-9]{4})$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[2], s._today);\n var obj = {\n year: year,\n month: month,\n date: s._today.date || 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"25 Mar 2015\"\n{\n reg: /^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[2].toLowerCase()];\n\n if (!month) {\n return null;\n }\n\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1])\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, {\n // 'q2 2002'\n reg: /^(q[0-9])( of)?( [0-9]{4})?/i,\n parse: function parse(s, arr) {\n var quarter = arr[1] || '';\n s = s.quarter(quarter);\n var year = arr[3] || '';\n\n if (year) {\n year = year.trim();\n s = s.year(year);\n }\n\n return s;\n }\n}, {\n // 'summer 2002'\n reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,\n parse: function parse(s, arr) {\n var season = arr[1] || '';\n s = s.season(season);\n var year = arr[3] || '';\n\n if (year) {\n year = year.trim();\n s = s.year(year);\n }\n\n return s;\n }\n}, {\n // '200bc'\n reg: /^[0-9,]+ ?b\\.?c\\.?$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //make negative-year\n\n str = str.replace(/^([0-9,]+) ?b\\.?c\\.?$/i, '-$1'); //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '200ad'\n reg: /^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '1992'\n reg: /^[0-9]{4}( ?a\\.?d\\.?)?$/i,\n parse: function parse(s, arr) {\n var today = s._today;\n var year = parseYear(arr[0], today);\n var d = new Date(); // using today's date, but a new month is awkward.\n\n if (today.month && !today.date) {\n today.date = 1;\n }\n\n var obj = {\n year: year,\n month: today.month || d.getMonth(),\n date: today.date || d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}];\nvar strParse = strFmt;\n\n// pull in 'today' data for the baseline moment\nvar getNow = function getNow(s) {\n s.epoch = Date.now();\n Object.keys(s._today || {}).forEach(function (k) {\n if (typeof s[k] === 'function') {\n s = s[k](s._today[k]);\n }\n });\n return s;\n};\n\nvar dates = {\n now: function now(s) {\n return getNow(s);\n },\n today: function today(s) {\n return getNow(s);\n },\n tonight: function tonight(s) {\n s = getNow(s);\n s = s.hour(18); //6pm\n\n return s;\n },\n tomorrow: function tomorrow(s) {\n s = getNow(s);\n s = s.add(1, 'day');\n s = s.startOf('day');\n return s;\n },\n yesterday: function yesterday(s) {\n s = getNow(s);\n s = s.subtract(1, 'day');\n s = s.startOf('day');\n return s;\n },\n christmas: function christmas(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25\n\n return s;\n },\n 'new years': function newYears(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31\n\n return s;\n }\n};\ndates['new years eve'] = dates['new years'];\nvar namedDates = dates;\n\n// - can't use built-in js parser ;(\n//=========================================\n// ISO Date\t \"2015-03-25\"\n// Short Date\t\"03/25/2015\" or \"2015/03/25\"\n// Long Date\t\"Mar 25 2015\" or \"25 Mar 2015\"\n// Full Date\t\"Wednesday March 25 2015\"\n//=========================================\n//-- also -\n// if the given epoch is really small, they've probably given seconds and not milliseconds\n// anything below this number is likely (but not necessarily) a mistaken input.\n// this may seem like an arbitrary number, but it's 'within jan 1970'\n// this is only really ambiguous until 2054 or so\n\nvar minimumEpoch = 2500000000;\nvar defaults = {\n year: new Date().getFullYear(),\n month: 0,\n date: 1\n}; //support [2016, 03, 01] format\n\nvar handleArray = function handleArray(s, arr, today) {\n if (arr.length === 0) {\n return s;\n }\n\n var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond'];\n\n for (var i = 0; i < order.length; i++) {\n var num = arr[i] || today[order[i]] || defaults[order[i]] || 0;\n s = s[order[i]](num);\n }\n\n return s;\n}; //support {year:2016, month:3} format\n\n\nvar handleObject = function handleObject(s, obj, today) {\n // if obj is empty, do nothing\n if (Object.keys(obj).length === 0) {\n return s;\n }\n\n obj = Object.assign({}, defaults, today, obj);\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var unit = keys[i]; //make sure we have this method\n\n if (s[unit] === undefined || typeof s[unit] !== 'function') {\n continue;\n } //make sure the value is a number\n\n\n if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') {\n continue;\n }\n\n var num = obj[unit] || today[unit] || defaults[unit] || 0;\n s = s[unit](num);\n }\n\n return s;\n}; //find the epoch from different input styles\n\n\nvar parseInput = function parseInput(s, input, givenTz) {\n var today = s._today || defaults; //if we've been given a epoch number, it's easy\n\n if (typeof input === 'number') {\n if (input > 0 && input < minimumEpoch && s.silent === false) {\n console.warn(' - Warning: You are setting the date to January 1970.');\n console.warn(' - did input seconds instead of milliseconds?');\n }\n\n s.epoch = input;\n return s;\n } //set tmp time\n\n\n s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists\n\n if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) {\n var res = handleObject(s, today, defaults);\n\n if (res.isValid()) {\n s.epoch = res.epoch;\n }\n } // null input means 'now'\n\n\n if (input === null || input === undefined || input === '') {\n return s; //k, we're good.\n } //support input of Date() object\n\n\n if (fns.isDate(input) === true) {\n s.epoch = input.getTime();\n return s;\n } //support [2016, 03, 01] format\n\n\n if (fns.isArray(input) === true) {\n s = handleArray(s, input, today);\n return s;\n } //support {year:2016, month:3} format\n\n\n if (fns.isObject(input) === true) {\n //support spacetime object as input\n if (input.epoch) {\n s.epoch = input.epoch;\n s.tz = input.tz;\n return s;\n }\n\n s = handleObject(s, input, today);\n return s;\n } //input as a string..\n\n\n if (typeof input !== 'string') {\n return s;\n } //little cleanup..\n\n\n input = input.replace(/\\b(mon|tues|wed|wednes|thu|thurs|fri|sat|satur|sun)(day)?\\b/i, '');\n input = input.replace(/,/g, '');\n input = input.replace(/ +/g, ' ').trim(); //try some known-words, like 'now'\n\n if (namedDates.hasOwnProperty(input) === true) {\n s = namedDates[input](s);\n return s;\n } //try each text-parse template, use the first good result\n\n\n for (var i = 0; i < strParse.length; i++) {\n var m = input.match(strParse[i].reg);\n\n if (m) {\n // console.log(strFmt[i].reg)\n var _res = strParse[i].parse(s, m, givenTz);\n\n if (_res !== null && _res.isValid()) {\n return _res;\n }\n }\n }\n\n if (s.silent === false) {\n console.warn(\"Warning: couldn't parse date-string: '\" + input + \"'\");\n }\n\n s.epoch = null;\n return s;\n};\n\nvar input = parseInput;\n\nvar shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nvar days = {\n \"short\": function short() {\n return shortDays;\n },\n \"long\": function long() {\n return longDays;\n },\n set: function set(i18n) {\n shortDays = i18n[\"short\"] || shortDays;\n longDays = i18n[\"long\"] || longDays;\n },\n aliases: {\n mo: 1,\n tu: 2,\n we: 3,\n th: 4,\n fr: 5,\n sa: 6,\n su: 7,\n tues: 2,\n weds: 3,\n wedn: 3,\n thur: 4,\n thurs: 4\n }\n};\n\nvar titleCaseEnabled = true;\nvar caseFormat = {\n useTitleCase: function useTitleCase() {\n return titleCaseEnabled;\n },\n set: function set(useTitleCase) {\n titleCaseEnabled = useTitleCase;\n }\n};\n\n// it's kind of nuts how involved this is\n// \"+01:00\", \"+0100\", or simply \"+01\"\n\nvar isoOffset = function isoOffset(s) {\n var offset = s.timezone().current.offset;\n return !offset ? 'Z' : fns.formatTimezone(offset, ':');\n};\n\nvar _offset = isoOffset;\n\nvar applyCaseFormat = function applyCaseFormat(str) {\n if (caseFormat.useTitleCase()) {\n return fns.titleCase(str);\n }\n\n return str;\n};\n\nvar format = {\n day: function day(s) {\n return applyCaseFormat(s.dayName());\n },\n 'day-short': function dayShort(s) {\n return applyCaseFormat(days[\"short\"]()[s.day()]);\n },\n 'day-number': function dayNumber(s) {\n return s.day();\n },\n 'day-ordinal': function dayOrdinal(s) {\n return fns.ordinal(s.day());\n },\n 'day-pad': function dayPad(s) {\n return fns.zeroPad(s.day());\n },\n date: function date(s) {\n return s.date();\n },\n 'date-ordinal': function dateOrdinal(s) {\n return fns.ordinal(s.date());\n },\n 'date-pad': function datePad(s) {\n return fns.zeroPad(s.date());\n },\n month: function month(s) {\n return applyCaseFormat(s.monthName());\n },\n 'month-short': function monthShort(s) {\n return applyCaseFormat(months$1[\"short\"]()[s.month()]);\n },\n 'month-number': function monthNumber(s) {\n return s.month();\n },\n 'month-ordinal': function monthOrdinal(s) {\n return fns.ordinal(s.month());\n },\n 'month-pad': function monthPad(s) {\n return fns.zeroPad(s.month());\n },\n 'iso-month': function isoMonth(s) {\n return fns.zeroPad(s.month() + 1);\n },\n //1-based months\n year: function year(s) {\n var year = s.year();\n\n if (year > 0) {\n return year;\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'year-short': function yearShort(s) {\n var year = s.year();\n\n if (year > 0) {\n return \"'\".concat(String(s.year()).substr(2, 4));\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'iso-year': function isoYear(s) {\n var year = s.year();\n var isNegative = year < 0;\n var str = fns.zeroPad(Math.abs(year), 4); //0-padded\n\n if (isNegative) {\n //negative years are for some reason 6-digits ('-00008')\n str = fns.zeroPad(str, 6);\n str = '-' + str;\n }\n\n return str;\n },\n time: function time(s) {\n return s.time();\n },\n 'time-24': function time24(s) {\n return \"\".concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n hour: function hour(s) {\n return s.hour12();\n },\n 'hour-pad': function hourPad(s) {\n return fns.zeroPad(s.hour12());\n },\n 'hour-24': function hour24(s) {\n return s.hour24();\n },\n 'hour-24-pad': function hour24Pad(s) {\n return fns.zeroPad(s.hour24());\n },\n minute: function minute(s) {\n return s.minute();\n },\n 'minute-pad': function minutePad(s) {\n return fns.zeroPad(s.minute());\n },\n second: function second(s) {\n return s.second();\n },\n 'second-pad': function secondPad(s) {\n return fns.zeroPad(s.second());\n },\n ampm: function ampm(s) {\n return s.ampm();\n },\n quarter: function quarter(s) {\n return 'Q' + s.quarter();\n },\n season: function season(s) {\n return s.season();\n },\n era: function era(s) {\n return s.era();\n },\n json: function json(s) {\n return s.json();\n },\n timezone: function timezone(s) {\n return s.timezone().name;\n },\n offset: function offset(s) {\n return _offset(s);\n },\n numeric: function numeric(s) {\n return \"\".concat(s.year(), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n // yyyy/mm/dd\n 'numeric-us': function numericUs(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()), \"/\").concat(s.year());\n },\n // mm/dd/yyyy\n 'numeric-uk': function numericUk(s) {\n return \"\".concat(fns.zeroPad(s.date()), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(s.year());\n },\n //dd/mm/yyyy\n 'mm/dd': function mmDd(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n //mm/dd\n // ... https://en.wikipedia.org/wiki/ISO_8601 ;(((\n iso: function iso(s) {\n var year = s.format('iso-year');\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n var hour = fns.zeroPad(s.h24());\n var minute = fns.zeroPad(s.minute());\n var second = fns.zeroPad(s.second());\n var ms = fns.zeroPad(s.millisecond(), 3);\n var offset = _offset(s);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(date, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second, \".\").concat(ms).concat(offset); //2018-03-09T08:50:00.000-05:00\n },\n 'iso-short': function isoShort(s) {\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n return \"\".concat(s.year(), \"-\").concat(month, \"-\").concat(date); //2017-02-15\n },\n 'iso-utc': function isoUtc(s) {\n return new Date(s.epoch).toISOString(); //2017-03-08T19:45:28.367Z\n },\n //i made these up\n nice: function nice(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-24': function nice24(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n 'nice-year': function niceYear(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.year());\n },\n 'nice-day': function niceDay(s) {\n return \"\".concat(days[\"short\"]()[s.day()], \" \").concat(applyCaseFormat(months$1[\"short\"]()[s.month()]), \" \").concat(fns.ordinal(s.date()));\n },\n 'nice-full': function niceFull(s) {\n return \"\".concat(s.dayName(), \" \").concat(applyCaseFormat(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-full-24': function niceFull24(s) {\n return \"\".concat(s.dayName(), \" \").concat(applyCaseFormat(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n }\n}; //aliases\n\nvar aliases = {\n 'day-name': 'day',\n 'month-name': 'month',\n 'iso 8601': 'iso',\n 'time-h24': 'time-24',\n 'time-12': 'time',\n 'time-h12': 'time',\n tz: 'timezone',\n 'day-num': 'day-number',\n 'month-num': 'month-number',\n 'month-iso': 'iso-month',\n 'year-iso': 'iso-year',\n 'nice-short': 'nice',\n 'nice-short-24': 'nice-24',\n mdy: 'numeric-us',\n dmy: 'numeric-uk',\n ymd: 'numeric',\n 'yyyy/mm/dd': 'numeric',\n 'mm/dd/yyyy': 'numeric-us',\n 'dd/mm/yyyy': 'numeric-us',\n 'little-endian': 'numeric-uk',\n 'big-endian': 'numeric',\n 'day-nice': 'nice-day'\n};\nObject.keys(aliases).forEach(function (k) {\n return format[k] = format[aliases[k]];\n});\n\nvar printFormat = function printFormat(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n //don't print anything if it's an invalid date\n if (s.isValid() !== true) {\n return '';\n } //support .format('month')\n\n\n if (format.hasOwnProperty(str)) {\n var out = format[str](s) || '';\n\n if (str !== 'json') {\n out = String(out);\n\n if (str !== 'ampm') {\n out = applyCaseFormat(out);\n }\n }\n\n return out;\n } //support '{hour}:{minute}' notation\n\n\n if (str.indexOf('{') !== -1) {\n var sections = /\\{(.+?)\\}/g;\n str = str.replace(sections, function (_, fmt) {\n fmt = fmt.toLowerCase().trim();\n\n if (format.hasOwnProperty(fmt)) {\n var _out = String(format[fmt](s));\n\n if (fmt !== 'ampm') {\n return applyCaseFormat(_out);\n }\n\n return _out;\n }\n\n return '';\n });\n return str;\n }\n\n return s.format('iso-short');\n};\n\nvar format_1 = printFormat;\n\nvar pad = fns.zeroPad;\nvar formatTimezone = fns.formatTimezone; //parse this insane unix-time-templating thing, from the 19th century\n//http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns\n//time-symbols we support\n\nvar mapping = {\n G: function G(s) {\n return s.era();\n },\n GG: function GG(s) {\n return s.era();\n },\n GGG: function GGG(s) {\n return s.era();\n },\n GGGG: function GGGG(s) {\n return s.era() === 'AD' ? 'Anno Domini' : 'Before Christ';\n },\n //year\n y: function y(s) {\n return s.year();\n },\n yy: function yy(s) {\n //last two chars\n return parseInt(String(s.year()).substr(2, 4), 10);\n },\n yyy: function yyy(s) {\n return s.year();\n },\n yyyy: function yyyy(s) {\n return s.year();\n },\n yyyyy: function yyyyy(s) {\n return '0' + s.year();\n },\n // u: (s) => {},//extended non-gregorian years\n //quarter\n Q: function Q(s) {\n return s.quarter();\n },\n QQ: function QQ(s) {\n return s.quarter();\n },\n QQQ: function QQQ(s) {\n return s.quarter();\n },\n QQQQ: function QQQQ(s) {\n return s.quarter();\n },\n //month\n M: function M(s) {\n return s.month() + 1;\n },\n MM: function MM(s) {\n return pad(s.month() + 1);\n },\n MMM: function MMM(s) {\n return s.format('month-short');\n },\n MMMM: function MMMM(s) {\n return s.format('month');\n },\n //week\n w: function w(s) {\n return s.week();\n },\n ww: function ww(s) {\n return pad(s.week());\n },\n //week of month\n // W: (s) => s.week(),\n //date of month\n d: function d(s) {\n return s.date();\n },\n dd: function dd(s) {\n return pad(s.date());\n },\n //date of year\n D: function D(s) {\n return s.dayOfYear();\n },\n DD: function DD(s) {\n return pad(s.dayOfYear());\n },\n DDD: function DDD(s) {\n return pad(s.dayOfYear(), 3);\n },\n // F: (s) => {},//date of week in month\n // g: (s) => {},//modified julian day\n //day\n E: function E(s) {\n return s.format('day-short');\n },\n EE: function EE(s) {\n return s.format('day-short');\n },\n EEE: function EEE(s) {\n return s.format('day-short');\n },\n EEEE: function EEEE(s) {\n return s.format('day');\n },\n EEEEE: function EEEEE(s) {\n return s.format('day')[0];\n },\n e: function e(s) {\n return s.day();\n },\n ee: function ee(s) {\n return s.day();\n },\n eee: function eee(s) {\n return s.format('day-short');\n },\n eeee: function eeee(s) {\n return s.format('day');\n },\n eeeee: function eeeee(s) {\n return s.format('day')[0];\n },\n //am/pm\n a: function a(s) {\n return s.ampm().toUpperCase();\n },\n aa: function aa(s) {\n return s.ampm().toUpperCase();\n },\n aaa: function aaa(s) {\n return s.ampm().toUpperCase();\n },\n aaaa: function aaaa(s) {\n return s.ampm().toUpperCase();\n },\n //hour\n h: function h(s) {\n return s.h12();\n },\n hh: function hh(s) {\n return pad(s.h12());\n },\n H: function H(s) {\n return s.hour();\n },\n HH: function HH(s) {\n return pad(s.hour());\n },\n // j: (s) => {},//weird hour format\n m: function m(s) {\n return s.minute();\n },\n mm: function mm(s) {\n return pad(s.minute());\n },\n s: function s(_s) {\n return _s.second();\n },\n ss: function ss(s) {\n return pad(s.second());\n },\n //milliseconds in the day\n A: function A(s) {\n return s.epoch - s.startOf('day').epoch;\n },\n //timezone\n z: function z(s) {\n return s.timezone().name;\n },\n zz: function zz(s) {\n return s.timezone().name;\n },\n zzz: function zzz(s) {\n return s.timezone().name;\n },\n zzzz: function zzzz(s) {\n return s.timezone().name;\n },\n Z: function Z(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZ: function ZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZ: function ZZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZZ: function ZZZZ(s) {\n return formatTimezone(s.timezone().current.offset, ':');\n }\n};\n\nvar addAlias = function addAlias(_char, to, n) {\n var name = _char;\n var toName = to;\n\n for (var i = 0; i < n; i += 1) {\n mapping[name] = mapping[toName];\n name += _char;\n toName += to;\n }\n};\n\naddAlias('q', 'Q', 4);\naddAlias('L', 'M', 4);\naddAlias('Y', 'y', 4);\naddAlias('c', 'e', 4);\naddAlias('k', 'H', 2);\naddAlias('K', 'h', 2);\naddAlias('S', 's', 2);\naddAlias('v', 'z', 4);\naddAlias('V', 'Z', 4); // support unix-style escaping with ' character\n\nvar escapeChars = function escapeChars(arr) {\n for (var i = 0; i < arr.length; i += 1) {\n if (arr[i] === \"'\") {\n // greedy-search for next apostrophe\n for (var o = i + 1; o < arr.length; o += 1) {\n if (arr[o]) {\n arr[i] += arr[o];\n }\n\n if (arr[o] === \"'\") {\n arr[o] = null;\n break;\n }\n\n arr[o] = null;\n }\n }\n }\n\n return arr.filter(function (ch) {\n return ch;\n });\n}; //combine consecutive chars, like 'yyyy' as one.\n\n\nvar combineRepeated = function combineRepeated(arr) {\n for (var i = 0; i < arr.length; i += 1) {\n var c = arr[i]; // greedy-forward\n\n for (var o = i + 1; o < arr.length; o += 1) {\n if (arr[o] === c) {\n arr[i] += arr[o];\n arr[o] = null;\n } else {\n break;\n }\n }\n } // '' means one apostrophe\n\n\n arr = arr.filter(function (ch) {\n return ch;\n });\n arr = arr.map(function (str) {\n if (str === \"''\") {\n str = \"'\";\n }\n\n return str;\n });\n return arr;\n};\n\nvar unixFmt = function unixFmt(s, str) {\n var arr = str.split(''); // support character escaping\n\n arr = escapeChars(arr); //combine 'yyyy' as string.\n\n arr = combineRepeated(arr);\n return arr.reduce(function (txt, c) {\n if (mapping[c] !== undefined) {\n txt += mapping[c](s) || '';\n } else {\n // 'unescape'\n if (/^'.{1,}'$/.test(c)) {\n c = c.replace(/'/g, '');\n }\n\n txt += c;\n }\n\n return txt;\n }, '');\n};\n\nvar unixFmt_1 = unixFmt;\n\nvar units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\nvar doUnit = function doUnit(s, k) {\n var start = s.clone().startOf(k);\n var end = s.clone().endOf(k);\n var duration = end.epoch - start.epoch;\n var percent = (s.epoch - start.epoch) / duration;\n return parseFloat(percent.toFixed(2));\n}; //how far it is along, from 0-1\n\n\nvar progress = function progress(s, unit) {\n if (unit) {\n unit = fns.normalize(unit);\n return doUnit(s, unit);\n }\n\n var obj = {};\n units$2.forEach(function (k) {\n obj[k] = doUnit(s, k);\n });\n return obj;\n};\n\nvar progress_1 = progress;\n\nvar nearest = function nearest(s, unit) {\n //how far have we gone?\n var prog = s.progress();\n unit = fns.normalize(unit); //fix camel-case for this one\n\n if (unit === 'quarterhour') {\n unit = 'quarterHour';\n }\n\n if (prog[unit] !== undefined) {\n // go forward one?\n if (prog[unit] > 0.5) {\n s = s.add(1, unit);\n } // go to start\n\n\n s = s.startOf(unit);\n } else if (s.silent === false) {\n console.warn(\"no known unit '\" + unit + \"'\");\n }\n\n return s;\n};\n\nvar nearest_1 = nearest;\n\n//increment until dates are the same\nvar climb = function climb(a, b, unit) {\n var i = 0;\n a = a.clone();\n\n while (a.isBefore(b)) {\n //do proper, expensive increment to catch all-the-tricks\n a = a.add(1, unit);\n i += 1;\n } //oops, we went too-far..\n\n\n if (a.isAfter(b, unit)) {\n i -= 1;\n }\n\n return i;\n}; // do a thurough +=1 on the unit, until they match\n// for speed-reasons, only used on day, month, week.\n\n\nvar diffOne = function diffOne(a, b, unit) {\n if (a.isBefore(b)) {\n return climb(a, b, unit);\n } else {\n return climb(b, a, unit) * -1; //reverse it\n }\n};\n\nvar one = diffOne;\n\n// 2020 - 2019 may be 1 year, or 0 years\n// - '1 year difference' means 366 days during a leap year\n\nvar fastYear = function fastYear(a, b) {\n var years = b.year() - a.year(); // should we decrement it by 1?\n\n a = a.year(b.year());\n\n if (a.isAfter(b)) {\n years -= 1;\n }\n\n return years;\n}; // use a waterfall-method for computing a diff of any 'pre-knowable' units\n// compute years, then compute months, etc..\n// ... then ms-math for any very-small units\n\n\nvar diff$1 = function diff(a, b) {\n // an hour is always the same # of milliseconds\n // so these units can be 'pre-calculated'\n var msDiff = b.epoch - a.epoch;\n var obj = {\n milliseconds: msDiff,\n seconds: parseInt(msDiff / 1000, 10)\n };\n obj.minutes = parseInt(obj.seconds / 60, 10);\n obj.hours = parseInt(obj.minutes / 60, 10); //do the year\n\n var tmp = a.clone();\n obj.years = fastYear(tmp, b);\n tmp = a.add(obj.years, 'year'); //there's always 12 months in a year...\n\n obj.months = obj.years * 12;\n tmp = a.add(obj.months, 'month');\n obj.months += one(tmp, b, 'month'); // there's always atleast 52 weeks in a year..\n // (month * 4) isn't as close\n\n obj.weeks = obj.years * 52;\n tmp = a.add(obj.weeks, 'week');\n obj.weeks += one(tmp, b, 'week'); // there's always atleast 7 days in a week\n\n obj.days = obj.weeks * 7;\n tmp = a.add(obj.days, 'day');\n obj.days += one(tmp, b, 'day');\n return obj;\n};\n\nvar waterfall = diff$1;\n\nvar reverseDiff = function reverseDiff(obj) {\n Object.keys(obj).forEach(function (k) {\n obj[k] *= -1;\n });\n return obj;\n}; // this method counts a total # of each unit, between a, b.\n// '1 month' means 28 days in february\n// '1 year' means 366 days in a leap year\n\n\nvar main$1 = function main(a, b, unit) {\n b = fns.beADate(b, a); //reverse values, if necessary\n\n var reversed = false;\n\n if (a.isAfter(b)) {\n var tmp = a;\n a = b;\n b = tmp;\n reversed = true;\n } //compute them all (i know!)\n\n\n var obj = waterfall(a, b);\n\n if (reversed) {\n obj = reverseDiff(obj);\n } //return just the requested unit\n\n\n if (unit) {\n //make sure it's plural-form\n unit = fns.normalize(unit);\n\n if (/s$/.test(unit) !== true) {\n unit += 's';\n }\n\n if (unit === 'dates') {\n unit = 'days';\n }\n\n return obj[unit];\n }\n\n return obj;\n};\n\nvar diff = main$1;\n\n//our conceptual 'break-points' for each unit\n\nvar qualifiers = {\n months: {\n almost: 10,\n over: 4\n },\n days: {\n almost: 25,\n over: 10\n },\n hours: {\n almost: 20,\n over: 8\n },\n minutes: {\n almost: 50,\n over: 20\n },\n seconds: {\n almost: 50,\n over: 20\n }\n}; //get number of hours/minutes... between the two dates\n\nfunction getDiff(a, b) {\n var isBefore = a.isBefore(b);\n var later = isBefore ? b : a;\n var earlier = isBefore ? a : b;\n earlier = earlier.clone();\n var diff = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n Object.keys(diff).forEach(function (unit) {\n if (earlier.isSame(later, unit)) {\n return;\n }\n\n var max = earlier.diff(later, unit);\n earlier = earlier.add(max, unit);\n diff[unit] = max;\n }); //reverse it, if necessary\n\n if (isBefore) {\n Object.keys(diff).forEach(function (u) {\n if (diff[u] !== 0) {\n diff[u] *= -1;\n }\n });\n }\n\n return diff;\n} // Expects a plural unit arg\n\n\nfunction pluralize(value, unit) {\n if (value === 1) {\n unit = unit.slice(0, -1);\n }\n\n return value + ' ' + unit;\n} //create the human-readable diff between the two dates\n\n\nvar since = function since(start, end) {\n end = fns.beADate(end, start);\n var diff = getDiff(start, end);\n var isNow = Object.keys(diff).every(function (u) {\n return !diff[u];\n });\n\n if (isNow === true) {\n return {\n diff: diff,\n rounded: 'now',\n qualified: 'now',\n precise: 'now'\n };\n }\n\n var rounded;\n var qualified;\n var precise;\n var englishValues = []; //go through each value and create its text-representation\n\n Object.keys(diff).forEach(function (unit, i, units) {\n var value = Math.abs(diff[unit]);\n\n if (value === 0) {\n return;\n }\n\n var englishValue = pluralize(value, unit);\n englishValues.push(englishValue);\n\n if (!rounded) {\n rounded = qualified = englishValue;\n\n if (i > 4) {\n return;\n } //is it a 'almost' something, etc?\n\n\n var nextUnit = units[i + 1];\n var nextValue = Math.abs(diff[nextUnit]);\n\n if (nextValue > qualifiers[nextUnit].almost) {\n rounded = pluralize(value + 1, unit);\n qualified = 'almost ' + rounded;\n } else if (nextValue > qualifiers[nextUnit].over) qualified = 'over ' + englishValue;\n }\n }); //make them into a string\n\n precise = englishValues.splice(0, 2).join(', '); //handle before/after logic\n\n if (start.isAfter(end) === true) {\n rounded += ' ago';\n qualified += ' ago';\n precise += ' ago';\n } else {\n rounded = 'in ' + rounded;\n qualified = 'in ' + qualified;\n precise = 'in ' + precise;\n }\n\n return {\n diff: diff,\n rounded: rounded,\n qualified: qualified,\n precise: precise\n };\n};\n\nvar since_1 = since;\n\n//https://www.timeanddate.com/calendar/aboutseasons.html\n// Spring - from March 1 to May 31;\n// Summer - from June 1 to August 31;\n// Fall (autumn) - from September 1 to November 30; and,\n// Winter - from December 1 to February 28 (February 29 in a leap year).\nvar seasons = {\n north: [['spring', 2, 1], //spring march 1\n ['summer', 5, 1], //june 1\n ['fall', 8, 1], //sept 1\n ['autumn', 8, 1], //sept 1\n ['winter', 11, 1] //dec 1\n ],\n south: [['fall', 2, 1], //march 1\n ['autumn', 2, 1], //march 1\n ['winter', 5, 1], //june 1\n ['spring', 8, 1], //sept 1\n ['summer', 11, 1] //dec 1\n ]\n};\n\nvar quarters = [null, [0, 1], //jan 1\n[3, 1], //apr 1\n[6, 1], //july 1\n[9, 1] //oct 1\n];\n\nvar units$1 = {\n minute: function minute(s) {\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarterhour: function quarterhour(s) {\n var minute = s.minutes();\n\n if (minute >= 45) {\n s = s.minutes(45);\n } else if (minute >= 30) {\n s = s.minutes(30);\n } else if (minute >= 15) {\n s = s.minutes(15);\n } else {\n s = s.minutes(0);\n }\n\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n hour: function hour(s) {\n walk_1(s, {\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n day: function day(s) {\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n week: function week(s) {\n var original = s.clone();\n s = s.day(s._weekStart); //monday\n\n if (s.isAfter(original)) {\n s = s.subtract(1, 'week');\n }\n\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n month: function month(s) {\n walk_1(s, {\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarter: function quarter(s) {\n var q = s.quarter();\n\n if (quarters[q]) {\n walk_1(s, {\n month: quarters[q][0],\n date: quarters[q][1],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n }\n\n return s;\n },\n season: function season(s) {\n var current = s.season();\n var hem = 'north';\n\n if (s.hemisphere() === 'South') {\n hem = 'south';\n }\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (seasons[hem][i][0] === current) {\n //winter goes between years\n var year = s.year();\n\n if (current === 'winter' && s.month() < 3) {\n year -= 1;\n }\n\n walk_1(s, {\n year: year,\n month: seasons[hem][i][1],\n date: seasons[hem][i][2],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n }\n }\n\n return s;\n },\n year: function year(s) {\n walk_1(s, {\n month: 0,\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n decade: function decade(s) {\n s = s.startOf('year');\n var year = s.year();\n var decade = parseInt(year / 10, 10) * 10;\n s = s.year(decade);\n return s;\n },\n century: function century(s) {\n s = s.startOf('year');\n var year = s.year(); // near 0AD goes '-1 | +1'\n\n var decade = parseInt(year / 100, 10) * 100;\n s = s.year(decade);\n return s;\n }\n};\nunits$1.date = units$1.day;\n\nvar startOf = function startOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$1[unit]) {\n return units$1[unit](s);\n }\n\n if (unit === 'summer' || unit === 'winter') {\n s = s.season(unit);\n return units$1.season(s);\n }\n\n return s;\n}; //piggy-backs off startOf\n\n\nvar endOf = function endOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$1[unit]) {\n // go to beginning, go to next one, step back 1ms\n s = units$1[unit](s); // startof\n\n s = s.add(1, unit);\n s = s.subtract(1, 'millisecond');\n return s;\n }\n\n return s;\n};\n\nvar startOf_1 = {\n startOf: startOf,\n endOf: endOf\n};\n\nvar isDay = function isDay(unit) {\n if (days[\"short\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n if (days[\"long\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n return false;\n}; // return a list of the weeks/months/days between a -> b\n// returns spacetime objects in the timezone of the input\n\n\nvar every = function every(start) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var end = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!unit || !end) {\n return [];\n } //cleanup unit param\n\n\n unit = fns.normalize(unit); //cleanup to param\n\n end = start.clone().set(end); //swap them, if they're backwards\n\n if (start.isAfter(end)) {\n var tmp = start;\n start = end;\n end = tmp;\n } //support 'every wednesday'\n\n\n var d = start.clone();\n\n if (isDay(unit)) {\n d = d.next(unit);\n unit = 'week';\n } else {\n d = d.next(unit);\n } //okay, actually start doing it\n\n\n var result = [];\n\n while (d.isBefore(end)) {\n result.push(d);\n d = d.add(1, unit);\n }\n\n return result;\n};\n\nvar every_1 = every;\n\nvar parseDst = function parseDst(dst) {\n if (!dst) {\n return [];\n }\n\n return dst.split('->');\n};\n\nvar titleCase = function titleCase(str) {\n str = str[0].toUpperCase() + str.substr(1);\n str = str.replace(/\\/gmt/, '/GMT');\n str = str.replace(/[\\/_]([a-z])/gi, function (s) {\n return s.toUpperCase();\n });\n return str;\n}; //get metadata about this timezone\n\n\nvar timezone = function timezone(s) {\n var zones = s.timezones;\n var tz = s.tz;\n\n if (zones.hasOwnProperty(tz) === false) {\n tz = find(s.tz, zones);\n }\n\n if (tz === null) {\n if (s.silent === false) {\n console.warn(\"Warn: could not find given or local timezone - '\" + s.tz + \"'\");\n }\n\n return {\n current: {\n epochShift: 0\n }\n };\n }\n\n var found = zones[tz];\n var result = {\n name: titleCase(tz),\n hasDst: Boolean(found.dst),\n default_offset: found.offset,\n //do north-hemisphere version as default (sorry!)\n hemisphere: found.hem === 's' ? 'South' : 'North',\n current: {}\n };\n\n if (result.hasDst) {\n var arr = parseDst(found.dst);\n result.change = {\n start: arr[0],\n back: arr[1]\n };\n } //find the offsets for summer/winter times\n //(these variable names are north-centric)\n\n\n var summer = found.offset; // (july)\n\n var winter = summer; // (january) assume it's the same for now\n\n if (result.hasDst === true) {\n if (result.hemisphere === 'North') {\n winter = summer - 1;\n } else {\n //southern hemisphere\n winter = found.offset + 1;\n }\n } //find out which offset to use right now\n //use 'summer' time july-time\n\n\n if (result.hasDst === false) {\n result.current.offset = summer;\n result.current.isDST = false;\n } else if (summerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) {\n result.current.offset = summer;\n result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north\n } else {\n //use 'winter' january-time\n result.current.offset = winter;\n result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south\n }\n\n return result;\n};\n\nvar timezone_1 = timezone;\n\nvar units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\nvar methods$4 = {\n set: function set(input$1, tz) {\n var s = this.clone();\n s = input(s, input$1, null);\n\n if (tz) {\n this.tz = find(tz);\n }\n\n return s;\n },\n timezone: function timezone() {\n return timezone_1(this);\n },\n isDST: function isDST() {\n return timezone_1(this).current.isDST;\n },\n hasDST: function hasDST() {\n return timezone_1(this).hasDst;\n },\n offset: function offset() {\n return timezone_1(this).current.offset * 60;\n },\n hemisphere: function hemisphere() {\n return timezone_1(this).hemisphere;\n },\n format: function format(fmt) {\n return format_1(this, fmt);\n },\n unixFmt: function unixFmt(fmt) {\n return unixFmt_1(this, fmt);\n },\n startOf: function startOf(unit) {\n return startOf_1.startOf(this, unit);\n },\n endOf: function endOf(unit) {\n return startOf_1.endOf(this, unit);\n },\n leapYear: function leapYear() {\n var year = this.year();\n return fns.isLeapYear(year);\n },\n progress: function progress(unit) {\n return progress_1(this, unit);\n },\n nearest: function nearest(unit) {\n return nearest_1(this, unit);\n },\n diff: function diff$1(d, unit) {\n return diff(this, d, unit);\n },\n since: function since(d) {\n if (!d) {\n d = this.clone().set();\n }\n\n return since_1(this, d);\n },\n next: function next(unit) {\n var s = this.add(1, unit);\n return s.startOf(unit);\n },\n //the start of the previous year/week/century\n last: function last(unit) {\n var s = this.subtract(1, unit);\n return s.startOf(unit);\n },\n isValid: function isValid() {\n //null/undefined epochs\n if (!this.epoch && this.epoch !== 0) {\n return false;\n }\n\n return !isNaN(this.d.getTime());\n },\n //travel to this timezone\n \"goto\": function goto(tz) {\n var s = this.clone();\n s.tz = find(tz, s.timezones); //science!\n\n return s;\n },\n //get each week/month/day between a -> b\n every: function every(unit, to) {\n // allow swapping these params:\n if (_typeof(unit) === 'object' && typeof to === 'string') {\n var tmp = to;\n to = unit;\n unit = tmp;\n }\n\n return every_1(this, unit, to);\n },\n isAwake: function isAwake() {\n var hour = this.hour(); //10pm -> 8am\n\n if (hour < 8 || hour > 22) {\n return false;\n }\n\n return true;\n },\n isAsleep: function isAsleep() {\n return !this.isAwake();\n },\n //pretty-printing\n log: function log() {\n console.log('');\n console.log(format_1(this, 'nice-short'));\n return this;\n },\n logYear: function logYear() {\n console.log('');\n console.log(format_1(this, 'full-short'));\n return this;\n },\n json: function json() {\n var _this = this;\n\n return units.reduce(function (h, unit) {\n h[unit] = _this[unit]();\n return h;\n }, {});\n },\n debug: function debug() {\n var tz = this.timezone();\n var date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year();\n date += '\\n - ' + this.format('time');\n console.log('\\n\\n', date + '\\n - ' + tz.name + ' (' + tz.current.offset + ')');\n return this;\n },\n //alias of 'since' but opposite - like moment.js\n from: function from(d) {\n d = this.clone().set(d);\n return d.since(this);\n },\n fromNow: function fromNow() {\n var d = this.clone().set(Date.now());\n return d.since(this);\n },\n weekStart: function weekStart(input) {\n //accept a number directly\n if (typeof input === 'number') {\n this._weekStart = input;\n return this;\n }\n\n if (typeof input === 'string') {\n // accept 'wednesday'\n input = input.toLowerCase().trim();\n var num = days[\"short\"]().indexOf(input);\n\n if (num === -1) {\n num = days[\"long\"]().indexOf(input);\n }\n\n if (num === -1) {\n num = 1; //go back to default\n }\n\n this._weekStart = num;\n } else {\n console.warn('Spacetime Error: Cannot understand .weekStart() input:', input);\n }\n\n return this;\n }\n}; // aliases\n\nmethods$4.inDST = methods$4.isDST;\nmethods$4.round = methods$4.nearest;\nmethods$4.each = methods$4.every;\nvar methods_1 = methods$4;\n\n//these methods wrap around them.\n\nvar isLeapYear$1 = fns.isLeapYear;\n\nvar validate = function validate(n) {\n //handle number as a string\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n }\n\n return n;\n};\n\nvar order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond\n\nvar confirm = function confirm(s, tmp, unit) {\n var n = order$1.indexOf(unit);\n var arr = order$1.slice(n, order$1.length);\n\n for (var i = 0; i < arr.length; i++) {\n var want = tmp[arr[i]]();\n s[arr[i]](want);\n }\n\n return s;\n};\n\nvar set = {\n milliseconds: function milliseconds(s, n) {\n n = validate(n);\n var current = s.millisecond();\n var diff = current - n; //milliseconds to shift by\n\n return s.epoch - diff;\n },\n seconds: function seconds(s, n) {\n n = validate(n);\n var diff = s.second() - n;\n var shift = diff * milliseconds.second;\n return s.epoch - shift;\n },\n minutes: function minutes(s, n) {\n n = validate(n);\n var old = s.clone();\n var diff = s.minute() - n;\n var shift = diff * milliseconds.minute;\n s.epoch -= shift; // check against a screw-up\n // if (old.hour() != s.hour()) {\n // walkTo(old, {\n // minute: n\n // })\n // return old.epoch\n // }\n\n confirm(s, old, 'second');\n return s.epoch;\n },\n hours: function hours(s, n) {\n n = validate(n);\n\n if (n >= 24) {\n n = 24;\n } else if (n < 0) {\n n = 0;\n }\n\n var old = s.clone();\n var diff = s.hour() - n;\n var shift = diff * milliseconds.hour;\n s.epoch -= shift; // oops, did we change the day?\n\n if (s.date() !== old.date()) {\n s = old.clone();\n\n if (diff > 1) {\n diff -= 1;\n }\n\n if (diff < 1) {\n diff += 1;\n }\n\n shift = diff * milliseconds.hour;\n s.epoch -= shift;\n }\n\n walk_1(s, {\n hour: n\n });\n confirm(s, old, 'minute');\n return s.epoch;\n },\n //support setting time by '4:25pm' - this isn't very-well developed..\n time: function time(s, str) {\n var m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);\n\n if (!m) {\n //fallback to support just '2am'\n m = str.match(/([0-9]{1,2}) ?(am|pm)/);\n\n if (!m) {\n return s.epoch;\n }\n\n m.splice(2, 0, '0'); //add implicit 0 minutes\n\n m.splice(3, 0, ''); //add implicit seconds\n }\n\n var h24 = false;\n var hour = parseInt(m[1], 10);\n var minute = parseInt(m[2], 10);\n\n if (hour > 12) {\n h24 = true;\n } //make the hour into proper 24h time\n\n\n if (h24 === false) {\n if (m[4] === 'am' && hour === 12) {\n //12am is midnight\n hour = 0;\n }\n\n if (m[4] === 'pm' && hour < 12) {\n //12pm is noon\n hour += 12;\n }\n } // handle seconds\n\n\n m[3] = m[3] || '';\n m[3] = m[3].replace(/:/, '');\n var sec = parseInt(m[3], 10) || 0;\n s = s.hour(hour);\n s = s.minute(minute);\n s = s.second(sec);\n s = s.millisecond(0);\n return s.epoch;\n },\n date: function date(s, n) {\n n = validate(n); //avoid setting february 31st\n\n if (n > 28) {\n var month = s.month();\n var max = monthLengths_1[month]; // support leap day in february\n\n if (month === 1 && n === 29 && isLeapYear$1(s.year())) {\n max = 29;\n }\n\n if (n > max) {\n n = max;\n }\n } //avoid setting < 0\n\n\n if (n <= 0) {\n n = 1;\n }\n\n walk_1(s, {\n date: n\n });\n return s.epoch;\n },\n //this one's tricky\n month: function month(s, n) {\n if (typeof n === 'string') {\n n = months$1.mapping()[n.toLowerCase()];\n }\n\n n = validate(n); //don't go past december\n\n if (n >= 12) {\n n = 11;\n }\n\n if (n <= 0) {\n n = 0;\n }\n\n var date = s.date(); //there's no 30th of february, etc.\n\n if (date > monthLengths_1[n]) {\n //make it as close as we can..\n date = monthLengths_1[n];\n }\n\n walk_1(s, {\n month: n,\n date: date\n });\n return s.epoch;\n },\n year: function year(s, n) {\n // support '97\n if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) {\n n = n.replace(/'/, '').trim();\n n = Number(n); // '89 is 1989\n\n if (n > 30) {\n //change this in 10y\n n = 1900 + n;\n } else {\n // '12 is 2012\n n = 2000 + n;\n }\n }\n\n n = validate(n);\n walk_1(s, {\n year: n\n });\n return s.epoch;\n },\n dayOfYear: function dayOfYear(s, n) {\n n = validate(n);\n var old = s.clone();\n n -= 1; //days are 1-based\n\n if (n <= 0) {\n n = 0;\n } else if (n >= 365) {\n n = 364;\n }\n\n s = s.startOf('year');\n s = s.add(n, 'day');\n confirm(s, old, 'hour');\n return s.epoch;\n }\n};\n\nvar methods$3 = {\n millisecond: function millisecond(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.milliseconds(s, num);\n return s;\n }\n\n return this.d.getMilliseconds();\n },\n second: function second(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.seconds(s, num);\n return s;\n }\n\n return this.d.getSeconds();\n },\n minute: function minute(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.minutes(s, num);\n return s;\n }\n\n return this.d.getMinutes();\n },\n hour: function hour(num) {\n var d = this.d;\n\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.hours(s, num);\n return s;\n }\n\n return d.getHours();\n },\n //'3:30' is 3.5\n hourFloat: function hourFloat(num) {\n if (num !== undefined) {\n var s = this.clone();\n\n var _minute = num % 1;\n\n _minute = _minute * 60;\n\n var _hour = parseInt(num, 10);\n\n s.epoch = set.hours(s, _hour);\n s.epoch = set.minutes(s, _minute);\n return s;\n }\n\n var d = this.d;\n var hour = d.getHours();\n var minute = d.getMinutes();\n minute = minute / 60;\n return hour + minute;\n },\n // hour in 12h format\n hour12: function hour12(str) {\n var d = this.d;\n\n if (str !== undefined) {\n var s = this.clone();\n str = '' + str;\n var m = str.match(/^([0-9]+)(am|pm)$/);\n\n if (m) {\n var hour = parseInt(m[1], 10);\n\n if (m[2] === 'pm') {\n hour += 12;\n }\n\n s.epoch = set.hours(s, hour);\n }\n\n return s;\n } //get the hour\n\n\n var hour12 = d.getHours();\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n }\n\n if (hour12 === 0) {\n hour12 = 12;\n }\n\n return hour12;\n },\n //some ambiguity here with 12/24h\n time: function time(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase().trim();\n s.epoch = set.time(s, str);\n return s;\n }\n\n return \"\".concat(this.h12(), \":\").concat(fns.zeroPad(this.minute())).concat(this.ampm());\n },\n // either 'am' or 'pm'\n ampm: function ampm(input) {\n var which = 'am';\n var hour = this.hour();\n\n if (hour >= 12) {\n which = 'pm';\n }\n\n if (typeof input !== 'string') {\n return which;\n } //okay, we're doing a setter\n\n\n var s = this.clone();\n input = input.toLowerCase().trim(); //ampm should never change the day\n // - so use `.hour(n)` instead of `.minus(12,'hour')`\n\n if (hour >= 12 && input === 'am') {\n //noon is 12pm\n hour -= 12;\n return s.hour(hour);\n }\n\n if (hour < 12 && input === 'pm') {\n hour += 12;\n return s.hour(hour);\n }\n\n return s;\n },\n //some hard-coded times of day, like 'noon'\n dayTime: function dayTime(str) {\n if (str !== undefined) {\n var times = {\n morning: '7:00am',\n breakfast: '7:00am',\n noon: '12:00am',\n lunch: '12:00pm',\n afternoon: '2:00pm',\n evening: '6:00pm',\n dinner: '6:00pm',\n night: '11:00pm',\n midnight: '23:59pm'\n };\n var s = this.clone();\n str = str || '';\n str = str.toLowerCase();\n\n if (times.hasOwnProperty(str) === true) {\n s = s.time(times[str]);\n }\n\n return s;\n }\n\n var h = this.hour();\n\n if (h < 6) {\n return 'night';\n }\n\n if (h < 12) {\n //until noon\n return 'morning';\n }\n\n if (h < 17) {\n //until 5pm\n return 'afternoon';\n }\n\n if (h < 22) {\n //until 10pm\n return 'evening';\n }\n\n return 'night';\n },\n //parse a proper iso string\n iso: function iso(num) {\n if (num !== undefined) {\n return this.set(num);\n }\n\n return this.format('iso');\n }\n};\nvar _01Time = methods$3;\n\nvar methods$2 = {\n // # day in the month\n date: function date(num) {\n if (num !== undefined) {\n var s = this.clone();\n num = parseInt(num, 10);\n\n if (num) {\n s.epoch = set.date(s, num);\n }\n\n return s;\n }\n\n return this.d.getDate();\n },\n //like 'wednesday' (hard!)\n day: function day(input) {\n if (input === undefined) {\n return this.d.getDay();\n }\n\n var original = this.clone();\n var want = input; // accept 'wednesday'\n\n if (typeof input === 'string') {\n input = input.toLowerCase();\n\n if (days.aliases.hasOwnProperty(input)) {\n want = days.aliases[input];\n } else {\n want = days[\"short\"]().indexOf(input);\n\n if (want === -1) {\n want = days[\"long\"]().indexOf(input);\n }\n }\n } //move approx\n\n\n var day = this.d.getDay();\n var diff = day - want;\n var s = this.subtract(diff, 'days'); //tighten it back up\n\n walk_1(s, {\n hour: original.hour(),\n minute: original.minute(),\n second: original.second()\n });\n return s;\n },\n //these are helpful name-wrappers\n dayName: function dayName(input) {\n if (input === undefined) {\n return days[\"long\"]()[this.day()];\n }\n\n var s = this.clone();\n s = s.day(input);\n return s;\n },\n //either name or number\n month: function month(input) {\n if (input !== undefined) {\n var s = this.clone();\n s.epoch = set.month(s, input);\n return s;\n }\n\n return this.d.getMonth();\n }\n};\nvar _02Date = methods$2;\n\nvar clearMinutes = function clearMinutes(s) {\n s = s.minute(0);\n s = s.second(0);\n s = s.millisecond(1);\n return s;\n};\n\nvar methods$1 = {\n // day 0-366\n dayOfYear: function dayOfYear(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.dayOfYear(s, num);\n return s;\n } //days since newyears - jan 1st is 1, jan 2nd is 2...\n\n\n var sum = 0;\n var month = this.d.getMonth();\n var tmp; //count the num days in each month\n\n for (var i = 1; i <= month; i++) {\n tmp = new Date();\n tmp.setDate(1);\n tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years\n\n tmp.setHours(1);\n tmp.setMinutes(1);\n tmp.setMonth(i);\n tmp.setHours(-2); //the last day of the month\n\n sum += tmp.getDate();\n }\n\n return sum + this.d.getDate();\n },\n //since the start of the year\n week: function week(num) {\n // week-setter\n if (num !== undefined) {\n var s = this.clone();\n s = s.month(0);\n s = s.date(1);\n s = s.day('monday');\n s = clearMinutes(s); //first week starts first Thurs in Jan\n // so mon dec 28th is 1st week\n // so mon dec 29th is not the week\n\n if (s.monthName() === 'december' && s.date() >= 28) {\n s = s.add(1, 'week');\n }\n\n num -= 1; //1-based\n\n s = s.add(num, 'weeks');\n return s;\n } //find-out which week it is\n\n\n var tmp = this.clone();\n tmp = tmp.month(0);\n tmp = tmp.date(1);\n tmp = clearMinutes(tmp);\n tmp = tmp.day('monday'); //don't go into last-year\n\n if (tmp.monthName() === 'december' && tmp.date() >= 28) {\n tmp = tmp.add(1, 'week');\n } // is first monday the 1st?\n\n\n var toAdd = 1;\n\n if (tmp.date() === 1) {\n toAdd = 0;\n }\n\n tmp = tmp.minus(1, 'second');\n var thisOne = this.epoch; //if the week technically hasn't started yet\n\n if (tmp.epoch > thisOne) {\n return 1;\n } //speed it up, if we can\n\n\n var i = 0;\n var skipWeeks = this.month() * 4;\n tmp.epoch += milliseconds.week * skipWeeks;\n i += skipWeeks;\n\n for (; i <= 52; i++) {\n if (tmp.epoch > thisOne) {\n return i + toAdd;\n }\n\n tmp = tmp.add(1, 'week');\n }\n\n return 52;\n },\n //'january'\n monthName: function monthName(input) {\n if (input === undefined) {\n return months$1[\"long\"]()[this.month()];\n }\n\n var s = this.clone();\n s = s.month(input);\n return s;\n },\n //q1, q2, q3, q4\n quarter: function quarter(num) {\n if (num !== undefined) {\n if (typeof num === 'string') {\n num = num.replace(/^q/i, '');\n num = parseInt(num, 10);\n }\n\n if (quarters[num]) {\n var s = this.clone();\n var _month = quarters[num][0];\n s = s.month(_month);\n s = s.date(1);\n s = s.startOf('day');\n return s;\n }\n }\n\n var month = this.d.getMonth();\n\n for (var i = 1; i < quarters.length; i++) {\n if (month < quarters[i][0]) {\n return i - 1;\n }\n }\n\n return 4;\n },\n //spring, summer, winter, fall\n season: function season(input) {\n var hem = 'north';\n\n if (this.hemisphere() === 'South') {\n hem = 'south';\n }\n\n if (input !== undefined) {\n var s = this.clone();\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (input === seasons[hem][i][0]) {\n s = s.month(seasons[hem][i][1]);\n s = s.date(1);\n s = s.startOf('day');\n }\n }\n\n return s;\n }\n\n var month = this.d.getMonth();\n\n for (var _i = 0; _i < seasons[hem].length - 1; _i++) {\n if (month >= seasons[hem][_i][1] && month < seasons[hem][_i + 1][1]) {\n return seasons[hem][_i][0];\n }\n }\n\n return 'winter';\n },\n //the year number\n year: function year(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.year(s, num);\n return s;\n }\n\n return this.d.getFullYear();\n },\n //bc/ad years\n era: function era(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase(); //TODO: there is no year-0AD i think. may have off-by-1 error here\n\n var year = s.d.getFullYear(); //make '1992' into 1992bc..\n\n if (str === 'bc' && year > 0) {\n s.epoch = set.year(s, year * -1);\n } //make '1992bc' into '1992'\n\n\n if (str === 'ad' && year < 0) {\n s.epoch = set.year(s, year * -1);\n }\n\n return s;\n }\n\n if (this.d.getFullYear() < 0) {\n return 'BC';\n }\n\n return 'AD';\n },\n // 2019 -> 2010\n decade: function decade(input) {\n if (input !== undefined) {\n input = String(input);\n input = input.replace(/([0-9])'?s$/, '$1'); //1950's\n\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n if (!input) {\n console.warn('Spacetime: Invalid decade input');\n return this;\n } // assume 20th century?? for '70s'.\n\n\n if (input.length === 2 && /[0-9][0-9]/.test(input)) {\n input = '19' + input;\n }\n\n var year = Number(input);\n\n if (isNaN(year)) {\n return this;\n } // round it down to the decade\n\n\n year = Math.floor(year / 10) * 10;\n return this.year(year); //.startOf('decade')\n }\n\n return this.startOf('decade').year();\n },\n // 1950 -> 19+1\n century: function century(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = input.replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i, function (a, b, c) {\n if (c.match(/b\\.?c\\.?/i)) {\n b = '-' + b;\n }\n\n return b;\n });\n input = input.replace(/c$/, ''); //20thC\n }\n\n var year = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid century input');\n return this;\n } // there is no century 0\n\n\n if (year === 0) {\n year = 1;\n }\n\n if (year >= 0) {\n year = (year - 1) * 100;\n } else {\n year = (year + 1) * 100;\n }\n\n return this.year(year);\n } // century getter\n\n\n var num = this.startOf('century').year();\n num = Math.floor(num / 100);\n\n if (num < 0) {\n return num - 1;\n }\n\n return num + 1;\n },\n // 2019 -> 2+1\n millenium: function millenium(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid millenium input');\n return this;\n }\n }\n\n if (input > 0) {\n input -= 1;\n }\n\n var year = input * 1000; // there is no year 0\n\n if (year === 0) {\n year = 1;\n }\n\n return this.year(year);\n } // get the current millenium\n\n\n var num = Math.floor(this.year() / 1000);\n\n if (num >= 0) {\n num += 1;\n }\n\n return num;\n }\n};\nvar _03Year = methods$1;\n\nvar methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\nmethods.milliseconds = methods.millisecond;\nmethods.seconds = methods.second;\nmethods.minutes = methods.minute;\nmethods.hours = methods.hour;\nmethods.hour24 = methods.hour;\nmethods.h12 = methods.hour12;\nmethods.h24 = methods.hour24;\nmethods.days = methods.day;\n\nvar addMethods$4 = function addMethods(Space) {\n //hook the methods into prototype\n Object.keys(methods).forEach(function (k) {\n Space.prototype[k] = methods[k];\n });\n};\n\nvar query = addMethods$4;\n\nvar isLeapYear = fns.isLeapYear;\n\nvar getMonthLength = function getMonthLength(month, year) {\n if (month === 1 && isLeapYear(year)) {\n return 29;\n }\n\n return monthLengths_1[month];\n}; //month is the one thing we 'model/compute'\n//- because ms-shifting can be off by enough\n\n\nvar rollMonth = function rollMonth(want, old) {\n //increment year\n if (want.month > 0) {\n var years = parseInt(want.month / 12, 10);\n want.year = old.year() + years;\n want.month = want.month % 12;\n } else if (want.month < 0) {\n //decrement year\n var _years = Math.floor(Math.abs(want.month) / 13, 10);\n\n _years = Math.abs(_years) + 1;\n want.year = old.year() - _years; //ignore extras\n\n want.month = want.month % 12;\n want.month = want.month + 12;\n\n if (want.month === 12) {\n want.month = 0;\n }\n }\n\n return want;\n}; // briefly support day=-2 (this does not need to be perfect.)\n\n\nvar rollDaysDown = function rollDaysDown(want, old, sum) {\n want.year = old.year();\n want.month = old.month();\n var date = old.date();\n want.date = date - Math.abs(sum);\n\n while (want.date < 1) {\n want.month -= 1;\n\n if (want.month < 0) {\n want.month = 11;\n want.year -= 1;\n }\n\n var max = getMonthLength(want.month, want.year);\n want.date += max;\n }\n\n return want;\n}; // briefly support day=33 (this does not need to be perfect.)\n\n\nvar rollDaysUp = function rollDaysUp(want, old, sum) {\n var year = old.year();\n var month = old.month();\n var max = getMonthLength(month, year);\n\n while (sum > max) {\n sum -= max;\n month += 1;\n\n if (month >= 12) {\n month -= 12;\n year += 1;\n }\n\n max = getMonthLength(month, year);\n }\n\n want.month = month;\n want.date = sum;\n return want;\n};\n\nvar _model = {\n months: rollMonth,\n days: rollDaysUp,\n daysBack: rollDaysDown\n};\n\n// but briefly:\n// millisecond-math, and some post-processing covers most-things\n// we 'model' the calendar here only a little bit\n// and that usually works-out...\n\nvar order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\nvar keep = {\n second: order.slice(0, 1),\n minute: order.slice(0, 2),\n quarterhour: order.slice(0, 2),\n hour: order.slice(0, 3),\n date: order.slice(0, 4),\n month: order.slice(0, 4),\n quarter: order.slice(0, 4),\n season: order.slice(0, 4),\n year: order,\n decade: order,\n century: order\n};\nkeep.week = keep.hour;\nkeep.season = keep.date;\nkeep.quarter = keep.date; // Units need to be dst adjuested\n\nvar dstAwareUnits = {\n year: true,\n quarter: true,\n season: true,\n month: true,\n week: true,\n day: true\n};\nvar keepDate = {\n month: true,\n quarter: true,\n season: true,\n year: true\n};\n\nvar addMethods$3 = function addMethods(SpaceTime) {\n SpaceTime.prototype.add = function (num, unit) {\n var s = this.clone();\n\n if (!unit || num === 0) {\n return s; //don't bother\n }\n\n var old = this.clone();\n unit = fns.normalize(unit);\n\n if (unit === 'millisecond') {\n s.epoch += num;\n return s;\n } // support 'fortnight' alias\n\n\n if (unit === 'fortnight') {\n num *= 2;\n unit = 'week';\n } //move forward by the estimated milliseconds (rough)\n\n\n if (milliseconds[unit]) {\n s.epoch += milliseconds[unit] * num;\n } else if (unit === 'week') {\n s.epoch += milliseconds.day * (num * 7);\n } else if (unit === 'quarter' || unit === 'season') {\n s.epoch += milliseconds.month * (num * 3);\n } else if (unit === 'quarterhour') {\n s.epoch += milliseconds.minute * 15 * num;\n } //now ensure our milliseconds/etc are in-line\n\n\n var want = {};\n\n if (keep[unit]) {\n keep[unit].forEach(function (u) {\n want[u] = old[u]();\n });\n }\n\n if (dstAwareUnits[unit]) {\n var diff = old.timezone().current.offset - s.timezone().current.offset;\n s.epoch += diff * 3600 * 1000;\n } //ensure month/year has ticked-over\n\n\n if (unit === 'month') {\n want.month = old.month() + num; //month is the one unit we 'model' directly\n\n want = _model.months(want, old);\n } //support coercing a week, too\n\n\n if (unit === 'week') {\n var sum = old.date() + num * 7;\n\n if (sum <= 28 && sum > 1) {\n want.date = sum;\n }\n } //support 25-hour day-changes on dst-changes\n else if (unit === 'date') {\n if (num < 0) {\n want = _model.daysBack(want, old, num);\n } else {\n //specify a naive date number, if it's easy to do...\n var _sum = old.date() + num; // ok, model this one too\n\n\n want = _model.days(want, old, _sum);\n } //manually punt it if we haven't moved at all..\n\n\n if (num !== 0 && old.isSame(s, 'day')) {\n want.date = old.date() + num;\n }\n } // ensure a quarter is 3 months over\n else if (unit === 'quarter') {\n want.month = old.month() + num * 3;\n want.year = old.year(); // handle rollover\n\n if (want.month < 0) {\n var years = Math.floor(want.month / 12);\n var remainder = want.month + Math.abs(years) * 12;\n want.month = remainder;\n want.year += years;\n } else if (want.month >= 12) {\n var _years = Math.floor(want.month / 12);\n\n want.month = want.month % 12;\n want.year += _years;\n }\n\n want.date = old.date();\n } //ensure year has changed (leap-years)\n else if (unit === 'year') {\n var wantYear = old.year() + num;\n var haveYear = s.year();\n\n if (haveYear < wantYear) {\n s.epoch += milliseconds.day;\n } else if (haveYear > wantYear) {\n s.epoch += milliseconds.day;\n }\n } //these are easier\n else if (unit === 'decade') {\n want.year = s.year() + 10;\n } else if (unit === 'century') {\n want.year = s.year() + 100;\n } //keep current date, unless the month doesn't have it.\n\n\n if (keepDate[unit]) {\n var max = monthLengths_1[want.month];\n want.date = old.date();\n\n if (want.date > max) {\n want.date = max;\n }\n }\n\n if (Object.keys(want).length > 1) {\n walk_1(s, want);\n }\n\n return s;\n }; //subtract is only add *-1\n\n\n SpaceTime.prototype.subtract = function (num, unit) {\n var s = this.clone();\n return s.add(num * -1, unit);\n }; //add aliases\n\n\n SpaceTime.prototype.minus = SpaceTime.prototype.subtract;\n SpaceTime.prototype.plus = SpaceTime.prototype.add;\n};\n\nvar add = addMethods$3;\n\n//make a string, for easy comparison between dates\nvar print = {\n millisecond: function millisecond(s) {\n return s.epoch;\n },\n second: function second(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-');\n },\n minute: function minute(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-');\n },\n hour: function hour(s) {\n return [s.year(), s.month(), s.date(), s.hour()].join('-');\n },\n day: function day(s) {\n return [s.year(), s.month(), s.date()].join('-');\n },\n week: function week(s) {\n return [s.year(), s.week()].join('-');\n },\n month: function month(s) {\n return [s.year(), s.month()].join('-');\n },\n quarter: function quarter(s) {\n return [s.year(), s.quarter()].join('-');\n },\n year: function year(s) {\n return s.year();\n }\n};\nprint.date = print.day;\n\nvar addMethods$2 = function addMethods(SpaceTime) {\n SpaceTime.prototype.isSame = function (b, unit) {\n var tzAware = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var a = this;\n\n if (!unit) {\n return null;\n } // support swapped params\n\n\n if (typeof b === 'string' && _typeof(unit) === 'object') {\n var tmp = b;\n b = unit;\n unit = tmp;\n }\n\n if (typeof b === 'string' || typeof b === 'number') {\n b = new SpaceTime(b, this.timezone.name);\n } //support 'seconds' aswell as 'second'\n\n\n unit = unit.replace(/s$/, ''); // make them the same timezone for proper comparison\n\n if (tzAware === true && a.tz !== b.tz) {\n b = b.clone();\n b.tz = a.tz;\n }\n\n if (print[unit]) {\n return print[unit](a) === print[unit](b);\n }\n\n return null;\n };\n};\n\nvar same = addMethods$2;\n\nvar addMethods$1 = function addMethods(SpaceTime) {\n var methods = {\n isAfter: function isAfter(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch > epoch;\n },\n isBefore: function isBefore(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch < epoch;\n },\n isEqual: function isEqual(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch === epoch;\n },\n isBetween: function isBetween(start, end) {\n var isInclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n start = fns.beADate(start, this);\n end = fns.beADate(end, this);\n var startEpoch = fns.getEpoch(start);\n\n if (startEpoch === null) {\n return null;\n }\n\n var endEpoch = fns.getEpoch(end);\n\n if (endEpoch === null) {\n return null;\n }\n\n if (isInclusive) {\n return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end);\n }\n\n return startEpoch < this.epoch && this.epoch < endEpoch;\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar compare = addMethods$1;\n\nvar addMethods = function addMethods(SpaceTime) {\n var methods = {\n i18n: function i18n(data) {\n //change the day names\n if (fns.isObject(data.days)) {\n days.set(data.days);\n } //change the month names\n\n\n if (fns.isObject(data.months)) {\n months$1.set(data.months);\n } // change the the display style of the month / day names\n\n\n if (fns.isBoolean(data.useTitleCase)) {\n caseFormat.set(data.useTitleCase);\n }\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar i18n = addMethods;\n\nvar timezones = unpack; //fake timezone-support, for fakers (es5 class)\n\nvar SpaceTime = function SpaceTime(input$1, tz) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n //the holy moment\n this.epoch = null; //the shift for the given timezone\n\n this.tz = find(tz, timezones); //whether to output warnings to console\n\n this.silent = options.silent || true; // favour british interpretation of 02/02/2018, etc\n\n this.british = options.dmy || options.british; //does the week start on sunday, or monday:\n\n this._weekStart = 1; //default to monday\n\n if (options.weekStart !== undefined) {\n this._weekStart = options.weekStart;\n } // the reference today date object, (for testing)\n\n\n this._today = {};\n\n if (options.today !== undefined) {\n this._today = options.today;\n } //add getter/setters\n\n\n Object.defineProperty(this, 'd', {\n //return a js date object\n get: function get() {\n var offset = quick(this); //every computer is somewhere- get this computer's built-in offset\n\n var bias = new Date(this.epoch).getTimezoneOffset() || 0; //movement\n\n var shift = bias + offset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n //remove this computer's offset\n\n var epoch = this.epoch + shift;\n var d = new Date(epoch);\n return d;\n }\n }); //add this data on the object, to allow adding new timezones\n\n Object.defineProperty(this, 'timezones', {\n get: function get() {\n return timezones;\n },\n set: function set(obj) {\n timezones = obj;\n return obj;\n }\n }); //parse the various formats\n\n var tmp = input(this, input$1, tz);\n this.epoch = tmp.epoch;\n}; //(add instance methods to prototype)\n\n\nObject.keys(methods_1).forEach(function (k) {\n SpaceTime.prototype[k] = methods_1[k];\n}); // ¯\\_(ツ)_/¯\n\nSpaceTime.prototype.clone = function () {\n return new SpaceTime(this.epoch, this.tz, {\n silent: this.silent,\n weekStart: this._weekStart,\n today: this._today\n });\n}; //return native date object at the same epoch\n\n\nSpaceTime.prototype.toLocalDate = function () {\n return new Date(this.epoch);\n}; //append more methods\n\n\nquery(SpaceTime);\nadd(SpaceTime);\nsame(SpaceTime);\ncompare(SpaceTime);\ni18n(SpaceTime);\nvar spacetime = SpaceTime;\n\nvar whereIts = function whereIts(a, b) {\n var start = new spacetime(null);\n var end = new spacetime(null);\n start = start.time(a); //if b is undefined, use as 'within one hour'\n\n if (b) {\n end = end.time(b);\n } else {\n end = start.add(59, 'minutes');\n }\n\n var startHour = start.hour();\n var endHour = end.hour();\n var tzs = Object.keys(start.timezones).filter(function (tz) {\n if (tz.indexOf('/') === -1) {\n return false;\n }\n\n var m = new spacetime(null, tz);\n var hour = m.hour(); //do 'calendar-compare' not real-time-compare\n\n if (hour >= startHour && hour <= endHour) {\n //test minutes too, if applicable\n if (hour === startHour && m.minute() < start.minute()) {\n return false;\n }\n\n if (hour === endHour && m.minute() > end.minute()) {\n return false;\n }\n\n return true;\n }\n\n return false;\n });\n return tzs;\n};\n\nvar whereIts_1 = whereIts;\n\nvar _version = '6.14.0';\n\nvar main = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n}; // set all properties of a given 'today' object\n\n\nvar setToday = function setToday(s) {\n var today = s._today || {};\n Object.keys(today).forEach(function (k) {\n s = s[k](today[k]);\n });\n return s;\n}; //some helper functions on the main method\n\n\nmain.now = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s;\n};\n\nmain.today = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.startOf('day');\n};\n\nmain.tomorrow = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.add(1, 'day').startOf('day');\n};\n\nmain.yesterday = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.subtract(1, 'day').startOf('day');\n};\n\nmain.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n};\n\nmain.timezones = function () {\n var s = new spacetime();\n return s.timezones;\n};\n\nmain.max = function (tz, options) {\n var s = new spacetime(null, tz, options);\n s.epoch = 8640000000000000;\n return s;\n};\n\nmain.min = function (tz, options) {\n var s = new spacetime(null, tz, options);\n s.epoch = -8640000000000000;\n return s;\n}; //find tz by time\n\n\nmain.whereIts = whereIts_1;\nmain.version = _version; //aliases:\n\nmain.plugin = main.extend;\nvar src = main;\n\nexport default src;\n","const spacetime = require('spacetime')\n\nconst parseSentence = function (doc) {\n let s = doc.sentence()\n if (!s) {\n return null\n }\n let txt = s.text() || ''\n let paren = txt.match(/\\(.*\\)/)\n if (!paren || !paren[0]) {\n return null\n }\n txt = paren[0] || ''\n txt = txt.trim()\n txt = txt.replace(/^\\(/, '')\n txt = txt.replace(/\\)$/, '')\n let split = txt.split(/ – /)\n split = split.filter((str) => str)\n // got birth/death info\n if (split[0] && split[1] && split.length === 2) {\n return {\n birth: split[0],\n death: split[1],\n }\n }\n // try for just birth date in parentheses\n if (split[0]) {\n let str = split[0].replace(/^(born|ne) (c\\.)?/, '')\n let d = spacetime(str)\n if (d.isValid()) {\n return {\n birth: str,\n }\n }\n }\n return null\n}\nmodule.exports = parseSentence\n","const byCategory = function (doc) {\n let cats = doc.categories()\n for (let i = 0; i < cats.length; i += 1) {\n let m = cats[i].match(/([0-9]{4}) births/)\n if (m && m[1]) {\n let year = parseInt(m[1], 10)\n if (year && year > 1000) {\n return year\n }\n }\n }\n return null\n}\nmodule.exports = byCategory\n","const spacetime = require('spacetime')\n\nconst parseDate = function (str) {\n if (!str) {\n return null\n }\n // remove parentheses\n str = str.replace(/\\(.*\\)/, '')\n str = str.trim()\n // just the year\n if (str.match(/^[0-9]{4}$/)) {\n return {\n year: parseInt(str, 10),\n }\n }\n // parse the full date\n let s = spacetime(str)\n return {\n year: s.year(),\n month: s.month(),\n date: s.date(),\n }\n}\nmodule.exports = parseDate\n","const byInfobox = require('../getInfobox')\nconst bySentence = require('../getSentence')\nconst byCategory = require('./byCategory')\nconst parseDate = require('../parseDate')\n\nconst birthDate = function (doc) {\n let res = byInfobox(doc, 'birth_date')\n if (res) {\n return parseDate(res)\n }\n\n // try parentheses in first sentence\n res = bySentence(doc)\n if (res && res.birth) {\n return parseDate(res.birth)\n }\n\n // try to get year from 'Category:1955 births'\n let year = byCategory(doc)\n if (year) {\n return { year: year }\n }\n return null\n}\nmodule.exports = birthDate\n","const byInfobox = require('../getInfobox')\n\nconst birthPlace = function (doc) {\n let res = byInfobox(doc, 'birth_place')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = birthPlace\n","const aliveCats = {\n 'Living people': true,\n 'Year of birth missing (living people)': true,\n 'Date of birth missing (living people)': true,\n 'Place of birth missing (living people)': true,\n 'Active politicians': true,\n 'Biography articles of living people': true,\n}\n\nconst didDie = {\n 'Dead people': true,\n 'Date of death missing': true,\n 'Date of death unknown': true,\n 'Place of death missing': true,\n 'Place of death unknown': true,\n 'Year of death missing': true,\n 'Year of death unknown': true,\n 'Year of death uncertain': true,\n 'Recent deaths': true,\n 'People declared dead in absentia': true,\n 'Politicians elected posthumously': true,\n 'People who died in office': true,\n 'Assassinated heads of state‎ ': true,\n 'Assassinated heads of government': true,\n 'Assassinated mayors': true,\n 'People who died in Nazi concentration camps': true,\n 'People executed in Nazi concentration camps': true,\n 'Politicians who died in Nazi concentration camps': true,\n 'People who have received posthumous pardons': true,\n 'People lost at sea‎': true,\n 'Deaths due to shipwreck': true,\n 'People who died at sea': true,\n 'Unsolved deaths‎': true,\n 'Deaths by horse-riding accident‎': true,\n 'Deaths from falls‎': true,\n 'Deaths by poisoning‎‎': true,\n 'Deaths from cerebrovascular disease‎': true,\n 'Deaths from asphyxiation‎': true,\n 'Deaths from sepsis‎': true,\n 'Deaths from pneumonia‎': true,\n 'Deaths from dysentery‎‎': true,\n 'Deaths by drowning‎': true,\n}\n\nconst byCat = function (doc) {\n let cats = doc.categories()\n\n //confirmed alive categories\n if (cats.find((c) => aliveCats.hasOwnProperty(c))) {\n return true\n }\n //confirmed death categories\n if (cats.find((c) => didDie.hasOwnProperty(c))) {\n return false\n }\n return null\n}\nmodule.exports = byCat\n","// blp = biography of living persons\n\n// {{WikiProject Biography}} (with living=yes parameter)\n// {{WikiProject banner shell}} (with blp=y parameter)\n\nconst isAlive = {\n blp: true,\n 'blp unsourced': true,\n 'blp unsourced section': true,\n 'blp primary sources': true,\n 'blp self-published': true,\n 'blp sources': true,\n 'blp sources section': true,\n 'blp imdb-only refimprove': true,\n 'blp imdb refimprove': true,\n 'blp no footnotes': true,\n 'blp more footnotes': true,\n 'blp one source': true,\n 'active politician': true,\n activepol: true,\n 'current person': true,\n}\n\nconst isDead = {\n 'recent death': true,\n 'recent death presumed': true,\n 'recent death confirmed': true,\n obituary: true,\n elegy: true,\n eulogy: true,\n panegyric: true,\n memorial: true,\n}\nconst byTemplate = function (doc) {\n let templates = doc.templates().map((tmpl) => tmpl.json())\n for (let i = 0; i < templates.length; i++) {\n let title = templates[i].template || ''\n title = title.toLowerCase().trim()\n if (isAlive.hasOwnProperty(title)) {\n return true\n }\n if (isDead.hasOwnProperty(title)) {\n return false\n }\n }\n // `{{WikiProject Biography|living=yes|activepol=yes}}`\n let bio = doc.template('WikiProject Biography')\n if (bio) {\n bio = bio.json()\n //living blp BLP\n if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') {\n return true\n }\n if (bio.living === 'no' || bio.blp === 'no' || bio.BLP === 'no') {\n return false\n }\n }\n return null\n}\nmodule.exports = byTemplate\n","const byCat = require('./byCategory')\nconst byTemplate = require('./byTemplate')\n\n// maximum age of a person\nlet d = new Date()\nconst minYear = d.getFullYear() - 105\n\nconst isAlive = function (doc) {\n // if we have a death date\n let death = doc.deathDate()\n if (death) {\n return false\n }\n // if we have a death place\n let deathPlace = doc.deathPlace()\n if (deathPlace) {\n return false\n }\n // does it have a good category?\n let fromCat = byCat(doc)\n if (fromCat === true || fromCat === false) {\n return fromCat\n }\n // does it have a good template?\n let fromTemplate = byTemplate(doc)\n if (fromTemplate === true || fromTemplate === false) {\n return fromTemplate\n }\n // were they born in 1900?\n let birth = doc.birthDate()\n if (birth && birth.year && birth.year < minYear) {\n return true\n }\n return null\n}\nmodule.exports = isAlive\n","const byCategory = function (doc) {\n let cats = doc.categories()\n for (let i = 0; i < cats.length; i += 1) {\n let m = cats[i].match(/([0-9]{4}) deaths/)\n if (m && m[1]) {\n let year = parseInt(m[1], 10)\n if (year && year > 1000) {\n return year\n }\n }\n }\n return null\n}\nmodule.exports = byCategory\n","const byInfobox = require('../getInfobox')\nconst bySentence = require('../getSentence')\nconst byCategory = require('./byCategory')\nconst parseDate = require('../parseDate')\n\nconst deathDate = function (doc) {\n let res = byInfobox(doc, 'death_date')\n if (res) {\n return parseDate(res)\n }\n // try parentheses in first sentence\n res = bySentence(doc)\n if (res && res.death) {\n return parseDate(res.death)\n }\n\n // try to get year from 'Category:1955 deaths'\n let year = byCategory(doc)\n if (year) {\n return { year: year }\n }\n return null\n}\nmodule.exports = deathDate\n","const byInfobox = require('../getInfobox')\n\nconst deathPlace = function (doc) {\n let res = byInfobox(doc, 'death_place')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = deathPlace\n","const byInfobox = require('../getInfobox')\n\nconst getNationality = function (doc) {\n let res = byInfobox(doc, 'nationality')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = getNationality\n","const birthDate = require('./birthDate')\nconst birthPlace = require('./birthPlace')\nconst isAlive = require('./isAlive')\nconst deathDate = require('./deathDate')\nconst deathPlace = require('./deathPlace')\nconst nationality = require('./nationality')\n\nconst addMethod = function (models) {\n models.Doc.prototype.birthDate = function () {\n return birthDate(this)\n }\n models.Doc.prototype.birthPlace = function () {\n return birthPlace(this)\n }\n models.Doc.prototype.isAlive = function () {\n return isAlive(this)\n }\n models.Doc.prototype.deathDate = function () {\n return deathDate(this)\n }\n models.Doc.prototype.deathPlace = function () {\n return deathPlace(this)\n }\n models.Doc.prototype.nationality = function () {\n return nationality(this)\n }\n}\nmodule.exports = addMethod\n"],"names":["actor","adult_biography","afl_biography","alpine_ski_racer","archbishop","architect","artist","athlete","baseball_biography","basketball_biography","boxer","canadianmp","cfl_player","chef","chess_player","christian_leader","college_coach","college_football_player","comedian","comics_creator","cricketer","criminal","cyclist","economist","engineer","fashion_designer","field_hockey_player","figure_skater","football_biography","gaa_player","golfer","governor","gridiron_football_person","gymnast","handball_biography","hindu_leader","horseracing_personality","ice_hockey_player","indian_politician","judge","lacrosse_player","martial_artist","mass_murderer","medical_person","military_person","minister","mlb_player","model","monarch","mp","nascar_driver","nba_biography","nfl_biography","nfl_player","officeholder","person","philosopher","police_officer","politician","presenter","president","professional_wrestler","racing_driver","religious_biography","roman_emperor","royalty","rugby_biography","rugby_league_biography","saint","scholar","scientist","skier","sportsperson","squash_player","state_representative","state_senator","swimmer","tennis_biography","volleyball_biography","volleyball_player","wrc_driver","writer","bishop","congressman","astronaut","senator","byInfobox","doc","prop","infoboxes","i","length","inf","type","toLowerCase","trim","mapping","hasOwnProperty","s","get","text","_typeof","obj","Symbol","iterator","constructor","prototype","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","Object","_arr","_n","_d","_e","undefined","_i","_s","next","done","push","value","err","o","minLen","_arrayLikeToArray","n","toString","call","slice","name","from","test","len","arr2","TypeError","MSEC_IN_HOUR","toUtc","dstChange","offset","year","_dstChange$split","split","_dstChange$split2","month","rest","_rest$split","_rest$split2","day","hour","Date","UTC","inSummerTime","epoch","start","end","summerOffset","winterOffset","getUTCFullYear","startUtc","endUtc","summerTime","quickOffset","zones","timezones","tz","console","warn","dst","jul","dec","hem","inSummer","quick","_build","_build$1","freeze","__proto__","_prefixes","createCommonjsModule","fn","module","exports","getCjsExportFromNamespace","data","all","keys","forEach","k","Number","names","str","replace","before","num","unpack","fallbackTZ","safeIntl","Intl","DateTimeFormat","format","resolvedOptions","timezone","timeZone","guessTz","guessTz_1","isOffset","isNumber","utcOffset","gmtOffset","toIana","parseOffset$1","parseOffset","m","match","parseOffset_1$1","local","cities","reduce","h","city","normalize","lookupTz","error","id","Error","find","millisecond","second","minute","date","week","milliseconds","walk","unit","previous","current","d","startUnit","original","diff","Math","abs","halfStep","units$3","valid","walkTo","getMonth","getFullYear","seconds","wants","old","clone","parseInt","silent","walk_1","shortMonths","longMonths","buildMapping","sep","months$1","short","long","set","i18n","parseFloat","parseOffset_1","parseTime","arguments","startOf","concat","substring","ampm","_h","parseTime_1","monthLengths","monthLengths_1","fns","isLeapYear","isDate","isNaN","valueOf","input","isObject","isBoolean","zeroPad","pad","join","titleCase","toUpperCase","substr","ordinal","j","toCardinal","String","getEpoch","tmp","getTime","beADate","formatTimezone","delimiter","sign","absOffset","hours","minutes","isLeapYear$2","hasDate","max","hasDate_1","months","parseYear","today","strFmt","reg","parse","givenTz","options","british","_today","quarter","season","getDate","strParse","getNow","now","dates","tonight","tomorrow","add","yesterday","subtract","christmas","newYears","namedDates","minimumEpoch","defaults","handleArray","order","handleObject","assign","parseInput","res","isValid","_res","shortDays","longDays","days","aliases","mo","tu","we","th","fr","sa","su","tues","weds","wedn","thur","thurs","titleCaseEnabled","caseFormat","useTitleCase","isoOffset","_offset","applyCaseFormat","dayName","dayShort","dayNumber","dayOrdinal","dayPad","dateOrdinal","datePad","monthName","monthShort","monthNumber","monthOrdinal","monthPad","isoMonth","yearShort","isoYear","isNegative","time","time24","hour24","hour12","hourPad","hour24Pad","minutePad","secondPad","era","json","numeric","numericUs","numericUk","mmDd","iso","h24","ms","isoShort","isoUtc","toISOString","nice","nice24","niceYear","niceDay","niceFull","niceFull24","mdy","dmy","ymd","printFormat","out","indexOf","sections","_","fmt","_out","format_1","G","GG","GGG","GGGG","y","yy","yyy","yyyy","yyyyy","Q","QQ","QQQ","QQQQ","M","MM","MMM","MMMM","w","ww","dd","D","dayOfYear","DD","DDD","E","EE","EEE","EEEE","EEEEE","e","ee","eee","eeee","eeeee","a","aa","aaa","aaaa","h12","hh","H","HH","mm","ss","A","z","zz","zzz","zzzz","Z","ZZ","ZZZ","ZZZZ","addAlias","_char","to","toName","escapeChars","filter","ch","combineRepeated","c","map","unixFmt","txt","unixFmt_1","units$2","doUnit","endOf","duration","percent","toFixed","progress","progress_1","nearest","prog","nearest_1","climb","b","isBefore","isAfter","diffOne","one","fastYear","years","diff$1","msDiff","weeks","waterfall","reverseDiff","main$1","main","reversed","qualifiers","almost","over","getDiff","later","earlier","isSame","u","pluralize","since","isNow","every","rounded","qualified","precise","englishValues","units","englishValue","nextUnit","nextValue","splice","since_1","seasons","north","south","quarters","units$1","quarterhour","_weekStart","q","hemisphere","decade","century","startOf_1","isDay","result","every_1","parseDst","epochShift","found","hasDst","Boolean","default_offset","change","back","summer","winter","isDST","timezone_1","methods$4","input$1","hasDST","leapYear","last","goto","isAwake","isAsleep","log","logYear","_this","debug","fromNow","weekStart","inDST","round","each","methods_1","isLeapYear$1","validate","order$1","confirm","want","shift","sec","methods$3","getMilliseconds","getSeconds","getMinutes","getHours","hourFloat","_minute","_hour","which","dayTime","times","morning","breakfast","noon","lunch","afternoon","evening","dinner","night","midnight","_01Time","methods$2","getDay","_02Date","clearMinutes","methods$1","sum","setDate","setFullYear","setHours","setMinutes","setMonth","toAdd","minus","thisOne","skipWeeks","_month","floor","millenium","_03Year","methods","addMethods$4","addMethods","Space","query","getMonthLength","rollMonth","_years","rollDaysDown","rollDaysUp","_model","daysBack","keep","dstAwareUnits","keepDate","addMethods$3","SpaceTime","_sum","remainder","wantYear","haveYear","plus","print","addMethods$2","tzAware","same","addMethods$1","isEqual","isBetween","isInclusive","startEpoch","endEpoch","compare","defineProperty","bias","getTimezoneOffset","toLocalDate","spacetime","whereIts","startHour","endHour","tzs","whereIts_1","_version","setToday","extend","min","version","plugin","src","parseSentence","sentence","paren","birth","death","byCategory","cats","categories","parseDate","birthDate","bySentence","birthPlace","aliveCats","didDie","byCat","isAlive","blp","activepol","isDead","obituary","elegy","eulogy","panegyric","memorial","byTemplate","templates","tmpl","title","template","bio","living","BLP","minYear","deathDate","deathPlace","fromCat","fromTemplate","getNationality","addMethod","models","Doc","nationality"],"mappings":";;;;;;;EAAA;EACA;EACA,cAAc,GAAG;EACfA,EAAAA,KAAK,EAAE,IADQ;EAEfC,EAAAA,eAAe,EAAE,IAFF;EAGfC,EAAAA,aAAa,EAAE,IAHA;EAIfC,EAAAA,gBAAgB,EAAE,IAJH;EAKfC,EAAAA,UAAU,EAAE,IALG;EAMfC,EAAAA,SAAS,EAAE,IANI;EAOfC,EAAAA,MAAM,EAAE,IAPO;EAQfC,EAAAA,OAAO,EAAE,IARM;EASfC,EAAAA,kBAAkB,EAAE,IATL;EAUfC,EAAAA,oBAAoB,EAAE,IAVP;EAWfC,EAAAA,KAAK,EAAE,IAXQ;EAYfC,EAAAA,UAAU,EAAE,IAZG;EAafC,EAAAA,UAAU,EAAE,IAbG;EAcfC,EAAAA,IAAI,EAAE,IAdS;EAefC,EAAAA,YAAY,EAAE,IAfC;EAgBfC,EAAAA,gBAAgB,EAAE,IAhBH;EAiBfC,EAAAA,aAAa,EAAE,IAjBA;EAkBfC,EAAAA,uBAAuB,EAAE,IAlBV;EAmBfC,EAAAA,QAAQ,EAAE,IAnBK;EAoBfC,EAAAA,cAAc,EAAE,IApBD;EAqBfC,EAAAA,SAAS,EAAE,IArBI;EAsBfC,EAAAA,QAAQ,EAAE,IAtBK;EAuBfC,EAAAA,OAAO,EAAE,IAvBM;EAwBfC,EAAAA,SAAS,EAAE,IAxBI;EAyBfC,EAAAA,QAAQ,EAAE,IAzBK;EA0BfC,EAAAA,gBAAgB,EAAE,IA1BH;EA2BfC,EAAAA,mBAAmB,EAAE,IA3BN;EA4BfC,EAAAA,aAAa,EAAE,IA5BA;EA6BfC,EAAAA,kBAAkB,EAAE,IA7BL;EA8BfC,EAAAA,UAAU,EAAE,IA9BG;EA+BfC,EAAAA,MAAM,EAAE,IA/BO;EAgCfC,EAAAA,QAAQ,EAAE,IAhCK;EAiCfC,EAAAA,wBAAwB,EAAE,IAjCX;EAkCfC,EAAAA,OAAO,EAAE,IAlCM;EAmCfC,EAAAA,kBAAkB,EAAE,IAnCL;EAoCfC,EAAAA,YAAY,EAAE,IApCC;EAqCfC,EAAAA,uBAAuB,EAAE,IArCV;EAsCfC,EAAAA,iBAAiB,EAAE,IAtCJ;EAuCfC,EAAAA,iBAAiB,EAAE,IAvCJ;EAwCfC,EAAAA,KAAK,EAAE,IAxCQ;EAyCfC,EAAAA,eAAe,EAAE,IAzCF;EA0CfC,EAAAA,cAAc,EAAE,IA1CD;EA2CfC,EAAAA,aAAa,EAAE,IA3CA;EA4CfC,EAAAA,cAAc,EAAE,IA5CD;EA6CfC,EAAAA,eAAe,EAAE,IA7CF;EA8CfC,EAAAA,QAAQ,EAAE,IA9CK;EA+CfC,EAAAA,UAAU,EAAE,IA/CG;EAgDfC,EAAAA,KAAK,EAAE,IAhDQ;EAiDfC,EAAAA,OAAO,EAAE,IAjDM;EAkDfC,EAAAA,EAAE,EAAE,IAlDW;EAmDfC,EAAAA,aAAa,EAAE,IAnDA;EAoDfC,EAAAA,aAAa,EAAE,IApDA;EAqDfC,EAAAA,aAAa,EAAE,IArDA;EAsDfC,EAAAA,UAAU,EAAE,IAtDG;EAuDfC,EAAAA,YAAY,EAAE,IAvDC;EAwDfC,EAAAA,MAAM,EAAE,IAxDO;EAyDfC,EAAAA,WAAW,EAAE,IAzDE;EA0DfC,EAAAA,cAAc,EAAE,IA1DD;EA2DfC,EAAAA,UAAU,EAAE,IA3DG;EA4Df,0BAAwB,IA5DT;EA6DfC,EAAAA,SAAS,EAAE,IA7DI;EA8DfC,EAAAA,SAAS,EAAE,IA9DI;EA+DfC,EAAAA,qBAAqB,EAAE,IA/DR;EAgEfC,EAAAA,aAAa,EAAE,IAhEA;EAiEfC,EAAAA,mBAAmB,EAAE,IAjEN;EAkEfC,EAAAA,aAAa,EAAE,IAlEA;EAmEfC,EAAAA,OAAO,EAAE,IAnEM;EAoEfC,EAAAA,eAAe,EAAE,IApEF;EAqEfC,EAAAA,sBAAsB,EAAE,IArET;EAsEfC,EAAAA,KAAK,EAAE,IAtEQ;EAuEfC,EAAAA,OAAO,EAAE,IAvEM;EAwEfC,EAAAA,SAAS,EAAE,IAxEI;EAyEfC,EAAAA,KAAK,EAAE,IAzEQ;EA0EfC,EAAAA,YAAY,EAAE,IA1EC;EA2EfC,EAAAA,aAAa,EAAE,IA3EA;EA4EfC,EAAAA,oBAAoB,EAAE,IA5EP;EA6EfC,EAAAA,aAAa,EAAE,IA7EA;EA8EfC,EAAAA,OAAO,EAAE,IA9EM;EA+EfC,EAAAA,gBAAgB,EAAE,IA/EH;EAgFfC,EAAAA,oBAAoB,EAAE,IAhFP;EAiFfC,EAAAA,iBAAiB,EAAE,IAjFJ;EAkFfC,EAAAA,UAAU,EAAE,IAlFG;EAmFfC,EAAAA,MAAM,EAAE,IAnFO;EAoFf,wBAAsB,IApFP;EAqFf,oBAAkB,IArFH;EAsFfC,EAAAA,MAAM,EAAE,IAtFO;EAuFf,wBAAsB,IAvFP;EAwFf,qBAAmB,IAxFJ;EAyFf,wBAAsB,IAzFP;EA0Ff,uBAAqB,IA1FN;EA2Ff,gBAAc,IA3FC;EA4Ff,sBAAoB,IA5FL;EA6FfC,EAAAA,WAAW,EAAE,IA7FE;EA8Ff,0BAAwB,IA9FT;EA+Ff,oBAAkB,IA/FH;EAgGf,2BAAyB,IAhGV;EAiGf,mBAAiB,IAjGF;EAkGf,sBAAoB,IAlGL;EAmGf,mBAAiB,IAnGF;EAoGf,mBAAiB,IApGF;EAqGf,qBAAmB,IArGJ;EAsGf,4BAA0B,IAtGX;EAuGf,oBAAkB,IAvGH;EAwGf,mBAAiB,IAxGF;EAyGf,mBAAiB,IAzGF;EA0Gf,eAAa,IA1GE;EA2Gf,8BAA4B,IA3Gb;EA4Gf,uBAAqB,IA5GN;EA6Gf,mBAAiB,IA7GF;EA8Gf,oBAAkB,IA9GH;EA+Gf,uCAAqC,IA/GtB;EAgHfC,EAAAA,SAAS,EAAE,IAhHI;EAiHfC,EAAAA,OAAO,EAAE,IAjHM;EAkHf,mBAAiB,IAlHF;EAmHf,qBAAmB,IAnHJ;EAoHf,0BAAwB,IApHT;EAqHf,mBAAiB,IArHF;EAsHf,cAAY,IAtHG;EAuHf,yBAAuB,IAvHR;EAwHf,kBAAgB,IAxHD;EAyHf,yBAAuB,IAzHR;EA0Hf,gBAAc,IA1HC;EA2Hf,yBAAuB;EA3HR,CAAjB;;ECAA,MAAMC,SAAS,GAAG,UAAUC,GAAV,EAAeC,IAAf,EAAqB;EACrC,MAAIC,SAAS,GAAGF,GAAG,CAACE,SAAJ,EAAhB;;EACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,SAAS,CAACE,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACzC,QAAIE,GAAG,GAAGH,SAAS,CAACC,CAAD,CAAnB;EACA,QAAIG,IAAI,GAAGD,GAAG,CAACC,IAAJ,EAAX;EACAA,IAAAA,IAAI,GAAGA,IAAI,CAACC,WAAL,EAAP;EACAD,IAAAA,IAAI,GAAGA,IAAI,CAACE,IAAL,EAAP;;EAEA,QAAIC,UAAO,CAACC,cAAR,CAAuBJ,IAAvB,CAAJ,EAAkC;EAChC,UAAIK,CAAC,GAAGN,GAAG,CAACO,GAAJ,CAAQX,IAAR,CAAR;;EACA,UAAIU,CAAJ,EAAO;EACL,eAAOA,CAAC,CAACE,IAAF,EAAP;EACD;EACF;EACF;;EACD,SAAO,IAAP;EACD,CAhBD;;EAiBA,cAAc,GAAGd,SAAjB;;ECnBA;EACA,SAASe,OAAT,CAAiBC,GAAjB,EAAsB;EACpB;;EAEA,MAAI,OAAOC,MAAP,KAAkB,UAAlB,IAAgC,OAAOA,MAAM,CAACC,QAAd,KAA2B,QAA/D,EAAyE;EACvEH,IAAAA,OAAO,GAAG,UAAUC,GAAV,EAAe;EACvB,aAAO,OAAOA,GAAd;EACD,KAFD;EAGD,GAJD,MAIO;EACLD,IAAAA,OAAO,GAAG,UAAUC,GAAV,EAAe;EACvB,aAAOA,GAAG,IAAI,OAAOC,MAAP,KAAkB,UAAzB,IAAuCD,GAAG,CAACG,WAAJ,KAAoBF,MAA3D,IAAqED,GAAG,KAAKC,MAAM,CAACG,SAApF,GAAgG,QAAhG,GAA2G,OAAOJ,GAAzH;EACD,KAFD;EAGD;;EAED,SAAOD,OAAO,CAACC,GAAD,CAAd;EACD;;EAED,SAASK,cAAT,CAAwBC,GAAxB,EAA6BlB,CAA7B,EAAgC;EAC9B,SAAOmB,eAAe,CAACD,GAAD,CAAf,IAAwBE,qBAAqB,CAACF,GAAD,EAAMlB,CAAN,CAA7C,IAAyDqB,2BAA2B,CAACH,GAAD,EAAMlB,CAAN,CAApF,IAAgGsB,gBAAgB,EAAvH;EACD;;EAED,SAASH,eAAT,CAAyBD,GAAzB,EAA8B;EAC5B,MAAIK,KAAK,CAACC,OAAN,CAAcN,GAAd,CAAJ,EAAwB,OAAOA,GAAP;EACzB;;EAED,SAASE,qBAAT,CAA+BF,GAA/B,EAAoClB,CAApC,EAAuC;EACrC,MAAI,OAAOa,MAAP,KAAkB,WAAlB,IAAiC,EAAEA,MAAM,CAACC,QAAP,IAAmBW,MAAM,CAACP,GAAD,CAA3B,CAArC,EAAwE;EACxE,MAAIQ,IAAI,GAAG,EAAX;EACA,MAAIC,EAAE,GAAG,IAAT;EACA,MAAIC,EAAE,GAAG,KAAT;EACA,MAAIC,EAAE,GAAGC,SAAT;;EAEA,MAAI;EACF,SAAK,IAAIC,EAAE,GAAGb,GAAG,CAACL,MAAM,CAACC,QAAR,CAAH,EAAT,EAAiCkB,EAAtC,EAA0C,EAAEL,EAAE,GAAG,CAACK,EAAE,GAAGD,EAAE,CAACE,IAAH,EAAN,EAAiBC,IAAxB,CAA1C,EAAyEP,EAAE,GAAG,IAA9E,EAAoF;EAClFD,MAAAA,IAAI,CAACS,IAAL,CAAUH,EAAE,CAACI,KAAb;;EAEA,UAAIpC,CAAC,IAAI0B,IAAI,CAACzB,MAAL,KAAgBD,CAAzB,EAA4B;EAC7B;EACF,GAND,CAME,OAAOqC,GAAP,EAAY;EACZT,IAAAA,EAAE,GAAG,IAAL;EACAC,IAAAA,EAAE,GAAGQ,GAAL;EACD,GATD,SASU;EACR,QAAI;EACF,UAAI,CAACV,EAAD,IAAOI,EAAE,CAAC,QAAD,CAAF,IAAgB,IAA3B,EAAiCA,EAAE,CAAC,QAAD,CAAF;EAClC,KAFD,SAEU;EACR,UAAIH,EAAJ,EAAQ,MAAMC,EAAN;EACT;EACF;;EAED,SAAOH,IAAP;EACD;;EAED,SAASL,2BAAT,CAAqCiB,CAArC,EAAwCC,MAAxC,EAAgD;EAC9C,MAAI,CAACD,CAAL,EAAQ;EACR,MAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B,OAAOE,iBAAiB,CAACF,CAAD,EAAIC,MAAJ,CAAxB;EAC3B,MAAIE,CAAC,GAAGhB,MAAM,CAACT,SAAP,CAAiB0B,QAAjB,CAA0BC,IAA1B,CAA+BL,CAA/B,EAAkCM,KAAlC,CAAwC,CAAxC,EAA2C,CAAC,CAA5C,CAAR;EACA,MAAIH,CAAC,KAAK,QAAN,IAAkBH,CAAC,CAACvB,WAAxB,EAAqC0B,CAAC,GAAGH,CAAC,CAACvB,WAAF,CAAc8B,IAAlB;EACrC,MAAIJ,CAAC,KAAK,KAAN,IAAeA,CAAC,KAAK,KAAzB,EAAgC,OAAOlB,KAAK,CAACuB,IAAN,CAAWR,CAAX,CAAP;EAChC,MAAIG,CAAC,KAAK,WAAN,IAAqB,2CAA2CM,IAA3C,CAAgDN,CAAhD,CAAzB,EAA6E,OAAOD,iBAAiB,CAACF,CAAD,EAAIC,MAAJ,CAAxB;EAC9E;;EAED,SAASC,iBAAT,CAA2BtB,GAA3B,EAAgC8B,GAAhC,EAAqC;EACnC,MAAIA,GAAG,IAAI,IAAP,IAAeA,GAAG,GAAG9B,GAAG,CAACjB,MAA7B,EAAqC+C,GAAG,GAAG9B,GAAG,CAACjB,MAAV;;EAErC,OAAK,IAAID,CAAC,GAAG,CAAR,EAAWiD,IAAI,GAAG,IAAI1B,KAAJ,CAAUyB,GAAV,CAAvB,EAAuChD,CAAC,GAAGgD,GAA3C,EAAgDhD,CAAC,EAAjD,EAAqDiD,IAAI,CAACjD,CAAD,CAAJ,GAAUkB,GAAG,CAAClB,CAAD,CAAb;;EAErD,SAAOiD,IAAP;EACD;;EAED,SAAS3B,gBAAT,GAA4B;EAC1B,QAAM,IAAI4B,SAAJ,CAAc,2IAAd,CAAN;EACD;;EAED,IAAIC,YAAY,GAAG,KAAK,EAAL,GAAU,IAA7B;;EAEA,IAAIC,KAAK,GAAG,SAASA,KAAT,CAAeC,SAAf,EAA0BC,MAA1B,EAAkCC,IAAlC,EAAwC;EAClD,MAAIC,gBAAgB,GAAGH,SAAS,CAACI,KAAV,CAAgB,GAAhB,CAAvB;EAAA,MACIC,iBAAiB,GAAGzC,cAAc,CAACuC,gBAAD,EAAmB,CAAnB,CADtC;EAAA,MAEIG,KAAK,GAAGD,iBAAiB,CAAC,CAAD,CAF7B;EAAA,MAGIE,IAAI,GAAGF,iBAAiB,CAAC,CAAD,CAH5B;;EAKA,MAAIG,WAAW,GAAGD,IAAI,CAACH,KAAL,CAAW,GAAX,CAAlB;EAAA,MACIK,YAAY,GAAG7C,cAAc,CAAC4C,WAAD,EAAc,CAAd,CADjC;EAAA,MAEIE,GAAG,GAAGD,YAAY,CAAC,CAAD,CAFtB;EAAA,MAGIE,IAAI,GAAGF,YAAY,CAAC,CAAD,CAHvB;;EAKA,SAAOG,IAAI,CAACC,GAAL,CAASX,IAAT,EAAeI,KAAK,GAAG,CAAvB,EAA0BI,GAA1B,EAA+BC,IAA/B,IAAuCV,MAAM,GAAGH,YAAvD;EACD,CAZD;;;EAeA,IAAIgB,YAAY,GAAG,SAASA,YAAT,CAAsBC,KAAtB,EAA6BC,KAA7B,EAAoCC,GAApC,EAAyCC,YAAzC,EAAuDC,YAAvD,EAAqE;EACtF,MAAIjB,IAAI,GAAG,IAAIU,IAAJ,CAASG,KAAT,EAAgBK,cAAhB,EAAX;EACA,MAAIC,QAAQ,GAAGtB,KAAK,CAACiB,KAAD,EAAQG,YAAR,EAAsBjB,IAAtB,CAApB;EACA,MAAIoB,MAAM,GAAGvB,KAAK,CAACkB,GAAD,EAAMC,YAAN,EAAoBhB,IAApB,CAAlB,CAHsF;;EAKtF,SAAOa,KAAK,IAAIM,QAAT,IAAqBN,KAAK,GAAGO,MAApC;EACD,CAND;;EAQA,IAAIC,UAAU,GAAGT,YAAjB;;EAIA,IAAIU,WAAW,GAAG,SAASA,WAAT,CAAqBrE,CAArB,EAAwB;EACxC,MAAIsE,KAAK,GAAGtE,CAAC,CAACuE,SAAd;EACA,MAAInE,GAAG,GAAGkE,KAAK,CAACtE,CAAC,CAACwE,EAAH,CAAf;;EAEA,MAAIpE,GAAG,KAAKkB,SAAZ,EAAuB;EACrBmD,IAAAA,OAAO,CAACC,IAAR,CAAa,qCAAqC1E,CAAC,CAACwE,EAApD;EACA,WAAO,CAAP;EACD;;EAED,MAAIpE,GAAG,CAACuE,GAAJ,KAAYrD,SAAhB,EAA2B;EACzB,WAAOlB,GAAG,CAAC0C,MAAX;EACD,GAXuC;;;EAcxC,MAAI8B,GAAG,GAAGxE,GAAG,CAAC0C,MAAd;EACA,MAAI+B,GAAG,GAAGzE,GAAG,CAAC0C,MAAJ,GAAa,CAAvB,CAfwC;;EAiBxC,MAAI1C,GAAG,CAAC0E,GAAJ,KAAY,GAAhB,EAAqB;EACnBD,IAAAA,GAAG,GAAGD,GAAG,GAAG,CAAZ;EACD;;EAED,MAAI3B,KAAK,GAAG7C,GAAG,CAACuE,GAAJ,CAAQ1B,KAAR,CAAc,IAAd,CAAZ;EACA,MAAI8B,QAAQ,GAAGX,UAAU,CAACpE,CAAC,CAAC4D,KAAH,EAAUX,KAAK,CAAC,CAAD,CAAf,EAAoBA,KAAK,CAAC,CAAD,CAAzB,EAA8B2B,GAA9B,EAAmCC,GAAnC,CAAzB;;EAEA,MAAIE,QAAQ,KAAK,IAAjB,EAAuB;EACrB,WAAOH,GAAP;EACD;;EAED,SAAOC,GAAP;EACD,CA7BD;;EA+BA,IAAIG,KAAK,GAAGX,WAAZ;EAEA,IAAIY,MAAM,GAAG;EACZ,SAAO,mBADK;EAEZ,SAAO,yDAFK;EAGZ,8BAA4B,+CAHhB;EAIZ,WAAS,kBAJG;EAKZ,4BAA0B,UALd;EAMZ,SAAO,sEANK;EAOZ,SAAO,gKAPK;EAQZ,YAAU,SARE;EASZ,SAAO,gCATK;EAUZ,SAAO,2IAVK;EAWZ,SAAO,WAXK;EAYZ,SAAO,iHAZK;EAaZ,WAAS,4BAbG;EAcZ,SAAO,uBAdK;EAeZ,SAAO,uIAfK;EAgBZ,YAAU,wBAhBE;EAiBZ,WAAS,gCAjBG;EAkBZ,SAAO,WAlBK;EAmBZ,SAAO,4HAnBK;EAoBZ,8BAA4B,UApBhB;EAqBZ,WAAS,SArBG;EAsBZ,SAAO,yBAtBK;EAuBZ,4BAA0B,+IAvBd;EAwBZ,4BAA0B,uBAxBd;EAyBZ,4BAA0B,UAzBd;EA0BZ,4BAA0B,iBA1Bd;EA2BZ,4BAA0B,wBA3Bd;EA4BZ,4BAA0B,SA5Bd;EA6BZ,4BAA0B,YA7Bd;EA8BZ,SAAO,uOA9BK;EA+BZ,4BAA0B,UA/Bd;EAgCZ,SAAO,sFAhCK;EAiCZ,4BAA0B,oWAjCd;EAkCZ,SAAO,4EAlCK;EAmCZ,SAAO,8CAnCK;EAoCZ,4BAA0B,yBApCd;EAqCZ,4BAA0B,4GArCd;EAsCZ,SAAO,oGAtCK;EAuCZ,UAAQ,eAvCI;EAwCZ,6BAA2B,SAxCf;EAyCZ,6BAA2B,cAzCf;EA0CZ,UAAQ,yBA1CI;EA2CZ,6BAA2B,sCA3Cf;EA4CZ,6BAA2B,SA5Cf;EA6CZ,UAAQ,8GA7CI;EA8CZ,gCAA8B,YA9ClB;EA+CZ,6BAA2B,cA/Cf;EAgDZ,UAAQ,iBAhDI;EAiDZ,UAAQ,uFAjDI;EAkDZ,+BAA6B,YAlDjB;EAmDZ,6BAA2B,qFAnDf;EAoDZ,UAAQ,sEApDI;EAqDZ,UAAQ,8EArDI;EAsDZ,+BAA6B,mBAtDjB;EAuDZ,4BAA0B,yBAvDd;EAwDZ,SAAO,sQAxDK;EAyDZ,6BAA2B,2BAzDf;EA0DZ,UAAQ,YA1DI;EA2DZ,YAAU,cA3DE;EA4DZ,6BAA2B,sEA5Df;EA6DZ,UAAQ,aA7DI;EA8DZ,6BAA2B,gHA9Df;EA+DZ,6BAA2B,+BA/Df;EAgEZ,UAAQ,0EAhEI;EAiEZ,6BAA2B,0BAjEf;EAkEZ,6BAA2B,mCAlEf;EAmEZ,6BAA2B,gHAnEf;EAoEZ,UAAQ,kJApEI;EAqEZ,UAAQ,yCArEI;EAsEZ,6BAA2B,gEAtEf;EAuEZ,6BAA2B,+OAvEf;EAwEZ,6BAA2B,gBAxEf;EAyEZ,UAAQ,iGAzEI;EA0EZ,6BAA2B,WA1Ef;EA2EZ,6BAA2B,0BA3Ef;EA4EZ,6BAA2B,YA5Ef;EA6EZ,6BAA2B,yBA7Ef;EA8EZ,UAAQ,0BA9EI;EA+EZ,6BAA2B,4XA/Ef;EAgFZ,6BAA2B,UAhFf;EAiFZ,6BAA2B,sBAjFf;EAkFZ,UAAQ,kVAlFI;EAmFZ,UAAQ,obAnFI;EAoFZ,6BAA2B,0EApFf;EAqFZ,UAAQ,iFArFI;EAsFZ,6BAA2B,kBAtFf;EAuFZ,6BAA2B,YAvFf;EAwFZ,UAAQ,uCAxFI;EAyFZ,+BAA6B,2BAzFjB;EA0FZ,UAAQ,cA1FI;EA2FZ,WAAS,kDA3FG;EA4FZ,WAAS;EA5FG,CAAb;;EA+FA,IAAIC,QAAQ,gBAAgBjE,MAAM,CAACkE,MAAP,CAAc;EACxCC,EAAAA,SAAS,EAAE,IAD6B;EAExC,aAAWH;EAF6B,CAAd,CAA5B;;;EAMA,IAAII,SAAS,GAAG,CAAC,QAAD,EAAW,SAAX,EAAsB,MAAtB,EAA8B,UAA9B,EAA0C,WAA1C,EAAuD,QAAvD,EAAiE,QAAjE,EAA2E,OAA3E,EAAoF,QAApF,EAA8F,QAA9F,EAAwG,QAAxG,EAAkH,SAAlH,EAA6H,YAA7H,EAA2I,KAA3I,CAAhB;;EAEA,SAASC,oBAAT,CAA8BC,EAA9B,EAAkCC,MAAlC,EAA0C;EACzC,SAAOA,MAAM,GAAG;EAAEC,IAAAA,OAAO,EAAE;EAAX,GAAT,EAA0BF,EAAE,CAACC,MAAD,EAASA,MAAM,CAACC,OAAhB,CAA5B,EAAsDD,MAAM,CAACC,OAApE;EACA;;EAED,SAASC,2BAAT,CAAoCzD,CAApC,EAAuC;EACtC,SAAOA,CAAC,IAAIA,CAAC,CAAC,SAAD,CAAN,IAAqBA,CAA5B;EACA;;EAED,IAAI0D,IAAI,GAAGD,2BAAyB,CAACR,QAAD,CAApC;EAEA,IAAIU,GAAG,GAAG,EAAV;EACA3E,MAAM,CAAC4E,IAAP,CAAYF,IAAZ,EAAkBG,OAAlB,CAA0B,UAAUC,CAAV,EAAa;EACrC,MAAI9C,KAAK,GAAG8C,CAAC,CAAC9C,KAAF,CAAQ,GAAR,CAAZ;EACA,MAAI7C,GAAG,GAAG;EACR0C,IAAAA,MAAM,EAAEkD,MAAM,CAAC/C,KAAK,CAAC,CAAD,CAAN,CADN;EAER6B,IAAAA,GAAG,EAAE7B,KAAK,CAAC,CAAD;EAFF,GAAV;;EAKA,MAAIA,KAAK,CAAC,CAAD,CAAT,EAAc;EACZ7C,IAAAA,GAAG,CAACuE,GAAJ,GAAU1B,KAAK,CAAC,CAAD,CAAf;EACD;;EAED,MAAIgD,KAAK,GAAGN,IAAI,CAACI,CAAD,CAAJ,CAAQ9C,KAAR,CAAc,GAAd,CAAZ;EACAgD,EAAAA,KAAK,CAACH,OAAN,CAAc,UAAUI,GAAV,EAAe;EAC3BA,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,aAAZ,EAA2B,UAAUC,MAAV,EAAkBC,GAAlB,EAAuB;EACtDA,MAAAA,GAAG,GAAGL,MAAM,CAACK,GAAD,CAAZ;EACA,aAAOhB,SAAS,CAACgB,GAAD,CAAT,GAAiB,GAAxB;EACD,KAHK,CAAN;EAIAT,IAAAA,GAAG,CAACM,GAAD,CAAH,GAAW9F,GAAX;EACD,GAND;EAOD,CAnBD;EAoBAwF,GAAG,CAAC,KAAD,CAAH,GAAa;EACX9C,EAAAA,MAAM,EAAE,CADG;EAEXgC,EAAAA,GAAG,EAAE,GAFM;;EAAA,CAAb;;EAMA,KAAK,IAAItF,CAAC,GAAG,CAAC,EAAd,EAAkBA,CAAC,IAAI,EAAvB,EAA2BA,CAAC,IAAI,GAAhC,EAAqC;EACnC,MAAI6G,GAAG,GAAG7G,CAAV;;EAEA,MAAI6G,GAAG,GAAG,CAAV,EAAa;EACXA,IAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,MAAIhE,IAAI,GAAG,YAAYgE,GAAvB;EACAT,EAAAA,GAAG,CAACvD,IAAD,CAAH,GAAY;EACVS,IAAAA,MAAM,EAAEtD,CAAC,GAAG,CAAC,CADH;EAEV;EACAsF,IAAAA,GAAG,EAAE,GAHK;;EAAA,GAAZ;EAMAzC,EAAAA,IAAI,GAAG,YAAYgE,GAAnB,CAdmC;;EAgBnCT,EAAAA,GAAG,CAACvD,IAAD,CAAH,GAAY;EACVS,IAAAA,MAAM,EAAEtD,CAAC,GAAG,CAAC,CADH;EAEVsF,IAAAA,GAAG,EAAE;EAFK,GAAZ;EAID;;EAED,IAAIwB,MAAM,GAAGV,GAAb;EAGA;EACA;;EACA,IAAIW,UAAU,GAAG,KAAjB;EACA;;EAEA,IAAIC,QAAQ,GAAG,SAASA,QAAT,GAAoB;EACjC,MAAI,OAAOC,IAAP,KAAgB,WAAhB,IAA+B,OAAOA,IAAI,CAACC,cAAZ,KAA+B,WAAlE,EAA+E;EAC7E,WAAO,IAAP;EACD;;EAED,MAAIC,MAAM,GAAGF,IAAI,CAACC,cAAL,EAAb;;EAEA,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACC,eAAd,KAAkC,WAAvE,EAAoF;EAClF,WAAO,IAAP;EACD;;EAED,MAAIC,QAAQ,GAAGF,MAAM,CAACC,eAAP,GAAyBE,QAAxC;;EAEA,MAAI,CAACD,QAAL,EAAe;EACb,WAAO,IAAP;EACD;;EAED,SAAOA,QAAQ,CAACjH,WAAT,EAAP;EACD,CAlBD;;EAoBA,IAAImH,OAAO,GAAG,SAASA,OAAT,GAAmB;EAC/B,MAAIF,QAAQ,GAAGL,QAAQ,EAAvB;;EAEA,MAAIK,QAAQ,KAAK,IAAjB,EAAuB;EACrB,WAAON,UAAP;EACD;;EAED,SAAOM,QAAP;EACD,CARD;;;EAWA,IAAIG,SAAS,GAAGD,OAAhB;EAEA,IAAIE,QAAQ,GAAG,oBAAf;EACA,IAAIC,QAAQ,GAAG,aAAf;EACA,IAAIC,SAAS,GAAG,oBAAhB;EACA,IAAIC,SAAS,GAAG,oBAAhB;;EAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBhB,GAAhB,EAAqB;EAChCA,EAAAA,GAAG,GAAGL,MAAM,CAACK,GAAD,CAAZ;;EAEA,MAAIA,GAAG,IAAI,CAAC,EAAR,IAAcA,GAAG,IAAI,EAAzB,EAA6B;EAC3BA,IAAAA,GAAG,GAAGA,GAAG,GAAG,CAAC,CAAb,CAD2B;;EAG3BA,IAAAA,GAAG,GAAG,CAACA,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAjB,IAAuBA,GAA7B,CAH2B;;EAK3B,WAAO,YAAYA,GAAnB;EACD;;EAED,SAAO,IAAP;EACD,CAZD;;EAcA,IAAIiB,aAAa,GAAG,SAASC,WAAT,CAAqB/C,EAArB,EAAyB;EAC3C;EACA,MAAIgD,CAAC,GAAGhD,EAAE,CAACiD,KAAH,CAASR,QAAT,CAAR;;EAEA,MAAIO,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOH,MAAM,CAACG,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GAN0C;;;EAS3CA,EAAAA,CAAC,GAAGhD,EAAE,CAACiD,KAAH,CAASN,SAAT,CAAJ;;EAEA,MAAIK,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOH,MAAM,CAACG,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GAb0C;;;EAgB3CA,EAAAA,CAAC,GAAGhD,EAAE,CAACiD,KAAH,CAASL,SAAT,CAAJ;;EAEA,MAAII,CAAC,KAAK,IAAV,EAAgB;EACd,QAAInB,GAAG,GAAGL,MAAM,CAACwB,CAAC,CAAC,CAAD,CAAF,CAAN,GAAe,CAAC,CAA1B;EACA,WAAOH,MAAM,CAAChB,GAAD,CAAb;EACD,GArB0C;;;EAwB3CmB,EAAAA,CAAC,GAAGhD,EAAE,CAACiD,KAAH,CAASP,QAAT,CAAJ;;EAEA,MAAIM,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOH,MAAM,CAACG,CAAC,CAAC,CAAD,CAAF,CAAb;EACD;;EAED,SAAO,IAAP;EACD,CA/BD;;EAiCA,IAAIE,eAAe,GAAGJ,aAAtB;EAEA,IAAIK,KAAK,GAAGX,SAAS,EAArB;;EAEA,IAAIY,MAAM,GAAG3G,MAAM,CAAC4E,IAAP,CAAYS,MAAZ,EAAoBuB,MAApB,CAA2B,UAAUC,CAAV,EAAa/B,CAAb,EAAgB;EACtD,MAAIgC,IAAI,GAAGhC,CAAC,CAAC9C,KAAF,CAAQ,GAAR,EAAa,CAAb,KAAmB,EAA9B;EACA8E,EAAAA,IAAI,GAAGA,IAAI,CAAC5B,OAAL,CAAa,IAAb,EAAmB,GAAnB,CAAP;EACA2B,EAAAA,CAAC,CAACC,IAAD,CAAD,GAAUhC,CAAV;EACA,SAAO+B,CAAP;EACD,CALY,EAKV,EALU,CAAb;;EAOA,IAAIE,SAAS,GAAG,SAASA,SAAT,CAAmBxD,EAAnB,EAAuB;EACrCA,EAAAA,EAAE,GAAGA,EAAE,CAAC2B,OAAH,CAAW,QAAX,EAAqB,EAArB,CAAL;EACA3B,EAAAA,EAAE,GAAGA,EAAE,CAAC2B,OAAH,CAAW,8BAAX,EAA2C,EAA3C,CAAL;EACA3B,EAAAA,EAAE,GAAGA,EAAE,CAAC2B,OAAH,CAAW,+BAAX,EAA4C,IAA5C,CAAL;EACA3B,EAAAA,EAAE,GAAGA,EAAE,CAAC2B,OAAH,CAAW,gCAAX,EAA6C,IAA7C,CAAL;EACA3B,EAAAA,EAAE,GAAGA,EAAE,CAAC2B,OAAH,CAAW,aAAX,EAA0B,QAA1B,CAAL;EACA3B,EAAAA,EAAE,GAAGA,EAAE,CAAC2B,OAAH,CAAW,WAAX,EAAwB,QAAxB,CAAL;EACA,SAAO3B,EAAP;EACD,CARD;;;EAWA,IAAIyD,QAAQ,GAAG,SAASA,QAAT,CAAkB/B,GAAlB,EAAuB5B,KAAvB,EAA8B;EAC3C,MAAI,CAAC4B,GAAL,EAAU;EACR,WAAOyB,KAAP;EACD;;EAED,MAAI,OAAOzB,GAAP,KAAe,QAAnB,EAA6B;EAC3BzB,IAAAA,OAAO,CAACyD,KAAR,CAAc,yCAAd,EAAyDhC,GAAzD,EAA8D,KAA9D;EACD;;EAED,MAAI1B,EAAE,GAAG0B,GAAG,CAACrG,IAAJ,EAAT,CAT2C;EAU3C;EACA;EACA;EACA;;EAEA2E,EAAAA,EAAE,GAAGA,EAAE,CAAC5E,WAAH,EAAL;;EAEA,MAAI0E,KAAK,CAACvE,cAAN,CAAqByE,EAArB,MAA6B,IAAjC,EAAuC;EACrC,WAAOA,EAAP;EACD,GAnB0C;;;EAsB3CA,EAAAA,EAAE,GAAGwD,SAAS,CAACxD,EAAD,CAAd;;EAEA,MAAIF,KAAK,CAACvE,cAAN,CAAqByE,EAArB,MAA6B,IAAjC,EAAuC;EACrC,WAAOA,EAAP;EACD,GA1B0C;;;EA6B3C,MAAIoD,MAAM,CAAC7H,cAAP,CAAsByE,EAAtB,MAA8B,IAAlC,EAAwC;EACtC,WAAOoD,MAAM,CAACpD,EAAD,CAAb;EACD,GA/B0C;;;EAkC3C,MAAI,QAAQjC,IAAR,CAAaiC,EAAb,MAAqB,IAAzB,EAA+B;EAC7B,QAAI2D,EAAE,GAAGT,eAAe,CAAClD,EAAD,CAAxB;;EAEA,QAAI2D,EAAJ,EAAQ;EACN,aAAOA,EAAP;EACD;EACF;;EAED,QAAM,IAAIC,KAAJ,CAAU,6CAA6ClC,GAA7C,GAAmD,sCAA7D,CAAN;EACD,CA3CD;;EA6CA,IAAImC,IAAI,GAAGJ,QAAX;EAEA,IAAInG,CAAC,GAAG;EACNwG,EAAAA,WAAW,EAAE;EADP,CAAR;EAGAxG,CAAC,CAACyG,MAAF,GAAW,IAAX;EACAzG,CAAC,CAAC0G,MAAF,GAAW,KAAX;EACA1G,CAAC,CAAC0B,IAAF,GAAS,KAAT;;EAEA1B,CAAC,CAACyB,GAAF,GAAQ,MAAR;;EAEAzB,CAAC,CAAC2G,IAAF,GAAS3G,CAAC,CAACyB,GAAX;EACAzB,CAAC,CAACqB,KAAF,GAAU,SAAS,IAAnB;;EAEArB,CAAC,CAAC4G,IAAF,GAAS,OAAT;EACA5G,CAAC,CAACiB,IAAF,GAAS,QAAT;EACA;;EAEA9B,MAAM,CAAC4E,IAAP,CAAY/D,CAAZ,EAAegE,OAAf,CAAuB,UAAUC,CAAV,EAAa;EAClCjE,EAAAA,CAAC,CAACiE,CAAC,GAAG,GAAL,CAAD,GAAajE,CAAC,CAACiE,CAAD,CAAd;EACD,CAFD;EAGA,IAAI4C,YAAY,GAAG7G,CAAnB;;EAEA,IAAI8G,IAAI,GAAG,SAASA,IAAT,CAAc5I,CAAd,EAAiBiC,CAAjB,EAAoBsD,EAApB,EAAwBsD,IAAxB,EAA8BC,QAA9B,EAAwC;EACjD,MAAIC,OAAO,GAAG/I,CAAC,CAACgJ,CAAF,CAAIzD,EAAJ,GAAd;;EAEA,MAAIwD,OAAO,KAAK9G,CAAhB,EAAmB;EACjB,WADiB;EAElB;;EAED,MAAIgH,SAAS,GAAGH,QAAQ,KAAK,IAAb,GAAoB,IAApB,GAA2B9I,CAAC,CAACgJ,CAAF,CAAIF,QAAJ,GAA3C;EACA,MAAII,QAAQ,GAAGlJ,CAAC,CAAC4D,KAAjB,CARiD;;EAUjD,MAAIuF,IAAI,GAAGlH,CAAC,GAAG8G,OAAf;EACA/I,EAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACE,IAAD,CAAZ,GAAqBM,IAAhC,CAXiD;EAYjD;;EAEA,MAAIN,IAAI,KAAK,KAAb,EAAoB;EAClB;EACA;EACA,QAAIO,IAAI,CAACC,GAAL,CAASF,IAAT,IAAiB,EAAjB,IAAuBlH,CAAC,GAAG,EAA/B,EAAmC;EACjCjC,MAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACnF,IAAxB;EACD;EACF,GApBgD;;;EAuBjD,MAAIsF,QAAQ,KAAK,IAAb,IAAqBG,SAAS,KAAKjJ,CAAC,CAACgJ,CAAF,CAAIF,QAAJ,GAAvC,EAAwD;EACtD;EACA9I,IAAAA,CAAC,CAAC4D,KAAF,GAAUsF,QAAV,CAFsD;EAGvD,GA1BgD;EA2BjD;;;EAGA,MAAII,QAAQ,GAAGX,YAAY,CAACE,IAAD,CAAZ,GAAqB,CAApC;;EAEA,SAAO7I,CAAC,CAACgJ,CAAF,CAAIzD,EAAJ,MAAYtD,CAAnB,EAAsB;EACpBjC,IAAAA,CAAC,CAAC4D,KAAF,IAAW0F,QAAX;EACD;;EAED,SAAOtJ,CAAC,CAACgJ,CAAF,CAAIzD,EAAJ,MAAYtD,CAAnB,EAAsB;EACpBjC,IAAAA,CAAC,CAAC4D,KAAF,IAAW0F,QAAX;EACD,GAtCgD;;;EAyCjD,MAAIR,QAAQ,KAAK,IAAb,IAAqBG,SAAS,KAAKjJ,CAAC,CAACgJ,CAAF,CAAIF,QAAJ,GAAvC,EAAwD;EACtD;EACA9I,IAAAA,CAAC,CAAC4D,KAAF,GAAUsF,QAAV;EACD;EACF,CA7CD;;;EAgDA,IAAIK,OAAO,GAAG;EACZxG,EAAAA,IAAI,EAAE;EACJyG,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAevH,CAAf,EAAkB;EACvB,aAAOA,CAAC,GAAG,CAAC,IAAL,IAAaA,CAAC,GAAG,IAAxB;EACD,KAHG;EAIJwH,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBzJ,CAAhB,EAAmBiC,CAAnB,EAAsB;EAC5B,aAAO2G,IAAI,CAAC5I,CAAD,EAAIiC,CAAJ,EAAO,aAAP,EAAsB,MAAtB,EAA8B,IAA9B,CAAX;EACD;EANG,GADM;EASZkB,EAAAA,KAAK,EAAE;EACLqG,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAevH,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,IAAI,EAAtB;EACD,KAHI;EAILwH,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBzJ,CAAhB,EAAmBiC,CAAnB,EAAsB;EAC5B,UAAI+G,CAAC,GAAGhJ,CAAC,CAACgJ,CAAV;EACA,UAAID,OAAO,GAAGC,CAAC,CAACU,QAAF,EAAd;EACA,UAAIR,QAAQ,GAAGlJ,CAAC,CAAC4D,KAAjB;EACA,UAAIqF,SAAS,GAAGD,CAAC,CAACW,WAAF,EAAhB;;EAEA,UAAIZ,OAAO,KAAK9G,CAAhB,EAAmB;EACjB;EACD,OAR2B;;;EAW5B,UAAIkH,IAAI,GAAGlH,CAAC,GAAG8G,OAAf;EACA/I,MAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACpF,GAAb,IAAoB4F,IAAI,GAAG,EAA3B,CAAX,CAZ4B;EAa5B;;EAEA,UAAIF,SAAS,KAAKjJ,CAAC,CAACgJ,CAAF,CAAIW,WAAJ,EAAlB,EAAqC;EACnC3J,QAAAA,CAAC,CAAC4D,KAAF,GAAUsF,QAAV;EACD,OAjB2B;;;EAoB5B,aAAOlJ,CAAC,CAACgJ,CAAF,CAAIU,QAAJ,KAAiBzH,CAAxB,EAA2B;EACzBjC,QAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACpF,GAAxB;EACD;;EAED,aAAOvD,CAAC,CAACgJ,CAAF,CAAIU,QAAJ,KAAiBzH,CAAxB,EAA2B;EACzBjC,QAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACpF,GAAxB;EACD;EACF;EA/BI,GATK;EA0CZkF,EAAAA,IAAI,EAAE;EACJe,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAevH,CAAf,EAAkB;EACvB,aAAOA,CAAC,GAAG,CAAJ,IAASA,CAAC,IAAI,EAArB;EACD,KAHG;EAIJwH,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBzJ,CAAhB,EAAmBiC,CAAnB,EAAsB;EAC5B,aAAO2G,IAAI,CAAC5I,CAAD,EAAIiC,CAAJ,EAAO,SAAP,EAAkB,KAAlB,EAAyB,UAAzB,CAAX;EACD;EANG,GA1CM;EAkDZuB,EAAAA,IAAI,EAAE;EACJgG,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAevH,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHG;EAIJwH,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBzJ,CAAhB,EAAmBiC,CAAnB,EAAsB;EAC5B,aAAO2G,IAAI,CAAC5I,CAAD,EAAIiC,CAAJ,EAAO,UAAP,EAAmB,MAAnB,EAA2B,SAA3B,CAAX;EACD;EANG,GAlDM;EA0DZuG,EAAAA,MAAM,EAAE;EACNgB,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAevH,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHK;EAINwH,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBzJ,CAAhB,EAAmBiC,CAAnB,EAAsB;EAC5B,aAAO2G,IAAI,CAAC5I,CAAD,EAAIiC,CAAJ,EAAO,YAAP,EAAqB,QAArB,EAA+B,UAA/B,CAAX;EACD;EANK,GA1DI;EAkEZsG,EAAAA,MAAM,EAAE;EACNiB,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAevH,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHK;EAINwH,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBzJ,CAAhB,EAAmBiC,CAAnB,EAAsB;EAC5B;EACAjC,MAAAA,CAAC,CAAC4D,KAAF,GAAU5D,CAAC,CAAC4J,OAAF,CAAU3H,CAAV,EAAa2B,KAAvB;EACD;EAPK,GAlEI;EA2EZ0E,EAAAA,WAAW,EAAE;EACXkB,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAevH,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,IAArB;EACD,KAHU;EAIXwH,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBzJ,CAAhB,EAAmBiC,CAAnB,EAAsB;EAC5B;EACAjC,MAAAA,CAAC,CAAC4D,KAAF,GAAU5D,CAAC,CAAC2I,YAAF,CAAe1G,CAAf,EAAkB2B,KAA5B;EACD;EAPU;EA3ED,CAAd;;EAsFA,IAAI6F,MAAM,GAAG,SAASA,MAAT,CAAgBzJ,CAAhB,EAAmB6J,KAAnB,EAA0B;EACrC,MAAIhE,IAAI,GAAG5E,MAAM,CAAC4E,IAAP,CAAY0D,OAAZ,CAAX;EACA,MAAIO,GAAG,GAAG9J,CAAC,CAAC+J,KAAF,EAAV;;EAEA,OAAK,IAAIvK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqG,IAAI,CAACpG,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC,QAAIuG,CAAC,GAAGF,IAAI,CAACrG,CAAD,CAAZ;EACA,QAAIyC,CAAC,GAAG4H,KAAK,CAAC9D,CAAD,CAAb;;EAEA,QAAI9D,CAAC,KAAKX,SAAV,EAAqB;EACnBW,MAAAA,CAAC,GAAG6H,GAAG,CAAC/D,CAAD,CAAH,EAAJ;EACD;;EAED,QAAI,OAAO9D,CAAP,KAAa,QAAjB,EAA2B;EACzBA,MAAAA,CAAC,GAAG+H,QAAQ,CAAC/H,CAAD,EAAI,EAAJ,CAAZ;EACD,KAVmC;;;EAapC,QAAI,CAACsH,OAAO,CAACxD,CAAD,CAAP,CAAWyD,KAAX,CAAiBvH,CAAjB,CAAL,EAA0B;EACxBjC,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;;EAEA,UAAI5D,CAAC,CAACiK,MAAF,KAAa,KAAjB,EAAwB;EACtBxF,QAAAA,OAAO,CAACC,IAAR,CAAa,aAAaqB,CAAb,GAAiB,IAAjB,GAAwB9D,CAArC;EACD;;EAED;EACD;;EAEDsH,IAAAA,OAAO,CAACxD,CAAD,CAAP,CAAW0D,MAAX,CAAkBzJ,CAAlB,EAAqBiC,CAArB;EACD;;EAED;EACD,CA/BD;;EAiCA,IAAIiI,MAAM,GAAGT,MAAb;EAEA,IAAIU,WAAW,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,EAAyD,MAAzD,EAAiE,KAAjE,EAAwE,KAAxE,EAA+E,KAA/E,CAAlB;EACA,IAAIC,UAAU,GAAG,CAAC,SAAD,EAAY,UAAZ,EAAwB,OAAxB,EAAiC,OAAjC,EAA0C,KAA1C,EAAiD,MAAjD,EAAyD,MAAzD,EAAiE,QAAjE,EAA2E,WAA3E,EAAwF,SAAxF,EAAmG,UAAnG,EAA+G,UAA/G,CAAjB;;EAEA,SAASC,YAAT,GAAwB;EACtB,MAAIjK,GAAG,GAAG;EACRkK,IAAAA,GAAG,EAAE,CADG;;EAAA,GAAV;;EAKA,OAAK,IAAI9K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2K,WAAW,CAAC1K,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;EAC3CY,IAAAA,GAAG,CAAC+J,WAAW,CAAC3K,CAAD,CAAZ,CAAH,GAAsBA,CAAtB;EACD;;EAED,OAAK,IAAI+B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAG6I,UAAU,CAAC3K,MAAjC,EAAyC8B,EAAE,EAA3C,EAA+C;EAC7CnB,IAAAA,GAAG,CAACgK,UAAU,CAAC7I,EAAD,CAAX,CAAH,GAAsBA,EAAtB;EACD;;EAED,SAAOnB,GAAP;EACD;;EAED,IAAImK,QAAQ,GAAG;EACb,WAAS,SAASC,KAAT,GAAiB;EACxB,WAAOL,WAAP;EACD,GAHY;EAIb,UAAQ,SAASM,IAAT,GAAgB;EACtB,WAAOL,UAAP;EACD,GANY;EAObtK,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,WAAOuK,YAAY,EAAnB;EACD,GATY;EAUbK,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaC,IAAb,EAAmB;EACtBR,IAAAA,WAAW,GAAGQ,IAAI,CAAC,OAAD,CAAJ,IAAiBR,WAA/B;EACAC,IAAAA,UAAU,GAAGO,IAAI,CAAC,MAAD,CAAJ,IAAgBP,UAA7B;EACD;EAbY,CAAf;;EAiBA,IAAI7C,WAAW,GAAG,SAASA,WAAT,CAAqBvH,CAArB,EAAwB8C,MAAxB,EAAgC;EAChD,MAAI,CAACA,MAAL,EAAa;EACX,WAAO9C,CAAP;EACD,GAH+C;;;EAMhD,MAAI8C,MAAM,KAAK,GAAX,IAAkBA,MAAM,KAAK,GAAjC,EAAsC;EACpCA,IAAAA,MAAM,GAAG,OAAT;EACD,GAR+C;EAShD;;;EAGA,MAAIuD,GAAG,GAAG,CAAV,CAZgD;;EAchD,MAAI,4BAA4B9D,IAA5B,CAAiCO,MAAjC,CAAJ,EAA8C;EAC5C;EACA,QAAI,MAAMP,IAAN,CAAWO,MAAX,MAAuB,IAA3B,EAAiC;EAC/BA,MAAAA,MAAM,GAAGA,MAAM,CAACqD,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACD,KAJ2C;;;EAO5C,QAAI,MAAM5D,IAAN,CAAWO,MAAX,MAAuB,IAA3B,EAAiC;EAC/BA,MAAAA,MAAM,GAAGA,MAAM,CAACqD,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAT;EACD;EACF,GAxB+C;;;EA2BhD,MAAI,mBAAmB5D,IAAnB,CAAwBO,MAAxB,CAAJ,EAAqC;EACnCA,IAAAA,MAAM,GAAGA,MAAM,CAACqD,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAT;EACD;;EAEDE,EAAAA,GAAG,GAAGuE,UAAU,CAAC9H,MAAD,CAAhB,CA/BgD;;EAiChD,MAAIsG,IAAI,CAACC,GAAL,CAAShD,GAAT,IAAgB,GAApB,EAAyB;EACvBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,GAAZ;EACD,GAnC+C;EAoChD;EACA;;;EAGAA,EAAAA,GAAG,IAAI,CAAC,CAAR;;EAEA,MAAIA,GAAG,IAAI,CAAX,EAAc;EACZA,IAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,MAAI7B,EAAE,GAAG,YAAY6B,GAArB;EACA,MAAI/B,KAAK,GAAGtE,CAAC,CAACuE,SAAd;;EAEA,MAAID,KAAK,CAACE,EAAD,CAAT,EAAe;EACb;EACA;EACAxE,IAAAA,CAAC,CAACwE,EAAF,GAAOA,EAAP;EACD;;EAED,SAAOxE,CAAP;EACD,CAxDD;;EA0DA,IAAI6K,aAAa,GAAGtD,WAApB;;EAEA,IAAIuD,SAAS,GAAG,SAASA,SAAT,CAAmB9K,CAAnB,EAAsB;EACpC,MAAIkG,GAAG,GAAG6E,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACA7E,EAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,MAAZ,EAAoB,EAApB,EAAwBvG,WAAxB,EAAN,CAFoC;EAGpC;;EAEA,MAAIc,GAAG,GAAGwF,GAAG,CAACuB,KAAJ,CAAU,6DAAV,CAAV;;EAEA,MAAI/G,GAAG,KAAK,IAAZ,EAAkB;EAChB;EACA,QAAIoH,CAAC,GAAG9B,MAAM,CAACtF,GAAG,CAAC,CAAD,CAAJ,CAAd;;EAEA,QAAIoH,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,EAAjB,EAAqB;EACnB,aAAO9H,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAP;EACD;;EAED,QAAIxD,CAAC,GAAGxB,MAAM,CAACtF,GAAG,CAAC,CAAD,CAAJ,CAAd,CARgB;;EAUhB,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAOjB,MAAP,GAAgB,CAAhB,IAAqB+H,CAAC,GAAG,CAAzB,IAA8BA,CAAC,GAAG,EAAtC,EAA0C;EACxC,aAAOxH,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAP;EACD;;EAED,QAAItK,GAAG,CAAC,CAAD,CAAH,GAAS,GAAb,EAAkB;EAChB;EACAA,MAAAA,GAAG,CAAC,CAAD,CAAH,GAASsJ,QAAQ,CAAC,GAAGiB,MAAH,CAAUvK,GAAG,CAAC,CAAD,CAAb,EAAkBwK,SAAlB,CAA4B,CAA5B,EAA+B,CAA/B,CAAD,EAAoC,EAApC,CAAjB;EACD;;EAEDlL,IAAAA,CAAC,GAAGA,CAAC,CAACwD,IAAF,CAAOsE,CAAP,CAAJ;EACA9H,IAAAA,CAAC,GAAGA,CAAC,CAACwI,MAAF,CAAShB,CAAT,CAAJ;EACAxH,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,OAAF,CAAUlJ,GAAG,CAAC,CAAD,CAAH,IAAU,CAApB,CAAJ;EACAV,IAAAA,CAAC,GAAGA,CAAC,CAACsI,WAAF,CAAc5H,GAAG,CAAC,CAAD,CAAH,IAAU,CAAxB,CAAJ,CAtBgB;;EAwBhB,QAAIyK,IAAI,GAAGjF,GAAG,CAACuB,KAAJ,CAAU,kBAAV,CAAX;;EAEA,QAAI0D,IAAI,KAAK,IAAT,IAAiBA,IAAI,CAAC,CAAD,CAAzB,EAA8B;EAC5BnL,MAAAA,CAAC,GAAGA,CAAC,CAACmL,IAAF,CAAOA,IAAI,CAAC,CAAD,CAAX,CAAJ;EACD;;EAED,WAAOnL,CAAP;EACD,GAtCmC;;;EAyCpCU,EAAAA,GAAG,GAAGwF,GAAG,CAACuB,KAAJ,CAAU,mBAAV,CAAN;;EAEA,MAAI/G,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAAC,CAAD,CAAvB,EAA4B;EAC1B,QAAI0K,EAAE,GAAGpF,MAAM,CAACtF,GAAG,CAAC,CAAD,CAAJ,CAAf,CAD0B;;;EAI1B,QAAI0K,EAAE,GAAG,EAAL,IAAWA,EAAE,GAAG,CAApB,EAAuB;EACrB,aAAOpL,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAP;EACD;;EAEDhL,IAAAA,CAAC,GAAGA,CAAC,CAACwD,IAAF,CAAO9C,GAAG,CAAC,CAAD,CAAH,IAAU,CAAjB,CAAJ;EACAV,IAAAA,CAAC,GAAGA,CAAC,CAACmL,IAAF,CAAOzK,GAAG,CAAC,CAAD,CAAV,CAAJ;EACAV,IAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,MAAV,CAAJ;EACA,WAAOhL,CAAP;EACD,GAvDmC;;;EA0DpCA,EAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAJ;EACA,SAAOhL,CAAP;EACD,CA5DD;;EA8DA,IAAIqL,WAAW,GAAGP,SAAlB;EAEA,IAAIQ,YAAY,GAAG,CAAC,EAAD;EACnB,EADmB;EAEnB,EAFmB;EAGnB,EAHmB;EAInB,EAJmB;EAKnB,EALmB;EAMnB,EANmB;EAOnB,EAPmB;EAQnB,EARmB;EASnB,EATmB;EAUnB,EAVmB;EAWnB,EAXmB;EAAA,CAAnB;EAaA,IAAIC,cAAc,GAAGD,YAArB;;EAEA,IAAIE,GAAG,GAAGlG,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;EACxD;EACAA,EAAAA,OAAO,CAACgG,UAAR,GAAqB,UAAU1I,IAAV,EAAgB;EACnC,WAAOA,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkBA,IAAI,GAAG,GAAP,KAAe,CAAjC,IAAsCA,IAAI,GAAG,GAAP,KAAe,CAA5D;EACD,GAFD,CAFwD;;;EAOxD0C,EAAAA,OAAO,CAACiG,MAAR,GAAiB,UAAU1C,CAAV,EAAa;EAC5B,WAAO/H,MAAM,CAACT,SAAP,CAAiB0B,QAAjB,CAA0BC,IAA1B,CAA+B6G,CAA/B,MAAsC,eAAtC,IAAyD,CAAC2C,KAAK,CAAC3C,CAAC,CAAC4C,OAAF,EAAD,CAAtE;EACD,GAFD;;EAIAnG,EAAAA,OAAO,CAACzE,OAAR,GAAkB,UAAU6K,KAAV,EAAiB;EACjC,WAAO5K,MAAM,CAACT,SAAP,CAAiB0B,QAAjB,CAA0BC,IAA1B,CAA+B0J,KAA/B,MAA0C,gBAAjD;EACD,GAFD;;EAIApG,EAAAA,OAAO,CAACqG,QAAR,GAAmB,UAAUD,KAAV,EAAiB;EAClC,WAAO5K,MAAM,CAACT,SAAP,CAAiB0B,QAAjB,CAA0BC,IAA1B,CAA+B0J,KAA/B,MAA0C,iBAAjD;EACD,GAFD;;EAIApG,EAAAA,OAAO,CAACsG,SAAR,GAAoB,UAAUF,KAAV,EAAiB;EACnC,WAAO5K,MAAM,CAACT,SAAP,CAAiB0B,QAAjB,CAA0BC,IAA1B,CAA+B0J,KAA/B,MAA0C,kBAAjD;EACD,GAFD;;EAIApG,EAAAA,OAAO,CAACuG,OAAR,GAAkB,UAAU9F,GAAV,EAAe;EAC/B,QAAI1D,GAAG,GAAGuI,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,CAA9E;EACA,QAAIkB,GAAG,GAAG,GAAV;EACA/F,IAAAA,GAAG,GAAGA,GAAG,GAAG,EAAZ;EACA,WAAOA,GAAG,CAACzG,MAAJ,IAAc+C,GAAd,GAAoB0D,GAApB,GAA0B,IAAInF,KAAJ,CAAUyB,GAAG,GAAG0D,GAAG,CAACzG,MAAV,GAAmB,CAA7B,EAAgCyM,IAAhC,CAAqCD,GAArC,IAA4C/F,GAA7E;EACD,GALD;;EAOAT,EAAAA,OAAO,CAAC0G,SAAR,GAAoB,UAAUjG,GAAV,EAAe;EACjC,QAAI,CAACA,GAAL,EAAU;EACR,aAAO,EAAP;EACD;;EAED,WAAOA,GAAG,CAAC,CAAD,CAAH,CAAOkG,WAAP,KAAuBlG,GAAG,CAACmG,MAAJ,CAAW,CAAX,CAA9B;EACD,GAND;;EAQA5G,EAAAA,OAAO,CAAC6G,OAAR,GAAkB,UAAU9M,CAAV,EAAa;EAC7B,QAAI+M,CAAC,GAAG/M,CAAC,GAAG,EAAZ;EACA,QAAIuG,CAAC,GAAGvG,CAAC,GAAG,GAAZ;;EAEA,QAAI+M,CAAC,KAAK,CAAN,IAAWxG,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOvG,CAAC,GAAG,IAAX;EACD;;EAED,QAAI+M,CAAC,KAAK,CAAN,IAAWxG,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOvG,CAAC,GAAG,IAAX;EACD;;EAED,QAAI+M,CAAC,KAAK,CAAN,IAAWxG,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOvG,CAAC,GAAG,IAAX;EACD;;EAED,WAAOA,CAAC,GAAG,IAAX;EACD,GAjBD,CAtCwD;;;EA0DxDiG,EAAAA,OAAO,CAAC+G,UAAR,GAAqB,UAAUtG,GAAV,EAAe;EAClCA,IAAAA,GAAG,GAAGuG,MAAM,CAACvG,GAAD,CAAZ;EACAA,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,wBAAZ,EAAsC,IAAtC,CAAN;EACA,WAAO6D,QAAQ,CAAC9D,GAAD,EAAM,EAAN,CAAf;EACD,GAJD,CA1DwD;;;EAiExDT,EAAAA,OAAO,CAACuC,SAAR,GAAoB,YAAY;EAC9B,QAAI9B,GAAG,GAAG6E,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACA7E,IAAAA,GAAG,GAAGA,GAAG,CAACtG,WAAJ,GAAkBC,IAAlB,EAAN;EACAqG,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,MAAZ,EAAoB,GAApB,CAAN,CAH8B;;EAK9BD,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACAD,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;;EAEA,QAAID,GAAG,KAAK,KAAR,IAAiBA,GAAG,KAAK,MAA7B,EAAqC;EACnC,aAAO,MAAP;EACD;;EAED,QAAIA,GAAG,KAAK,KAAR,IAAiBA,GAAG,KAAK,MAA7B,EAAqC;EACnC,aAAO,QAAP;EACD;;EAED,WAAOA,GAAP;EACD,GAjBD;;EAmBAT,EAAAA,OAAO,CAACiH,QAAR,GAAmB,UAAUC,GAAV,EAAe;EAChC;EACA,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;EAC3B,aAAOA,GAAP;EACD,KAJ+B;;;EAOhC,QAAIlH,OAAO,CAACiG,MAAR,CAAeiB,GAAf,CAAJ,EAAyB;EACvB,aAAOA,GAAG,CAACC,OAAJ,EAAP;EACD;;EAED,QAAID,GAAG,CAAC/I,KAAR,EAAe;EACb,aAAO+I,GAAG,CAAC/I,KAAX;EACD;;EAED,WAAO,IAAP;EACD,GAhBD,CApFwD;;;EAuGxD6B,EAAAA,OAAO,CAACoH,OAAR,GAAkB,UAAU7D,CAAV,EAAahJ,CAAb,EAAgB;EAChC,QAAIyF,OAAO,CAACqG,QAAR,CAAiB9C,CAAjB,MAAwB,KAA5B,EAAmC;EACjC,aAAOhJ,CAAC,CAAC+J,KAAF,GAAUW,GAAV,CAAc1B,CAAd,CAAP;EACD;;EAED,WAAOA,CAAP;EACD,GAND;;EAQAvD,EAAAA,OAAO,CAACqH,cAAR,GAAyB,UAAUhK,MAAV,EAAkB;EACzC,QAAIiK,SAAS,GAAGhC,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAApF;EACA,QAAIiC,IAAI,GAAGlK,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,GAA9B;EACA,QAAImK,SAAS,GAAG7D,IAAI,CAACC,GAAL,CAASvG,MAAT,CAAhB;EACA,QAAIoK,KAAK,GAAGzH,OAAO,CAACuG,OAAR,CAAgBhC,QAAQ,CAAC,KAAKiD,SAAN,EAAiB,EAAjB,CAAxB,CAAZ;EACA,QAAIE,OAAO,GAAG1H,OAAO,CAACuG,OAAR,CAAgBiB,SAAS,GAAG,CAAZ,GAAgB,EAAhC,CAAd;EACA,WAAO,GAAGhC,MAAH,CAAU+B,IAAV,EAAgB/B,MAAhB,CAAuBiC,KAAvB,EAA8BjC,MAA9B,CAAqC8B,SAArC,EAAgD9B,MAAhD,CAAuDkC,OAAvD,CAAP;EACD,GAPD;EAQD,CAvH6B,CAA9B;EAwHA3B,GAAG,CAACC,UAAJ;EACAD,GAAG,CAACE,MAAJ;EACAF,GAAG,CAACxK,OAAJ;EACAwK,GAAG,CAACM,QAAJ;EACAN,GAAG,CAACO,SAAJ;EACAP,GAAG,CAACQ,OAAJ;EACAR,GAAG,CAACW,SAAJ;EACAX,GAAG,CAACc,OAAJ;EACAd,GAAG,CAACgB,UAAJ;EACAhB,GAAG,CAACxD,SAAJ;EACAwD,GAAG,CAACkB,QAAJ;EACAlB,GAAG,CAACqB,OAAJ;EACArB,GAAG,CAACsB,cAAJ;EAEA,IAAIM,YAAY,GAAG5B,GAAG,CAACC,UAAvB;;EAEA,IAAI4B,OAAO,GAAG,SAASA,OAAT,CAAiBjN,GAAjB,EAAsB;EAClC;EACA,MAAImL,cAAc,CAACxL,cAAf,CAA8BK,GAAG,CAAC+C,KAAlC,MAA6C,IAAjD,EAAuD;EACrD,WAAO,KAAP;EACD,GAJiC;;;EAOlC,MAAI/C,GAAG,CAAC+C,KAAJ,KAAc,CAAlB,EAAqB;EACnB,QAAIiK,YAAY,CAAChN,GAAG,CAAC2C,IAAL,CAAZ,IAA0B3C,GAAG,CAACqI,IAAJ,IAAY,EAA1C,EAA8C;EAC5C,aAAO,IAAP;EACD,KAFD,MAEO;EACL,aAAOrI,GAAG,CAACqI,IAAJ,IAAY,EAAnB;EACD;EACF,GAbiC;;;EAgBlC,MAAI6E,GAAG,GAAG/B,cAAc,CAACnL,GAAG,CAAC+C,KAAL,CAAd,IAA6B,CAAvC;;EAEA,MAAI/C,GAAG,CAACqI,IAAJ,IAAY6E,GAAhB,EAAqB;EACnB,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAvBD;;EAyBA,IAAIC,SAAS,GAAGF,OAAhB;EAEA,IAAIG,MAAM,GAAGjD,QAAQ,CAACzK,OAAT,EAAb;;EAEA,IAAI2N,SAAS,GAAG,SAASA,SAAT,GAAqB;EACnC,MAAIvH,GAAG,GAAG6E,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACA,MAAI2C,KAAK,GAAG3C,SAAS,CAACtL,MAAV,GAAmB,CAAnB,GAAuBsL,SAAS,CAAC,CAAD,CAAhC,GAAsCzJ,SAAlD;EACA,MAAIyB,IAAI,GAAGiH,QAAQ,CAAC9D,GAAG,CAACrG,IAAJ,EAAD,EAAa,EAAb,CAAnB,CAHmC;;EAKnC,MAAI,CAACkD,IAAD,IAAS2K,KAAb,EAAoB;EAClB3K,IAAAA,IAAI,GAAG2K,KAAK,CAAC3K,IAAb;EACD,GAPkC;;;EAUnCA,EAAAA,IAAI,GAAGA,IAAI,IAAI,IAAIU,IAAJ,GAAWkG,WAAX,EAAf;EACA,SAAO5G,IAAP;EACD,CAZD;;EAcA,IAAI4K,MAAM,GAAG;EACb;EACEC,EAAAA,GAAG,EAAE,iFADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuBoN,OAAvB,EAAgCC,OAAhC,EAAyC;EAC9C,QAAI5K,KAAK,GAAG6G,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACA,QAAIN,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAErC,GAAG,CAAC,CAAD,CADD;EAERyC,MAAAA,KAAK,EAAEA,KAFC;EAGRsF,MAAAA,IAAI,EAAE/H,GAAG,CAAC,CAAD;EAHD,KAAV;;EAMA,QAAI6M,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAED6K,IAAAA,aAAa,CAAC7K,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAb;EACAwJ,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EAnBH,CADa;EAsBb;EACE4N,EAAAA,GAAG,EAAE,wGADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIN,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAErC,GAAG,CAAC,CAAD,CADD;EAERyC,MAAAA,KAAK,EAAE6G,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAFtB;EAGR+H,MAAAA,IAAI,EAAEuB,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT;EAHN,KAAV;;EAMA,QAAIN,GAAG,CAAC+C,KAAJ,IAAa,EAAjB,EAAqB;EACnB;EACA/C,MAAAA,GAAG,CAACqI,IAAJ,GAAWuB,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB;EACAN,MAAAA,GAAG,CAAC+C,KAAJ,GAAY6G,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACD;;EAED,QAAI6M,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EAvBH,CAtBa;EA+Cb;EACE4N,EAAAA,GAAG,EAAE,0GADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIyC,KAAK,GAAG6G,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACA,QAAI+H,IAAI,GAAGuB,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB,CAF4B;;EAI5B,QAAIV,CAAC,CAACgO,OAAF,IAAa7K,KAAK,IAAI,EAA1B,EAA8B;EAC5BsF,MAAAA,IAAI,GAAGuB,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAf;EACAyC,MAAAA,KAAK,GAAG6G,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAA/B;EACD;;EAED,QAAIqC,IAAI,GAAG0K,SAAS,CAAC/M,GAAG,CAAC,CAAD,CAAJ,EAASV,CAAC,CAACiO,MAAX,CAAT,IAA+B,IAAIxK,IAAJ,GAAWkG,WAAX,EAA1C;EACA,QAAIvJ,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAEA,KAFC;EAGRsF,MAAAA,IAAI,EAAEA;EAHE,KAAV;;EAMA,QAAI8E,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EA1BH,CA/Ca;EA2Eb;EACE4N,EAAAA,GAAG,EAAE,+BADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuBoN,OAAvB,EAAgCC,OAAhC,EAAyC;EAC9C,QAAI5K,KAAK,GAAG6G,QAAQ,CAACtJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACA,QAAIN,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAErC,GAAG,CAAC,CAAD,CADD;EAERyC,MAAAA,KAAK,EAAEA,KAFC;EAGRsF,MAAAA,IAAI,EAAE;EAHE,KAAV;;EAMA,QAAI8E,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAED6K,IAAAA,aAAa,CAAC7K,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAb;EACAwJ,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EAnBH,CA3Ea;EAgGb;EACE4N,EAAAA,GAAG,EAAE,iDADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIyC,KAAK,GAAGqK,MAAM,CAAC9M,GAAG,CAAC,CAAD,CAAH,CAAOd,WAAP,EAAD,CAAlB;EACA,QAAImD,IAAI,GAAG0K,SAAS,CAAC/M,GAAG,CAAC,CAAD,CAAJ,EAASV,CAAC,CAACiO,MAAX,CAApB;EACA,QAAI7N,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAEA,KAFC;EAGRsF,MAAAA,IAAI,EAAE+C,GAAG,CAACgB,UAAJ,CAAe9L,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;EAHE,KAAV;;EAMA,QAAI6M,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EAnBH,CAhGa;EAqHb;EACE4N,EAAAA,GAAG,EAAE,iDADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIyC,KAAK,GAAGqK,MAAM,CAAC9M,GAAG,CAAC,CAAD,CAAH,CAAOd,WAAP,EAAD,CAAlB;EACA,QAAImD,IAAI,GAAG0K,SAAS,CAAC/M,GAAG,CAAC,CAAD,CAAJ,EAASV,CAAC,CAACiO,MAAX,CAApB;EACA,QAAI7N,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAEA,KAFC;EAGRsF,MAAAA,IAAI,EAAE+C,GAAG,CAACgB,UAAJ,CAAe9L,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;EAHE,KAAV;;EAMA,QAAI6M,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EAnBH,CArHa;EA0Ib;EACA;EACE4N,EAAAA,GAAG,EAAE,uFADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIyC,KAAK,GAAGqK,MAAM,CAAC9M,GAAG,CAAC,CAAD,CAAH,CAAOd,WAAP,EAAD,CAAlB;EACA,QAAImD,IAAI,GAAG0K,SAAS,CAAC/M,GAAG,CAAC,CAAD,CAAJ,EAASV,CAAC,CAACiO,MAAX,CAApB;EACA,QAAI7N,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAEA,KAFC;EAGRsF,MAAAA,IAAI,EAAE+C,GAAG,CAACgB,UAAJ,CAAe9L,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;EAHE,KAAV;;EAMA,QAAI6M,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EAnBH,CA3Ia;EAgKb;EACE4N,EAAAA,GAAG,EAAE,wBADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIyC,KAAK,GAAGqK,MAAM,CAAC9M,GAAG,CAAC,CAAD,CAAH,CAAOd,WAAP,EAAD,CAAlB;EACA,QAAImD,IAAI,GAAG0K,SAAS,CAAC/M,GAAG,CAAC,CAAD,CAAJ,EAASV,CAAC,CAACiO,MAAX,CAApB;EACA,QAAI7N,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAEA,KAFC;EAGRsF,MAAAA,IAAI,EAAEzI,CAAC,CAACiO,MAAF,CAASxF,IAAT,IAAiB;EAHf,KAAV;;EAMA,QAAI8E,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EAnBH,CAhKa;EAqLb;EACE4N,EAAAA,GAAG,EAAE,4GADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIyC,KAAK,GAAGqK,MAAM,CAAC9M,GAAG,CAAC,CAAD,CAAH,CAAOd,WAAP,EAAD,CAAlB;;EAEA,QAAI,CAACuD,KAAL,EAAY;EACV,aAAO,IAAP;EACD;;EAED,QAAIJ,IAAI,GAAG0K,SAAS,CAAC/M,GAAG,CAAC,CAAD,CAAJ,EAASV,CAAC,CAACiO,MAAX,CAApB;EACA,QAAI7N,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAEA,KAFC;EAGRsF,MAAAA,IAAI,EAAE+C,GAAG,CAACgB,UAAJ,CAAe9L,GAAG,CAAC,CAAD,CAAlB;EAHE,KAAV;;EAMA,QAAI6M,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,EAAIU,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOV,CAAP;EACD;EAxBH,CArLa,EA8MV;EACD;EACA4N,EAAAA,GAAG,EAAE,8BAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIwN,OAAO,GAAGxN,GAAG,CAAC,CAAD,CAAH,IAAU,EAAxB;EACAV,IAAAA,CAAC,GAAGA,CAAC,CAACkO,OAAF,CAAUA,OAAV,CAAJ;EACA,QAAInL,IAAI,GAAGrC,GAAG,CAAC,CAAD,CAAH,IAAU,EAArB;;EAEA,QAAIqC,IAAJ,EAAU;EACRA,MAAAA,IAAI,GAAGA,IAAI,CAAClD,IAAL,EAAP;EACAG,MAAAA,CAAC,GAAGA,CAAC,CAAC+C,IAAF,CAAOA,IAAP,CAAJ;EACD;;EAED,WAAO/C,CAAP;EACD;EAdA,CA9MU,EA6NV;EACD;EACA4N,EAAAA,GAAG,EAAE,wDAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIyN,MAAM,GAAGzN,GAAG,CAAC,CAAD,CAAH,IAAU,EAAvB;EACAV,IAAAA,CAAC,GAAGA,CAAC,CAACmO,MAAF,CAASA,MAAT,CAAJ;EACA,QAAIpL,IAAI,GAAGrC,GAAG,CAAC,CAAD,CAAH,IAAU,EAArB;;EAEA,QAAIqC,IAAJ,EAAU;EACRA,MAAAA,IAAI,GAAGA,IAAI,CAAClD,IAAL,EAAP;EACAG,MAAAA,CAAC,GAAGA,CAAC,CAAC+C,IAAF,CAAOA,IAAP,CAAJ;EACD;;EAED,WAAO/C,CAAP;EACD;EAdA,CA7NU,EA4OV;EACD;EACA4N,EAAAA,GAAG,EAAE,sBAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIwF,GAAG,GAAGxF,GAAG,CAAC,CAAD,CAAH,IAAU,EAApB,CAD4B;;EAG5BwF,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,wBAAZ,EAAsC,KAAtC,CAAN,CAH4B;;EAK5BD,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACA,QAAIpD,IAAI,GAAGiH,QAAQ,CAAC9D,GAAG,CAACrG,IAAJ,EAAD,EAAa,EAAb,CAAnB;EACA,QAAImJ,CAAC,GAAG,IAAIvF,IAAJ,EAAR;EACA,QAAIrD,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAE6F,CAAC,CAACU,QAAF,EAFC;EAGRjB,MAAAA,IAAI,EAAEO,CAAC,CAACoF,OAAF;EAHE,KAAV;;EAMA,QAAIb,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EAzBA,CA5OU,EAsQV;EACD;EACA4N,EAAAA,GAAG,EAAE,iCAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIwF,GAAG,GAAGxF,GAAG,CAAC,CAAD,CAAH,IAAU,EAApB,CAD4B;;EAG5BwF,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACA,QAAIpD,IAAI,GAAGiH,QAAQ,CAAC9D,GAAG,CAACrG,IAAJ,EAAD,EAAa,EAAb,CAAnB;EACA,QAAImJ,CAAC,GAAG,IAAIvF,IAAJ,EAAR;EACA,QAAIrD,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAE6F,CAAC,CAACU,QAAF,EAFC;EAGRjB,MAAAA,IAAI,EAAEO,CAAC,CAACoF,OAAF;EAHE,KAAV;;EAMA,QAAIb,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EAvBA,CAtQU,EA8RV;EACD;EACA4N,EAAAA,GAAG,EAAE,0BAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7N,CAAf,EAAkBU,GAAlB,EAAuB;EAC5B,QAAIgN,KAAK,GAAG1N,CAAC,CAACiO,MAAd;EACA,QAAIlL,IAAI,GAAG0K,SAAS,CAAC/M,GAAG,CAAC,CAAD,CAAJ,EAASgN,KAAT,CAApB;EACA,QAAI1E,CAAC,GAAG,IAAIvF,IAAJ,EAAR,CAH4B;;EAK5B,QAAIiK,KAAK,CAACvK,KAAN,IAAe,CAACuK,KAAK,CAACjF,IAA1B,EAAgC;EAC9BiF,MAAAA,KAAK,CAACjF,IAAN,GAAa,CAAb;EACD;;EAED,QAAIrI,GAAG,GAAG;EACR2C,MAAAA,IAAI,EAAEA,IADE;EAERI,MAAAA,KAAK,EAAEuK,KAAK,CAACvK,KAAN,IAAe6F,CAAC,CAACU,QAAF,EAFd;EAGRjB,MAAAA,IAAI,EAAEiF,KAAK,CAACjF,IAAN,IAAcO,CAAC,CAACoF,OAAF;EAHZ,KAAV;;EAMA,QAAIb,SAAS,CAACnN,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BJ,MAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,aAAO5D,CAAP;EACD;;EAEDkK,IAAAA,MAAM,CAAClK,CAAD,EAAII,GAAJ,CAAN;EACAJ,IAAAA,CAAC,GAAGqL,WAAW,CAACrL,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EA1BA,CA9RU,CAAb;EA0TA,IAAIqO,QAAQ,GAAGV,MAAf;;EAGA,IAAIW,MAAM,GAAG,SAASA,MAAT,CAAgBtO,CAAhB,EAAmB;EAC9BA,EAAAA,CAAC,CAAC4D,KAAF,GAAUH,IAAI,CAAC8K,GAAL,EAAV;EACAtN,EAAAA,MAAM,CAAC4E,IAAP,CAAY7F,CAAC,CAACiO,MAAF,IAAY,EAAxB,EAA4BnI,OAA5B,CAAoC,UAAUC,CAAV,EAAa;EAC/C,QAAI,OAAO/F,CAAC,CAAC+F,CAAD,CAAR,KAAgB,UAApB,EAAgC;EAC9B/F,MAAAA,CAAC,GAAGA,CAAC,CAAC+F,CAAD,CAAD,CAAK/F,CAAC,CAACiO,MAAF,CAASlI,CAAT,CAAL,CAAJ;EACD;EACF,GAJD;EAKA,SAAO/F,CAAP;EACD,CARD;;EAUA,IAAIwO,KAAK,GAAG;EACVD,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavO,CAAb,EAAgB;EACnB,WAAOsO,MAAM,CAACtO,CAAD,CAAb;EACD,GAHS;EAIV0N,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe1N,CAAf,EAAkB;EACvB,WAAOsO,MAAM,CAACtO,CAAD,CAAb;EACD,GANS;EAOVyO,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBzO,CAAjB,EAAoB;EAC3BA,IAAAA,CAAC,GAAGsO,MAAM,CAACtO,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAACwD,IAAF,CAAO,EAAP,CAAJ,CAF2B;;EAI3B,WAAOxD,CAAP;EACD,GAZS;EAaV0O,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkB1O,CAAlB,EAAqB;EAC7BA,IAAAA,CAAC,GAAGsO,MAAM,CAACtO,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC2O,GAAF,CAAM,CAAN,EAAS,KAAT,CAAJ;EACA3O,IAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAJ;EACA,WAAOhL,CAAP;EACD,GAlBS;EAmBV4O,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB5O,CAAnB,EAAsB;EAC/BA,IAAAA,CAAC,GAAGsO,MAAM,CAACtO,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC6O,QAAF,CAAW,CAAX,EAAc,KAAd,CAAJ;EACA7O,IAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAJ;EACA,WAAOhL,CAAP;EACD,GAxBS;EAyBV8O,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB9O,CAAnB,EAAsB;EAC/B,QAAI+C,IAAI,GAAGuL,MAAM,CAACtO,CAAD,CAAN,CAAU+C,IAAV,EAAX;EACA/C,IAAAA,CAAC,GAAGA,CAAC,CAAC0K,GAAF,CAAM,CAAC3H,IAAD,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,CAAN,CAAJ,CAF+B;;EAI/B,WAAO/C,CAAP;EACD,GA9BS;EA+BV,eAAa,SAAS+O,QAAT,CAAkB/O,CAAlB,EAAqB;EAChC,QAAI+C,IAAI,GAAGuL,MAAM,CAACtO,CAAD,CAAN,CAAU+C,IAAV,EAAX;EACA/C,IAAAA,CAAC,GAAGA,CAAC,CAAC0K,GAAF,CAAM,CAAC3H,IAAD,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,CAAN,CAAJ,CAFgC;;EAIhC,WAAO/C,CAAP;EACD;EApCS,CAAZ;EAsCAwO,KAAK,CAAC,eAAD,CAAL,GAAyBA,KAAK,CAAC,WAAD,CAA9B;EACA,IAAIQ,UAAU,GAAGR,KAAjB;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAIS,YAAY,GAAG,UAAnB;EACA,IAAIC,QAAQ,GAAG;EACbnM,EAAAA,IAAI,EAAE,IAAIU,IAAJ,GAAWkG,WAAX,EADO;EAEbxG,EAAAA,KAAK,EAAE,CAFM;EAGbsF,EAAAA,IAAI,EAAE;EAHO,CAAf;;EAMA,IAAI0G,WAAW,GAAG,SAASA,WAAT,CAAqBnP,CAArB,EAAwBU,GAAxB,EAA6BgN,KAA7B,EAAoC;EACpD,MAAIhN,GAAG,CAACjB,MAAJ,KAAe,CAAnB,EAAsB;EACpB,WAAOO,CAAP;EACD;;EAED,MAAIoP,KAAK,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,QAAlC,EAA4C,QAA5C,EAAsD,aAAtD,CAAZ;;EAEA,OAAK,IAAI5P,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4P,KAAK,CAAC3P,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;EACrC,QAAI6G,GAAG,GAAG3F,GAAG,CAAClB,CAAD,CAAH,IAAUkO,KAAK,CAAC0B,KAAK,CAAC5P,CAAD,CAAN,CAAf,IAA6B0P,QAAQ,CAACE,KAAK,CAAC5P,CAAD,CAAN,CAArC,IAAmD,CAA7D;EACAQ,IAAAA,CAAC,GAAGA,CAAC,CAACoP,KAAK,CAAC5P,CAAD,CAAN,CAAD,CAAY6G,GAAZ,CAAJ;EACD;;EAED,SAAOrG,CAAP;EACD,CAbD;;;EAgBA,IAAIqP,YAAY,GAAG,SAASA,YAAT,CAAsBrP,CAAtB,EAAyBI,GAAzB,EAA8BsN,KAA9B,EAAqC;EACtD;EACA,MAAIzM,MAAM,CAAC4E,IAAP,CAAYzF,GAAZ,EAAiBX,MAAjB,KAA4B,CAAhC,EAAmC;EACjC,WAAOO,CAAP;EACD;;EAEDI,EAAAA,GAAG,GAAGa,MAAM,CAACqO,MAAP,CAAc,EAAd,EAAkBJ,QAAlB,EAA4BxB,KAA5B,EAAmCtN,GAAnC,CAAN;EACA,MAAIyF,IAAI,GAAG5E,MAAM,CAAC4E,IAAP,CAAYzF,GAAZ,CAAX;;EAEA,OAAK,IAAIZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqG,IAAI,CAACpG,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EACpC,QAAIqJ,IAAI,GAAGhD,IAAI,CAACrG,CAAD,CAAf,CADoC;;EAGpC,QAAIQ,CAAC,CAAC6I,IAAD,CAAD,KAAYvH,SAAZ,IAAyB,OAAOtB,CAAC,CAAC6I,IAAD,CAAR,KAAmB,UAAhD,EAA4D;EAC1D;EACD,KALmC;;;EAQpC,QAAIzI,GAAG,CAACyI,IAAD,CAAH,KAAc,IAAd,IAAsBzI,GAAG,CAACyI,IAAD,CAAH,KAAcvH,SAApC,IAAiDlB,GAAG,CAACyI,IAAD,CAAH,KAAc,EAAnE,EAAuE;EACrE;EACD;;EAED,QAAIxC,GAAG,GAAGjG,GAAG,CAACyI,IAAD,CAAH,IAAa6E,KAAK,CAAC7E,IAAD,CAAlB,IAA4BqG,QAAQ,CAACrG,IAAD,CAApC,IAA8C,CAAxD;EACA7I,IAAAA,CAAC,GAAGA,CAAC,CAAC6I,IAAD,CAAD,CAAQxC,GAAR,CAAJ;EACD;;EAED,SAAOrG,CAAP;EACD,CA1BD;;;EA6BA,IAAIuP,UAAU,GAAG,SAASA,UAAT,CAAoBvP,CAApB,EAAuB6L,KAAvB,EAA8BiC,OAA9B,EAAuC;EACtD,MAAIJ,KAAK,GAAG1N,CAAC,CAACiO,MAAF,IAAYiB,QAAxB,CADsD;;EAGtD,MAAI,OAAOrD,KAAP,KAAiB,QAArB,EAA+B;EAC7B,QAAIA,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAGoD,YAArB,IAAqCjP,CAAC,CAACiK,MAAF,KAAa,KAAtD,EAA6D;EAC3DxF,MAAAA,OAAO,CAACC,IAAR,CAAa,wDAAb;EACAD,MAAAA,OAAO,CAACC,IAAR,CAAa,uDAAb;EACD;;EAED1E,IAAAA,CAAC,CAAC4D,KAAF,GAAUiI,KAAV;EACA,WAAO7L,CAAP;EACD,GAXqD;;;EActDA,EAAAA,CAAC,CAAC4D,KAAF,GAAUH,IAAI,CAAC8K,GAAL,EAAV,CAdsD;;EAgBtD,MAAIvO,CAAC,CAACiO,MAAF,IAAYzC,GAAG,CAACM,QAAJ,CAAa9L,CAAC,CAACiO,MAAf,CAAZ,IAAsChN,MAAM,CAAC4E,IAAP,CAAY7F,CAAC,CAACiO,MAAd,EAAsBxO,MAAtB,GAA+B,CAAzE,EAA4E;EAC1E,QAAI+P,GAAG,GAAGH,YAAY,CAACrP,CAAD,EAAI0N,KAAJ,EAAWwB,QAAX,CAAtB;;EAEA,QAAIM,GAAG,CAACC,OAAJ,EAAJ,EAAmB;EACjBzP,MAAAA,CAAC,CAAC4D,KAAF,GAAU4L,GAAG,CAAC5L,KAAd;EACD;EACF,GAtBqD;;;EAyBtD,MAAIiI,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKvK,SAA5B,IAAyCuK,KAAK,KAAK,EAAvD,EAA2D;EACzD,WAAO7L,CAAP,CADyD;EAE1D,GA3BqD;;;EA8BtD,MAAIwL,GAAG,CAACE,MAAJ,CAAWG,KAAX,MAAsB,IAA1B,EAAgC;EAC9B7L,IAAAA,CAAC,CAAC4D,KAAF,GAAUiI,KAAK,CAACe,OAAN,EAAV;EACA,WAAO5M,CAAP;EACD,GAjCqD;;;EAoCtD,MAAIwL,GAAG,CAACxK,OAAJ,CAAY6K,KAAZ,MAAuB,IAA3B,EAAiC;EAC/B7L,IAAAA,CAAC,GAAGmP,WAAW,CAACnP,CAAD,EAAI6L,KAAJ,EAAW6B,KAAX,CAAf;EACA,WAAO1N,CAAP;EACD,GAvCqD;;;EA0CtD,MAAIwL,GAAG,CAACM,QAAJ,CAAaD,KAAb,MAAwB,IAA5B,EAAkC;EAChC;EACA,QAAIA,KAAK,CAACjI,KAAV,EAAiB;EACf5D,MAAAA,CAAC,CAAC4D,KAAF,GAAUiI,KAAK,CAACjI,KAAhB;EACA5D,MAAAA,CAAC,CAACwE,EAAF,GAAOqH,KAAK,CAACrH,EAAb;EACA,aAAOxE,CAAP;EACD;;EAEDA,IAAAA,CAAC,GAAGqP,YAAY,CAACrP,CAAD,EAAI6L,KAAJ,EAAW6B,KAAX,CAAhB;EACA,WAAO1N,CAAP;EACD,GApDqD;;;EAuDtD,MAAI,OAAO6L,KAAP,KAAiB,QAArB,EAA+B;EAC7B,WAAO7L,CAAP;EACD,GAzDqD;;;EA4DtD6L,EAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,8DAAd,EAA8E,EAA9E,CAAR;EACA0F,EAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR;EACA0F,EAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,KAAd,EAAqB,GAArB,EAA0BtG,IAA1B,EAAR,CA9DsD;;EAgEtD,MAAImP,UAAU,CAACjP,cAAX,CAA0B8L,KAA1B,MAAqC,IAAzC,EAA+C;EAC7C7L,IAAAA,CAAC,GAAGgP,UAAU,CAACnD,KAAD,CAAV,CAAkB7L,CAAlB,CAAJ;EACA,WAAOA,CAAP;EACD,GAnEqD;;;EAsEtD,OAAK,IAAIR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6O,QAAQ,CAAC5O,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;EACxC,QAAIgI,CAAC,GAAGqE,KAAK,CAACpE,KAAN,CAAY4G,QAAQ,CAAC7O,CAAD,CAAR,CAAYoO,GAAxB,CAAR;;EAEA,QAAIpG,CAAJ,EAAO;EACL;EACA,UAAIkI,IAAI,GAAGrB,QAAQ,CAAC7O,CAAD,CAAR,CAAYqO,KAAZ,CAAkB7N,CAAlB,EAAqBwH,CAArB,EAAwBsG,OAAxB,CAAX;;EAEA,UAAI4B,IAAI,KAAK,IAAT,IAAiBA,IAAI,CAACD,OAAL,EAArB,EAAqC;EACnC,eAAOC,IAAP;EACD;EACF;EACF;;EAED,MAAI1P,CAAC,CAACiK,MAAF,KAAa,KAAjB,EAAwB;EACtBxF,IAAAA,OAAO,CAACC,IAAR,CAAa,2CAA2CmH,KAA3C,GAAmD,GAAhE;EACD;;EAED7L,EAAAA,CAAC,CAAC4D,KAAF,GAAU,IAAV;EACA,SAAO5D,CAAP;EACD,CAzFD;;EA2FA,IAAI6L,KAAK,GAAG0D,UAAZ;EAEA,IAAII,SAAS,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,CAAhB;EACA,IAAIC,QAAQ,GAAG,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgC,WAAhC,EAA6C,UAA7C,EAAyD,QAAzD,EAAmE,UAAnE,CAAf;EACA,IAAIC,IAAI,GAAG;EACT,WAAS,SAASrF,KAAT,GAAiB;EACxB,WAAOmF,SAAP;EACD,GAHQ;EAIT,UAAQ,SAASlF,IAAT,GAAgB;EACtB,WAAOmF,QAAP;EACD,GANQ;EAOTlF,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaC,IAAb,EAAmB;EACtBgF,IAAAA,SAAS,GAAGhF,IAAI,CAAC,OAAD,CAAJ,IAAiBgF,SAA7B;EACAC,IAAAA,QAAQ,GAAGjF,IAAI,CAAC,MAAD,CAAJ,IAAgBiF,QAA3B;EACD,GAVQ;EAWTE,EAAAA,OAAO,EAAE;EACPC,IAAAA,EAAE,EAAE,CADG;EAEPC,IAAAA,EAAE,EAAE,CAFG;EAGPC,IAAAA,EAAE,EAAE,CAHG;EAIPC,IAAAA,EAAE,EAAE,CAJG;EAKPC,IAAAA,EAAE,EAAE,CALG;EAMPC,IAAAA,EAAE,EAAE,CANG;EAOPC,IAAAA,EAAE,EAAE,CAPG;EAQPC,IAAAA,IAAI,EAAE,CARC;EASPC,IAAAA,IAAI,EAAE,CATC;EAUPC,IAAAA,IAAI,EAAE,CAVC;EAWPC,IAAAA,IAAI,EAAE,CAXC;EAYPC,IAAAA,KAAK,EAAE;EAZA;EAXA,CAAX;EA2BA,IAAIC,gBAAgB,GAAG,IAAvB;EACA,IAAIC,UAAU,GAAG;EACfC,EAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;EACpC,WAAOF,gBAAP;EACD,GAHc;EAIfjG,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAamG,YAAb,EAA2B;EAC9BF,IAAAA,gBAAgB,GAAGE,YAAnB;EACD;EANc,CAAjB;EAUA;;EAEA,IAAIC,SAAS,GAAG,SAASA,SAAT,CAAmB9Q,CAAnB,EAAsB;EACpC,MAAI8C,MAAM,GAAG9C,CAAC,CAAC6G,QAAF,GAAakC,OAAb,CAAqBjG,MAAlC;EACA,SAAO,CAACA,MAAD,GAAU,GAAV,GAAgB0I,GAAG,CAACsB,cAAJ,CAAmBhK,MAAnB,EAA2B,GAA3B,CAAvB;EACD,CAHD;;EAKA,IAAIiO,OAAO,GAAGD,SAAd;;EAEA,IAAIE,eAAe,GAAG,SAASA,eAAT,CAAyB9K,GAAzB,EAA8B;EAClD,MAAI0K,UAAU,CAACC,YAAX,EAAJ,EAA+B;EAC7B,WAAOrF,GAAG,CAACW,SAAJ,CAAcjG,GAAd,CAAP;EACD;;EAED,SAAOA,GAAP;EACD,CAND;;EAQA,IAAIS,MAAM,GAAG;EACXpD,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavD,CAAb,EAAgB;EACnB,WAAOgR,eAAe,CAAChR,CAAC,CAACiR,OAAF,EAAD,CAAtB;EACD,GAHU;EAIX,eAAa,SAASC,QAAT,CAAkBlR,CAAlB,EAAqB;EAChC,WAAOgR,eAAe,CAACnB,IAAI,CAAC,OAAD,CAAJ,GAAgB7P,CAAC,CAACuD,GAAF,EAAhB,CAAD,CAAtB;EACD,GANU;EAOX,gBAAc,SAAS4N,SAAT,CAAmBnR,CAAnB,EAAsB;EAClC,WAAOA,CAAC,CAACuD,GAAF,EAAP;EACD,GATU;EAUX,iBAAe,SAAS6N,UAAT,CAAoBpR,CAApB,EAAuB;EACpC,WAAOwL,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACuD,GAAF,EAAZ,CAAP;EACD,GAZU;EAaX,aAAW,SAAS8N,MAAT,CAAgBrR,CAAhB,EAAmB;EAC5B,WAAOwL,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACuD,GAAF,EAAZ,CAAP;EACD,GAfU;EAgBXkF,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAczI,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACyI,IAAF,EAAP;EACD,GAlBU;EAmBX,kBAAgB,SAAS6I,WAAT,CAAqBtR,CAArB,EAAwB;EACtC,WAAOwL,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACyI,IAAF,EAAZ,CAAP;EACD,GArBU;EAsBX,cAAY,SAAS8I,OAAT,CAAiBvR,CAAjB,EAAoB;EAC9B,WAAOwL,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACyI,IAAF,EAAZ,CAAP;EACD,GAxBU;EAyBXtF,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAenD,CAAf,EAAkB;EACvB,WAAOgR,eAAe,CAAChR,CAAC,CAACwR,SAAF,EAAD,CAAtB;EACD,GA3BU;EA4BX,iBAAe,SAASC,UAAT,CAAoBzR,CAApB,EAAuB;EACpC,WAAOgR,eAAe,CAACzG,QAAQ,CAAC,OAAD,CAAR,GAAoBvK,CAAC,CAACmD,KAAF,EAApB,CAAD,CAAtB;EACD,GA9BU;EA+BX,kBAAgB,SAASuO,WAAT,CAAqB1R,CAArB,EAAwB;EACtC,WAAOA,CAAC,CAACmD,KAAF,EAAP;EACD,GAjCU;EAkCX,mBAAiB,SAASwO,YAAT,CAAsB3R,CAAtB,EAAyB;EACxC,WAAOwL,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACmD,KAAF,EAAZ,CAAP;EACD,GApCU;EAqCX,eAAa,SAASyO,QAAT,CAAkB5R,CAAlB,EAAqB;EAChC,WAAOwL,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmD,KAAF,EAAZ,CAAP;EACD,GAvCU;EAwCX,eAAa,SAAS0O,QAAT,CAAkB7R,CAAlB,EAAqB;EAChC,WAAOwL,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmD,KAAF,KAAY,CAAxB,CAAP;EACD,GA1CU;EA2CX;EACAJ,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/C,CAAd,EAAiB;EACrB,QAAI+C,IAAI,GAAG/C,CAAC,CAAC+C,IAAF,EAAX;;EAEA,QAAIA,IAAI,GAAG,CAAX,EAAc;EACZ,aAAOA,IAAP;EACD;;EAEDA,IAAAA,IAAI,GAAGqG,IAAI,CAACC,GAAL,CAAStG,IAAT,CAAP;EACA,WAAOA,IAAI,GAAG,KAAd;EACD,GArDU;EAsDX,gBAAc,SAAS+O,SAAT,CAAmB9R,CAAnB,EAAsB;EAClC,QAAI+C,IAAI,GAAG/C,CAAC,CAAC+C,IAAF,EAAX;;EAEA,QAAIA,IAAI,GAAG,CAAX,EAAc;EACZ,aAAO,IAAIkI,MAAJ,CAAWwB,MAAM,CAACzM,CAAC,CAAC+C,IAAF,EAAD,CAAN,CAAiBsJ,MAAjB,CAAwB,CAAxB,EAA2B,CAA3B,CAAX,CAAP;EACD;;EAEDtJ,IAAAA,IAAI,GAAGqG,IAAI,CAACC,GAAL,CAAStG,IAAT,CAAP;EACA,WAAOA,IAAI,GAAG,KAAd;EACD,GA/DU;EAgEX,cAAY,SAASgP,OAAT,CAAiB/R,CAAjB,EAAoB;EAC9B,QAAI+C,IAAI,GAAG/C,CAAC,CAAC+C,IAAF,EAAX;EACA,QAAIiP,UAAU,GAAGjP,IAAI,GAAG,CAAxB;EACA,QAAImD,GAAG,GAAGsF,GAAG,CAACQ,OAAJ,CAAY5C,IAAI,CAACC,GAAL,CAAStG,IAAT,CAAZ,EAA4B,CAA5B,CAAV,CAH8B;;EAK9B,QAAIiP,UAAJ,EAAgB;EACd;EACA9L,MAAAA,GAAG,GAAGsF,GAAG,CAACQ,OAAJ,CAAY9F,GAAZ,EAAiB,CAAjB,CAAN;EACAA,MAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,WAAOA,GAAP;EACD,GA5EU;EA6EX+L,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjS,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACiS,IAAF,EAAP;EACD,GA/EU;EAgFX,aAAW,SAASC,MAAT,CAAgBlS,CAAhB,EAAmB;EAC5B,WAAO,GAAGiL,MAAH,CAAUjL,CAAC,CAACmS,MAAF,EAAV,EAAsB,GAAtB,EAA2BlH,MAA3B,CAAkCO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACwI,MAAF,EAAZ,CAAlC,CAAP;EACD,GAlFU;EAmFXhF,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcxD,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoS,MAAF,EAAP;EACD,GArFU;EAsFX,cAAY,SAASC,OAAT,CAAiBrS,CAAjB,EAAoB;EAC9B,WAAOwL,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACoS,MAAF,EAAZ,CAAP;EACD,GAxFU;EAyFX,aAAW,SAASD,MAAT,CAAgBnS,CAAhB,EAAmB;EAC5B,WAAOA,CAAC,CAACmS,MAAF,EAAP;EACD,GA3FU;EA4FX,iBAAe,SAASG,SAAT,CAAmBtS,CAAnB,EAAsB;EACnC,WAAOwL,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmS,MAAF,EAAZ,CAAP;EACD,GA9FU;EA+FX3J,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBxI,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAACwI,MAAF,EAAP;EACD,GAjGU;EAkGX,gBAAc,SAAS+J,SAAT,CAAmBvS,CAAnB,EAAsB;EAClC,WAAOwL,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACwI,MAAF,EAAZ,CAAP;EACD,GApGU;EAqGXD,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBvI,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAACuI,MAAF,EAAP;EACD,GAvGU;EAwGX,gBAAc,SAASiK,SAAT,CAAmBxS,CAAnB,EAAsB;EAClC,WAAOwL,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACuI,MAAF,EAAZ,CAAP;EACD,GA1GU;EA2GX4C,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcnL,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACmL,IAAF,EAAP;EACD,GA7GU;EA8GX+C,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBlO,CAAjB,EAAoB;EAC3B,WAAO,MAAMA,CAAC,CAACkO,OAAF,EAAb;EACD,GAhHU;EAiHXC,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBnO,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAACmO,MAAF,EAAP;EACD,GAnHU;EAoHXsE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAazS,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACyS,GAAF,EAAP;EACD,GAtHU;EAuHXC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1S,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC0S,IAAF,EAAP;EACD,GAzHU;EA0HX7L,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkB7G,CAAlB,EAAqB;EAC7B,WAAOA,CAAC,CAAC6G,QAAF,GAAaxE,IAApB;EACD,GA5HU;EA6HXS,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB9C,CAAhB,EAAmB;EACzB,WAAO+Q,OAAO,CAAC/Q,CAAD,CAAd;EACD,GA/HU;EAgIX2S,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB3S,CAAjB,EAAoB;EAC3B,WAAO,GAAGiL,MAAH,CAAUjL,CAAC,CAAC+C,IAAF,EAAV,EAAoB,GAApB,EAAyBkI,MAAzB,CAAgCO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmD,KAAF,KAAY,CAAxB,CAAhC,EAA4D,GAA5D,EAAiE8H,MAAjE,CAAwEO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACyI,IAAF,EAAZ,CAAxE,CAAP;EACD,GAlIU;EAmIX;EACA,gBAAc,SAASmK,SAAT,CAAmB5S,CAAnB,EAAsB;EAClC,WAAO,GAAGiL,MAAH,CAAUO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmD,KAAF,KAAY,CAAxB,CAAV,EAAsC,GAAtC,EAA2C8H,MAA3C,CAAkDO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACyI,IAAF,EAAZ,CAAlD,EAAyE,GAAzE,EAA8EwC,MAA9E,CAAqFjL,CAAC,CAAC+C,IAAF,EAArF,CAAP;EACD,GAtIU;EAuIX;EACA,gBAAc,SAAS8P,SAAT,CAAmB7S,CAAnB,EAAsB;EAClC,WAAO,GAAGiL,MAAH,CAAUO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACyI,IAAF,EAAZ,CAAV,EAAiC,GAAjC,EAAsCwC,MAAtC,CAA6CO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmD,KAAF,KAAY,CAAxB,CAA7C,EAAyE,GAAzE,EAA8E8H,MAA9E,CAAqFjL,CAAC,CAAC+C,IAAF,EAArF,CAAP;EACD,GA1IU;EA2IX;EACA,WAAS,SAAS+P,IAAT,CAAc9S,CAAd,EAAiB;EACxB,WAAO,GAAGiL,MAAH,CAAUO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmD,KAAF,KAAY,CAAxB,CAAV,EAAsC,GAAtC,EAA2C8H,MAA3C,CAAkDO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACyI,IAAF,EAAZ,CAAlD,CAAP;EACD,GA9IU;EA+IX;EACA;EACAsK,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa/S,CAAb,EAAgB;EACnB,QAAI+C,IAAI,GAAG/C,CAAC,CAAC2G,MAAF,CAAS,UAAT,CAAX;EACA,QAAIxD,KAAK,GAAGqI,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmD,KAAF,KAAY,CAAxB,CAAZ,CAFmB;;EAInB,QAAIsF,IAAI,GAAG+C,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACyI,IAAF,EAAZ,CAAX;EACA,QAAIjF,IAAI,GAAGgI,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACgT,GAAF,EAAZ,CAAX;EACA,QAAIxK,MAAM,GAAGgD,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACwI,MAAF,EAAZ,CAAb;EACA,QAAID,MAAM,GAAGiD,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACuI,MAAF,EAAZ,CAAb;EACA,QAAI0K,EAAE,GAAGzH,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACsI,WAAF,EAAZ,EAA6B,CAA7B,CAAT;;EACA,QAAIxF,MAAM,GAAGiO,OAAO,CAAC/Q,CAAD,CAApB;;EACA,WAAO,GAAGiL,MAAH,CAAUlI,IAAV,EAAgB,GAAhB,EAAqBkI,MAArB,CAA4B9H,KAA5B,EAAmC,GAAnC,EAAwC8H,MAAxC,CAA+CxC,IAA/C,EAAqD,GAArD,EAA0DwC,MAA1D,CAAiEzH,IAAjE,EAAuE,GAAvE,EAA4EyH,MAA5E,CAAmFzC,MAAnF,EAA2F,GAA3F,EAAgGyC,MAAhG,CAAuG1C,MAAvG,EAA+G,GAA/G,EAAoH0C,MAApH,CAA2HgI,EAA3H,EAA+HhI,MAA/H,CAAsInI,MAAtI,CAAP,CAVmB;EAWpB,GA5JU;EA6JX,eAAa,SAASoQ,QAAT,CAAkBlT,CAAlB,EAAqB;EAChC,QAAImD,KAAK,GAAGqI,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACmD,KAAF,KAAY,CAAxB,CAAZ,CADgC;;EAGhC,QAAIsF,IAAI,GAAG+C,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACyI,IAAF,EAAZ,CAAX;EACA,WAAO,GAAGwC,MAAH,CAAUjL,CAAC,CAAC+C,IAAF,EAAV,EAAoB,GAApB,EAAyBkI,MAAzB,CAAgC9H,KAAhC,EAAuC,GAAvC,EAA4C8H,MAA5C,CAAmDxC,IAAnD,CAAP,CAJgC;EAKjC,GAlKU;EAmKX,aAAW,SAAS0K,MAAT,CAAgBnT,CAAhB,EAAmB;EAC5B,WAAO,IAAIyD,IAAJ,CAASzD,CAAC,CAAC4D,KAAX,EAAkBwP,WAAlB,EAAP,CAD4B;EAE7B,GArKU;EAsKX;EACAC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrT,CAAd,EAAiB;EACrB,WAAO,GAAGiL,MAAH,CAAUV,QAAQ,CAAC,OAAD,CAAR,GAAoBvK,CAAC,CAACmD,KAAF,EAApB,CAAV,EAA0C,GAA1C,EAA+C8H,MAA/C,CAAsDO,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACyI,IAAF,EAAZ,CAAtD,EAA6E,IAA7E,EAAmFwC,MAAnF,CAA0FjL,CAAC,CAACiS,IAAF,EAA1F,CAAP;EACD,GAzKU;EA0KX,aAAW,SAASqB,MAAT,CAAgBtT,CAAhB,EAAmB;EAC5B,WAAO,GAAGiL,MAAH,CAAUV,QAAQ,CAAC,OAAD,CAAR,GAAoBvK,CAAC,CAACmD,KAAF,EAApB,CAAV,EAA0C,GAA1C,EAA+C8H,MAA/C,CAAsDO,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACyI,IAAF,EAAZ,CAAtD,EAA6E,IAA7E,EAAmFwC,MAAnF,CAA0FjL,CAAC,CAACmS,MAAF,EAA1F,EAAsG,GAAtG,EAA2GlH,MAA3G,CAAkHO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACwI,MAAF,EAAZ,CAAlH,CAAP;EACD,GA5KU;EA6KX,eAAa,SAAS+K,QAAT,CAAkBvT,CAAlB,EAAqB;EAChC,WAAO,GAAGiL,MAAH,CAAUV,QAAQ,CAAC,OAAD,CAAR,GAAoBvK,CAAC,CAACmD,KAAF,EAApB,CAAV,EAA0C,GAA1C,EAA+C8H,MAA/C,CAAsDO,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACyI,IAAF,EAAZ,CAAtD,EAA6E,IAA7E,EAAmFwC,MAAnF,CAA0FjL,CAAC,CAAC+C,IAAF,EAA1F,CAAP;EACD,GA/KU;EAgLX,cAAY,SAASyQ,OAAT,CAAiBxT,CAAjB,EAAoB;EAC9B,WAAO,GAAGiL,MAAH,CAAU4E,IAAI,CAAC,OAAD,CAAJ,GAAgB7P,CAAC,CAACuD,GAAF,EAAhB,CAAV,EAAoC,GAApC,EAAyC0H,MAAzC,CAAgD+F,eAAe,CAACzG,QAAQ,CAAC,OAAD,CAAR,GAAoBvK,CAAC,CAACmD,KAAF,EAApB,CAAD,CAA/D,EAAiG,GAAjG,EAAsG8H,MAAtG,CAA6GO,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACyI,IAAF,EAAZ,CAA7G,CAAP;EACD,GAlLU;EAmLX,eAAa,SAASgL,QAAT,CAAkBzT,CAAlB,EAAqB;EAChC,WAAO,GAAGiL,MAAH,CAAUjL,CAAC,CAACiR,OAAF,EAAV,EAAuB,GAAvB,EAA4BhG,MAA5B,CAAmC+F,eAAe,CAAChR,CAAC,CAACwR,SAAF,EAAD,CAAlD,EAAmE,GAAnE,EAAwEvG,MAAxE,CAA+EO,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACyI,IAAF,EAAZ,CAA/E,EAAsG,IAAtG,EAA4GwC,MAA5G,CAAmHjL,CAAC,CAACiS,IAAF,EAAnH,CAAP;EACD,GArLU;EAsLX,kBAAgB,SAASyB,UAAT,CAAoB1T,CAApB,EAAuB;EACrC,WAAO,GAAGiL,MAAH,CAAUjL,CAAC,CAACiR,OAAF,EAAV,EAAuB,GAAvB,EAA4BhG,MAA5B,CAAmC+F,eAAe,CAAChR,CAAC,CAACwR,SAAF,EAAD,CAAlD,EAAmE,GAAnE,EAAwEvG,MAAxE,CAA+EO,GAAG,CAACc,OAAJ,CAAYtM,CAAC,CAACyI,IAAF,EAAZ,CAA/E,EAAsG,IAAtG,EAA4GwC,MAA5G,CAAmHjL,CAAC,CAACmS,MAAF,EAAnH,EAA+H,GAA/H,EAAoIlH,MAApI,CAA2IO,GAAG,CAACQ,OAAJ,CAAYhM,CAAC,CAACwI,MAAF,EAAZ,CAA3I,CAAP;EACD;EAxLU,CAAb;;EA2LA,IAAIsH,OAAO,GAAG;EACZ,cAAY,KADA;EAEZ,gBAAc,OAFF;EAGZ,cAAY,KAHA;EAIZ,cAAY,SAJA;EAKZ,aAAW,MALC;EAMZ,cAAY,MANA;EAOZtL,EAAAA,EAAE,EAAE,UAPQ;EAQZ,aAAW,YARC;EASZ,eAAa,cATD;EAUZ,eAAa,WAVD;EAWZ,cAAY,UAXA;EAYZ,gBAAc,MAZF;EAaZ,mBAAiB,SAbL;EAcZmP,EAAAA,GAAG,EAAE,YAdO;EAeZC,EAAAA,GAAG,EAAE,YAfO;EAgBZC,EAAAA,GAAG,EAAE,SAhBO;EAiBZ,gBAAc,SAjBF;EAkBZ,gBAAc,YAlBF;EAmBZ,gBAAc,YAnBF;EAoBZ,mBAAiB,YApBL;EAqBZ,gBAAc,SArBF;EAsBZ,cAAY;EAtBA,CAAd;EAwBA5S,MAAM,CAAC4E,IAAP,CAAYiK,OAAZ,EAAqBhK,OAArB,CAA6B,UAAUC,CAAV,EAAa;EACxC,SAAOY,MAAM,CAACZ,CAAD,CAAN,GAAYY,MAAM,CAACmJ,OAAO,CAAC/J,CAAD,CAAR,CAAzB;EACD,CAFD;;EAIA,IAAI+N,WAAW,GAAG,SAASA,WAAT,CAAqB9T,CAArB,EAAwB;EACxC,MAAIkG,GAAG,GAAG6E,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E,CADwC;;EAIxC,MAAI/K,CAAC,CAACyP,OAAF,OAAgB,IAApB,EAA0B;EACxB,WAAO,EAAP;EACD,GANuC;;;EASxC,MAAI9I,MAAM,CAAC5G,cAAP,CAAsBmG,GAAtB,CAAJ,EAAgC;EAC9B,QAAI6N,GAAG,GAAGpN,MAAM,CAACT,GAAD,CAAN,CAAYlG,CAAZ,KAAkB,EAA5B;;EAEA,QAAIkG,GAAG,KAAK,MAAZ,EAAoB;EAClB6N,MAAAA,GAAG,GAAGtH,MAAM,CAACsH,GAAD,CAAZ;;EAEA,UAAI7N,GAAG,KAAK,MAAZ,EAAoB;EAClB6N,QAAAA,GAAG,GAAG/C,eAAe,CAAC+C,GAAD,CAArB;EACD;EACF;;EAED,WAAOA,GAAP;EACD,GArBuC;;;EAwBxC,MAAI7N,GAAG,CAAC8N,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;EAC3B,QAAIC,QAAQ,GAAG,YAAf;EACA/N,IAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY8N,QAAZ,EAAsB,UAAUC,CAAV,EAAaC,GAAb,EAAkB;EAC5CA,MAAAA,GAAG,GAAGA,GAAG,CAACvU,WAAJ,GAAkBC,IAAlB,EAAN;;EAEA,UAAI8G,MAAM,CAAC5G,cAAP,CAAsBoU,GAAtB,CAAJ,EAAgC;EAC9B,YAAIC,IAAI,GAAG3H,MAAM,CAAC9F,MAAM,CAACwN,GAAD,CAAN,CAAYnU,CAAZ,CAAD,CAAjB;;EAEA,YAAImU,GAAG,KAAK,MAAZ,EAAoB;EAClB,iBAAOnD,eAAe,CAACoD,IAAD,CAAtB;EACD;;EAED,eAAOA,IAAP;EACD;;EAED,aAAO,EAAP;EACD,KAdK,CAAN;EAeA,WAAOlO,GAAP;EACD;;EAED,SAAOlG,CAAC,CAAC2G,MAAF,CAAS,WAAT,CAAP;EACD,CA7CD;;EA+CA,IAAI0N,QAAQ,GAAGP,WAAf;EAEA,IAAI7H,GAAG,GAAGT,GAAG,CAACQ,OAAd;EACA,IAAIc,cAAc,GAAGtB,GAAG,CAACsB,cAAzB;EACA;EACA;;EAEA,IAAIhN,OAAO,GAAG;EACZwU,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWtU,CAAX,EAAc;EACf,WAAOA,CAAC,CAACyS,GAAF,EAAP;EACD,GAHW;EAIZ8B,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYvU,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACyS,GAAF,EAAP;EACD,GANW;EAOZ+B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaxU,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACyS,GAAF,EAAP;EACD,GATW;EAUZgC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAczU,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACyS,GAAF,OAAY,IAAZ,GAAmB,aAAnB,GAAmC,eAA1C;EACD,GAZW;EAaZ;EACAiC,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW1U,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC+C,IAAF,EAAP;EACD,GAhBW;EAiBZ4R,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY3U,CAAZ,EAAe;EACjB;EACA,WAAOgK,QAAQ,CAACyC,MAAM,CAACzM,CAAC,CAAC+C,IAAF,EAAD,CAAN,CAAiBsJ,MAAjB,CAAwB,CAAxB,EAA2B,CAA3B,CAAD,EAAgC,EAAhC,CAAf;EACD,GApBW;EAqBZuI,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa5U,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC+C,IAAF,EAAP;EACD,GAvBW;EAwBZ8R,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc7U,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC+C,IAAF,EAAP;EACD,GA1BW;EA2BZ+R,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe9U,CAAf,EAAkB;EACvB,WAAO,MAAMA,CAAC,CAAC+C,IAAF,EAAb;EACD,GA7BW;EA8BZ;EACA;EACAgS,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW/U,CAAX,EAAc;EACf,WAAOA,CAAC,CAACkO,OAAF,EAAP;EACD,GAlCW;EAmCZ8G,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYhV,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACkO,OAAF,EAAP;EACD,GArCW;EAsCZ+G,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajV,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACkO,OAAF,EAAP;EACD,GAxCW;EAyCZgH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclV,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACkO,OAAF,EAAP;EACD,GA3CW;EA4CZ;EACAiH,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWnV,CAAX,EAAc;EACf,WAAOA,CAAC,CAACmD,KAAF,KAAY,CAAnB;EACD,GA/CW;EAgDZiS,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYpV,CAAZ,EAAe;EACjB,WAAOiM,GAAG,CAACjM,CAAC,CAACmD,KAAF,KAAY,CAAb,CAAV;EACD,GAlDW;EAmDZkS,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAarV,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,aAAT,CAAP;EACD,GArDW;EAsDZ2O,EAAAA,IAAI,EAAE,SAASA,IAAT,CAActV,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,OAAT,CAAP;EACD,GAxDW;EAyDZ;EACA4O,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWvV,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC0I,IAAF,EAAP;EACD,GA5DW;EA6DZ8M,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxV,CAAZ,EAAe;EACjB,WAAOiM,GAAG,CAACjM,CAAC,CAAC0I,IAAF,EAAD,CAAV;EACD,GA/DW;EAgEZ;EACA;EACA;EACAM,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWhJ,CAAX,EAAc;EACf,WAAOA,CAAC,CAACyI,IAAF,EAAP;EACD,GArEW;EAsEZgN,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYzV,CAAZ,EAAe;EACjB,WAAOiM,GAAG,CAACjM,CAAC,CAACyI,IAAF,EAAD,CAAV;EACD,GAxEW;EAyEZ;EACAiN,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW1V,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC2V,SAAF,EAAP;EACD,GA5EW;EA6EZC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY5V,CAAZ,EAAe;EACjB,WAAOiM,GAAG,CAACjM,CAAC,CAAC2V,SAAF,EAAD,CAAV;EACD,GA/EW;EAgFZE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa7V,CAAb,EAAgB;EACnB,WAAOiM,GAAG,CAACjM,CAAC,CAAC2V,SAAF,EAAD,EAAgB,CAAhB,CAAV;EACD,GAlFW;EAmFZ;EACA;EACA;EACAG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW9V,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC2G,MAAF,CAAS,WAAT,CAAP;EACD,GAxFW;EAyFZoP,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/V,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,WAAT,CAAP;EACD,GA3FW;EA4FZqP,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAahW,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,WAAT,CAAP;EACD,GA9FW;EA+FZsP,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjW,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,KAAT,CAAP;EACD,GAjGW;EAkGZuP,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAelW,CAAf,EAAkB;EACvB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,KAAT,EAAgB,CAAhB,CAAP;EACD,GApGW;EAqGZwP,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWnW,CAAX,EAAc;EACf,WAAOA,CAAC,CAACuD,GAAF,EAAP;EACD,GAvGW;EAwGZ6S,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYpW,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACuD,GAAF,EAAP;EACD,GA1GW;EA2GZ8S,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAarW,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,WAAT,CAAP;EACD,GA7GW;EA8GZ2P,EAAAA,IAAI,EAAE,SAASA,IAAT,CAActW,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,KAAT,CAAP;EACD,GAhHW;EAiHZ4P,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAevW,CAAf,EAAkB;EACvB,WAAOA,CAAC,CAAC2G,MAAF,CAAS,KAAT,EAAgB,CAAhB,CAAP;EACD,GAnHW;EAoHZ;EACA6P,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWxW,CAAX,EAAc;EACf,WAAOA,CAAC,CAACmL,IAAF,GAASiB,WAAT,EAAP;EACD,GAvHW;EAwHZqK,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYzW,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACmL,IAAF,GAASiB,WAAT,EAAP;EACD,GA1HW;EA2HZsK,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa1W,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACmL,IAAF,GAASiB,WAAT,EAAP;EACD,GA7HW;EA8HZuK,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc3W,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACmL,IAAF,GAASiB,WAAT,EAAP;EACD,GAhIW;EAiIZ;EACAtE,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW9H,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC4W,GAAF,EAAP;EACD,GApIW;EAqIZC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY7W,CAAZ,EAAe;EACjB,WAAOiM,GAAG,CAACjM,CAAC,CAAC4W,GAAF,EAAD,CAAV;EACD,GAvIW;EAwIZE,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW9W,CAAX,EAAc;EACf,WAAOA,CAAC,CAACwD,IAAF,EAAP;EACD,GA1IW;EA2IZuT,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/W,CAAZ,EAAe;EACjB,WAAOiM,GAAG,CAACjM,CAAC,CAACwD,IAAF,EAAD,CAAV;EACD,GA7IW;EA8IZ;EACAgE,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWxH,CAAX,EAAc;EACf,WAAOA,CAAC,CAACwI,MAAF,EAAP;EACD,GAjJW;EAkJZwO,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYhX,CAAZ,EAAe;EACjB,WAAOiM,GAAG,CAACjM,CAAC,CAACwI,MAAF,EAAD,CAAV;EACD,GApJW;EAqJZxI,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWwB,EAAX,EAAe;EAChB,WAAOA,EAAE,CAAC+G,MAAH,EAAP;EACD,GAvJW;EAwJZ0O,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYjX,CAAZ,EAAe;EACjB,WAAOiM,GAAG,CAACjM,CAAC,CAACuI,MAAF,EAAD,CAAV;EACD,GA1JW;EA2JZ;EACA2O,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWlX,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC4D,KAAF,GAAU5D,CAAC,CAACgL,OAAF,CAAU,KAAV,EAAiBpH,KAAlC;EACD,GA9JW;EA+JZ;EACAuT,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWnX,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC6G,QAAF,GAAaxE,IAApB;EACD,GAlKW;EAmKZ+U,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYpX,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAAC6G,QAAF,GAAaxE,IAApB;EACD,GArKW;EAsKZgV,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAarX,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC6G,QAAF,GAAaxE,IAApB;EACD,GAxKW;EAyKZiV,EAAAA,IAAI,EAAE,SAASA,IAAT,CAActX,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC6G,QAAF,GAAaxE,IAApB;EACD,GA3KW;EA4KZkV,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWvX,CAAX,EAAc;EACf,WAAO8M,cAAc,CAAC9M,CAAC,CAAC6G,QAAF,GAAakC,OAAb,CAAqBjG,MAAtB,CAArB;EACD,GA9KW;EA+KZ0U,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxX,CAAZ,EAAe;EACjB,WAAO8M,cAAc,CAAC9M,CAAC,CAAC6G,QAAF,GAAakC,OAAb,CAAqBjG,MAAtB,CAArB;EACD,GAjLW;EAkLZ2U,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAazX,CAAb,EAAgB;EACnB,WAAO8M,cAAc,CAAC9M,CAAC,CAAC6G,QAAF,GAAakC,OAAb,CAAqBjG,MAAtB,CAArB;EACD,GApLW;EAqLZ4U,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1X,CAAd,EAAiB;EACrB,WAAO8M,cAAc,CAAC9M,CAAC,CAAC6G,QAAF,GAAakC,OAAb,CAAqBjG,MAAtB,EAA8B,GAA9B,CAArB;EACD;EAvLW,CAAd;;EA0LA,IAAI6U,QAAQ,GAAG,SAASA,QAAT,CAAkBC,KAAlB,EAAyBC,EAAzB,EAA6B5V,CAA7B,EAAgC;EAC7C,MAAII,IAAI,GAAGuV,KAAX;EACA,MAAIE,MAAM,GAAGD,EAAb;;EAEA,OAAK,IAAIrY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyC,CAApB,EAAuBzC,CAAC,IAAI,CAA5B,EAA+B;EAC7BM,IAAAA,OAAO,CAACuC,IAAD,CAAP,GAAgBvC,OAAO,CAACgY,MAAD,CAAvB;EACAzV,IAAAA,IAAI,IAAIuV,KAAR;EACAE,IAAAA,MAAM,IAAID,EAAV;EACD;EACF,CATD;;EAWAF,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;;EAEA,IAAII,WAAW,GAAG,SAASA,WAAT,CAAqBrX,GAArB,EAA0B;EAC1C,OAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkB,GAAG,CAACjB,MAAxB,EAAgCD,CAAC,IAAI,CAArC,EAAwC;EACtC,QAAIkB,GAAG,CAAClB,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClB;EACA,WAAK,IAAIsC,CAAC,GAAGtC,CAAC,GAAG,CAAjB,EAAoBsC,CAAC,GAAGpB,GAAG,CAACjB,MAA5B,EAAoCqC,CAAC,IAAI,CAAzC,EAA4C;EAC1C,YAAIpB,GAAG,CAACoB,CAAD,CAAP,EAAY;EACVpB,UAAAA,GAAG,CAAClB,CAAD,CAAH,IAAUkB,GAAG,CAACoB,CAAD,CAAb;EACD;;EAED,YAAIpB,GAAG,CAACoB,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBpB,UAAAA,GAAG,CAACoB,CAAD,CAAH,GAAS,IAAT;EACA;EACD;;EAEDpB,QAAAA,GAAG,CAACoB,CAAD,CAAH,GAAS,IAAT;EACD;EACF;EACF;;EAED,SAAOpB,GAAG,CAACsX,MAAJ,CAAW,UAAUC,EAAV,EAAc;EAC9B,WAAOA,EAAP;EACD,GAFM,CAAP;EAGD,CAtBD;;;EAyBA,IAAIC,eAAe,GAAG,SAASA,eAAT,CAAyBxX,GAAzB,EAA8B;EAClD,OAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkB,GAAG,CAACjB,MAAxB,EAAgCD,CAAC,IAAI,CAArC,EAAwC;EACtC,QAAI2Y,CAAC,GAAGzX,GAAG,CAAClB,CAAD,CAAX,CADsC;;EAGtC,SAAK,IAAIsC,CAAC,GAAGtC,CAAC,GAAG,CAAjB,EAAoBsC,CAAC,GAAGpB,GAAG,CAACjB,MAA5B,EAAoCqC,CAAC,IAAI,CAAzC,EAA4C;EAC1C,UAAIpB,GAAG,CAACoB,CAAD,CAAH,KAAWqW,CAAf,EAAkB;EAChBzX,QAAAA,GAAG,CAAClB,CAAD,CAAH,IAAUkB,GAAG,CAACoB,CAAD,CAAb;EACApB,QAAAA,GAAG,CAACoB,CAAD,CAAH,GAAS,IAAT;EACD,OAHD,MAGO;EACL;EACD;EACF;EACF,GAZiD;;;EAelDpB,EAAAA,GAAG,GAAGA,GAAG,CAACsX,MAAJ,CAAW,UAAUC,EAAV,EAAc;EAC7B,WAAOA,EAAP;EACD,GAFK,CAAN;EAGAvX,EAAAA,GAAG,GAAGA,GAAG,CAAC0X,GAAJ,CAAQ,UAAUlS,GAAV,EAAe;EAC3B,QAAIA,GAAG,KAAK,IAAZ,EAAkB;EAChBA,MAAAA,GAAG,GAAG,GAAN;EACD;;EAED,WAAOA,GAAP;EACD,GANK,CAAN;EAOA,SAAOxF,GAAP;EACD,CA1BD;;EA4BA,IAAI2X,OAAO,GAAG,SAASA,OAAT,CAAiBrY,CAAjB,EAAoBkG,GAApB,EAAyB;EACrC,MAAIxF,GAAG,GAAGwF,GAAG,CAACjD,KAAJ,CAAU,EAAV,CAAV,CADqC;;EAGrCvC,EAAAA,GAAG,GAAGqX,WAAW,CAACrX,GAAD,CAAjB,CAHqC;;EAKrCA,EAAAA,GAAG,GAAGwX,eAAe,CAACxX,GAAD,CAArB;EACA,SAAOA,GAAG,CAACmH,MAAJ,CAAW,UAAUyQ,GAAV,EAAeH,CAAf,EAAkB;EAClC,QAAIrY,OAAO,CAACqY,CAAD,CAAP,KAAe7W,SAAnB,EAA8B;EAC5BgX,MAAAA,GAAG,IAAIxY,OAAO,CAACqY,CAAD,CAAP,CAAWnY,CAAX,KAAiB,EAAxB;EACD,KAFD,MAEO;EACL;EACA,UAAI,YAAYuC,IAAZ,CAAiB4V,CAAjB,CAAJ,EAAyB;EACvBA,QAAAA,CAAC,GAAGA,CAAC,CAAChS,OAAF,CAAU,IAAV,EAAgB,EAAhB,CAAJ;EACD;;EAEDmS,MAAAA,GAAG,IAAIH,CAAP;EACD;;EAED,WAAOG,GAAP;EACD,GAbM,EAaJ,EAbI,CAAP;EAcD,CApBD;;EAsBA,IAAIC,SAAS,GAAGF,OAAhB;EAEA,IAAIG,OAAO,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,SAAnB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,aAAtD,EAAqE,MAArE,EAA6E,QAA7E,CAAd;;EAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBzY,CAAhB,EAAmB+F,CAAnB,EAAsB;EACjC,MAAIlC,KAAK,GAAG7D,CAAC,CAAC+J,KAAF,GAAUiB,OAAV,CAAkBjF,CAAlB,CAAZ;EACA,MAAIjC,GAAG,GAAG9D,CAAC,CAAC+J,KAAF,GAAU2O,KAAV,CAAgB3S,CAAhB,CAAV;EACA,MAAI4S,QAAQ,GAAG7U,GAAG,CAACF,KAAJ,GAAYC,KAAK,CAACD,KAAjC;EACA,MAAIgV,OAAO,GAAG,CAAC5Y,CAAC,CAAC4D,KAAF,GAAUC,KAAK,CAACD,KAAjB,IAA0B+U,QAAxC;EACA,SAAO/N,UAAU,CAACgO,OAAO,CAACC,OAAR,CAAgB,CAAhB,CAAD,CAAjB;EACD,CAND;;;EASA,IAAIC,QAAQ,GAAG,SAASA,QAAT,CAAkB9Y,CAAlB,EAAqB6I,IAArB,EAA2B;EACxC,MAAIA,IAAJ,EAAU;EACRA,IAAAA,IAAI,GAAG2C,GAAG,CAACxD,SAAJ,CAAca,IAAd,CAAP;EACA,WAAO4P,MAAM,CAACzY,CAAD,EAAI6I,IAAJ,CAAb;EACD;;EAED,MAAIzI,GAAG,GAAG,EAAV;EACAoY,EAAAA,OAAO,CAAC1S,OAAR,CAAgB,UAAUC,CAAV,EAAa;EAC3B3F,IAAAA,GAAG,CAAC2F,CAAD,CAAH,GAAS0S,MAAM,CAACzY,CAAD,EAAI+F,CAAJ,CAAf;EACD,GAFD;EAGA,SAAO3F,GAAP;EACD,CAXD;;EAaA,IAAI2Y,UAAU,GAAGD,QAAjB;;EAEA,IAAIE,OAAO,GAAG,SAASA,OAAT,CAAiBhZ,CAAjB,EAAoB6I,IAApB,EAA0B;EACtC;EACA,MAAIoQ,IAAI,GAAGjZ,CAAC,CAAC8Y,QAAF,EAAX;EACAjQ,EAAAA,IAAI,GAAG2C,GAAG,CAACxD,SAAJ,CAAca,IAAd,CAAP,CAHsC;;EAKtC,MAAIA,IAAI,KAAK,aAAb,EAA4B;EAC1BA,IAAAA,IAAI,GAAG,aAAP;EACD;;EAED,MAAIoQ,IAAI,CAACpQ,IAAD,CAAJ,KAAevH,SAAnB,EAA8B;EAC5B;EACA,QAAI2X,IAAI,CAACpQ,IAAD,CAAJ,GAAa,GAAjB,EAAsB;EACpB7I,MAAAA,CAAC,GAAGA,CAAC,CAAC2O,GAAF,CAAM,CAAN,EAAS9F,IAAT,CAAJ;EACD,KAJ2B;;;EAO5B7I,IAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAUnC,IAAV,CAAJ;EACD,GARD,MAQO,IAAI7I,CAAC,CAACiK,MAAF,KAAa,KAAjB,EAAwB;EAC7BxF,IAAAA,OAAO,CAACC,IAAR,CAAa,oBAAoBmE,IAApB,GAA2B,GAAxC;EACD;;EAED,SAAO7I,CAAP;EACD,CAtBD;;EAwBA,IAAIkZ,SAAS,GAAGF,OAAhB;;EAGA,IAAIG,KAAK,GAAG,SAASA,KAAT,CAAe3C,CAAf,EAAkB4C,CAAlB,EAAqBvQ,IAArB,EAA2B;EACrC,MAAIrJ,CAAC,GAAG,CAAR;EACAgX,EAAAA,CAAC,GAAGA,CAAC,CAACzM,KAAF,EAAJ;;EAEA,SAAOyM,CAAC,CAAC6C,QAAF,CAAWD,CAAX,CAAP,EAAsB;EACpB;EACA5C,IAAAA,CAAC,GAAGA,CAAC,CAAC7H,GAAF,CAAM,CAAN,EAAS9F,IAAT,CAAJ;EACArJ,IAAAA,CAAC,IAAI,CAAL;EACD,GARoC;;;EAWrC,MAAIgX,CAAC,CAAC8C,OAAF,CAAUF,CAAV,EAAavQ,IAAb,CAAJ,EAAwB;EACtBrJ,IAAAA,CAAC,IAAI,CAAL;EACD;;EAED,SAAOA,CAAP;EACD,CAhBD;EAiBA;;;EAGA,IAAI+Z,OAAO,GAAG,SAASA,OAAT,CAAiB/C,CAAjB,EAAoB4C,CAApB,EAAuBvQ,IAAvB,EAA6B;EACzC,MAAI2N,CAAC,CAAC6C,QAAF,CAAWD,CAAX,CAAJ,EAAmB;EACjB,WAAOD,KAAK,CAAC3C,CAAD,EAAI4C,CAAJ,EAAOvQ,IAAP,CAAZ;EACD,GAFD,MAEO;EACL,WAAOsQ,KAAK,CAACC,CAAD,EAAI5C,CAAJ,EAAO3N,IAAP,CAAL,GAAoB,CAAC,CAA5B,CADK;EAEN;EACF,CAND;;EAQA,IAAI2Q,GAAG,GAAGD,OAAV;EAGA;;EAEA,IAAIE,QAAQ,GAAG,SAASA,QAAT,CAAkBjD,CAAlB,EAAqB4C,CAArB,EAAwB;EACrC,MAAIM,KAAK,GAAGN,CAAC,CAACrW,IAAF,KAAWyT,CAAC,CAACzT,IAAF,EAAvB,CADqC;;EAGrCyT,EAAAA,CAAC,GAAGA,CAAC,CAACzT,IAAF,CAAOqW,CAAC,CAACrW,IAAF,EAAP,CAAJ;;EAEA,MAAIyT,CAAC,CAAC8C,OAAF,CAAUF,CAAV,CAAJ,EAAkB;EAChBM,IAAAA,KAAK,IAAI,CAAT;EACD;;EAED,SAAOA,KAAP;EACD,CAVD;EAWA;EACA;;;EAGA,IAAIC,MAAM,GAAG,SAASxQ,IAAT,CAAcqN,CAAd,EAAiB4C,CAAjB,EAAoB;EAC/B;EACA;EACA,MAAIQ,MAAM,GAAGR,CAAC,CAACxV,KAAF,GAAU4S,CAAC,CAAC5S,KAAzB;EACA,MAAIxD,GAAG,GAAG;EACRuI,IAAAA,YAAY,EAAEiR,MADN;EAERhQ,IAAAA,OAAO,EAAEI,QAAQ,CAAC4P,MAAM,GAAG,IAAV,EAAgB,EAAhB;EAFT,GAAV;EAIAxZ,EAAAA,GAAG,CAAC+M,OAAJ,GAAcnD,QAAQ,CAAC5J,GAAG,CAACwJ,OAAJ,GAAc,EAAf,EAAmB,EAAnB,CAAtB;EACAxJ,EAAAA,GAAG,CAAC8M,KAAJ,GAAYlD,QAAQ,CAAC5J,GAAG,CAAC+M,OAAJ,GAAc,EAAf,EAAmB,EAAnB,CAApB,CAT+B;;EAW/B,MAAIR,GAAG,GAAG6J,CAAC,CAACzM,KAAF,EAAV;EACA3J,EAAAA,GAAG,CAACsZ,KAAJ,GAAYD,QAAQ,CAAC9M,GAAD,EAAMyM,CAAN,CAApB;EACAzM,EAAAA,GAAG,GAAG6J,CAAC,CAAC7H,GAAF,CAAMvO,GAAG,CAACsZ,KAAV,EAAiB,MAAjB,CAAN,CAb+B;;EAe/BtZ,EAAAA,GAAG,CAACoN,MAAJ,GAAapN,GAAG,CAACsZ,KAAJ,GAAY,EAAzB;EACA/M,EAAAA,GAAG,GAAG6J,CAAC,CAAC7H,GAAF,CAAMvO,GAAG,CAACoN,MAAV,EAAkB,OAAlB,CAAN;EACApN,EAAAA,GAAG,CAACoN,MAAJ,IAAcgM,GAAG,CAAC7M,GAAD,EAAMyM,CAAN,EAAS,OAAT,CAAjB,CAjB+B;EAkB/B;;EAEAhZ,EAAAA,GAAG,CAACyZ,KAAJ,GAAYzZ,GAAG,CAACsZ,KAAJ,GAAY,EAAxB;EACA/M,EAAAA,GAAG,GAAG6J,CAAC,CAAC7H,GAAF,CAAMvO,GAAG,CAACyZ,KAAV,EAAiB,MAAjB,CAAN;EACAzZ,EAAAA,GAAG,CAACyZ,KAAJ,IAAaL,GAAG,CAAC7M,GAAD,EAAMyM,CAAN,EAAS,MAAT,CAAhB,CAtB+B;;EAwB/BhZ,EAAAA,GAAG,CAACyP,IAAJ,GAAWzP,GAAG,CAACyZ,KAAJ,GAAY,CAAvB;EACAlN,EAAAA,GAAG,GAAG6J,CAAC,CAAC7H,GAAF,CAAMvO,GAAG,CAACyP,IAAV,EAAgB,KAAhB,CAAN;EACAzP,EAAAA,GAAG,CAACyP,IAAJ,IAAY2J,GAAG,CAAC7M,GAAD,EAAMyM,CAAN,EAAS,KAAT,CAAf;EACA,SAAOhZ,GAAP;EACD,CA5BD;;EA8BA,IAAI0Z,SAAS,GAAGH,MAAhB;;EAEA,IAAII,WAAW,GAAG,SAASA,WAAT,CAAqB3Z,GAArB,EAA0B;EAC1Ca,EAAAA,MAAM,CAAC4E,IAAP,CAAYzF,GAAZ,EAAiB0F,OAAjB,CAAyB,UAAUC,CAAV,EAAa;EACpC3F,IAAAA,GAAG,CAAC2F,CAAD,CAAH,IAAU,CAAC,CAAX;EACD,GAFD;EAGA,SAAO3F,GAAP;EACD,CALD;EAMA;EACA;;;EAGA,IAAI4Z,MAAM,GAAG,SAASC,IAAT,CAAczD,CAAd,EAAiB4C,CAAjB,EAAoBvQ,IAApB,EAA0B;EACrCuQ,EAAAA,CAAC,GAAG5N,GAAG,CAACqB,OAAJ,CAAYuM,CAAZ,EAAe5C,CAAf,CAAJ,CADqC;;EAGrC,MAAI0D,QAAQ,GAAG,KAAf;;EAEA,MAAI1D,CAAC,CAAC8C,OAAF,CAAUF,CAAV,CAAJ,EAAkB;EAChB,QAAIzM,GAAG,GAAG6J,CAAV;EACAA,IAAAA,CAAC,GAAG4C,CAAJ;EACAA,IAAAA,CAAC,GAAGzM,GAAJ;EACAuN,IAAAA,QAAQ,GAAG,IAAX;EACD,GAVoC;;;EAarC,MAAI9Z,GAAG,GAAG0Z,SAAS,CAACtD,CAAD,EAAI4C,CAAJ,CAAnB;;EAEA,MAAIc,QAAJ,EAAc;EACZ9Z,IAAAA,GAAG,GAAG2Z,WAAW,CAAC3Z,GAAD,CAAjB;EACD,GAjBoC;;;EAoBrC,MAAIyI,IAAJ,EAAU;EACR;EACAA,IAAAA,IAAI,GAAG2C,GAAG,CAACxD,SAAJ,CAAca,IAAd,CAAP;;EAEA,QAAI,KAAKtG,IAAL,CAAUsG,IAAV,MAAoB,IAAxB,EAA8B;EAC5BA,MAAAA,IAAI,IAAI,GAAR;EACD;;EAED,QAAIA,IAAI,KAAK,OAAb,EAAsB;EACpBA,MAAAA,IAAI,GAAG,MAAP;EACD;;EAED,WAAOzI,GAAG,CAACyI,IAAD,CAAV;EACD;;EAED,SAAOzI,GAAP;EACD,CApCD;;EAsCA,IAAI+I,IAAI,GAAG6Q,MAAX;;EAIA,IAAIG,UAAU,GAAG;EACf3M,EAAAA,MAAM,EAAE;EACN4M,IAAAA,MAAM,EAAE,EADF;EAENC,IAAAA,IAAI,EAAE;EAFA,GADO;EAKfxK,EAAAA,IAAI,EAAE;EACJuK,IAAAA,MAAM,EAAE,EADJ;EAEJC,IAAAA,IAAI,EAAE;EAFF,GALS;EASfnN,EAAAA,KAAK,EAAE;EACLkN,IAAAA,MAAM,EAAE,EADH;EAELC,IAAAA,IAAI,EAAE;EAFD,GATQ;EAaflN,EAAAA,OAAO,EAAE;EACPiN,IAAAA,MAAM,EAAE,EADD;EAEPC,IAAAA,IAAI,EAAE;EAFC,GAbM;EAiBfzQ,EAAAA,OAAO,EAAE;EACPwQ,IAAAA,MAAM,EAAE,EADD;EAEPC,IAAAA,IAAI,EAAE;EAFC;EAjBM,CAAjB;;EAuBA,SAASC,OAAT,CAAiB9D,CAAjB,EAAoB4C,CAApB,EAAuB;EACrB,MAAIC,QAAQ,GAAG7C,CAAC,CAAC6C,QAAF,CAAWD,CAAX,CAAf;EACA,MAAImB,KAAK,GAAGlB,QAAQ,GAAGD,CAAH,GAAO5C,CAA3B;EACA,MAAIgE,OAAO,GAAGnB,QAAQ,GAAG7C,CAAH,GAAO4C,CAA7B;EACAoB,EAAAA,OAAO,GAAGA,OAAO,CAACzQ,KAAR,EAAV;EACA,MAAIZ,IAAI,GAAG;EACTuQ,IAAAA,KAAK,EAAE,CADE;EAETlM,IAAAA,MAAM,EAAE,CAFC;EAGTqC,IAAAA,IAAI,EAAE,CAHG;EAIT3C,IAAAA,KAAK,EAAE,CAJE;EAKTC,IAAAA,OAAO,EAAE,CALA;EAMTvD,IAAAA,OAAO,EAAE;EANA,GAAX;EAQA3I,EAAAA,MAAM,CAAC4E,IAAP,CAAYsD,IAAZ,EAAkBrD,OAAlB,CAA0B,UAAU+C,IAAV,EAAgB;EACxC,QAAI2R,OAAO,CAACC,MAAR,CAAeF,KAAf,EAAsB1R,IAAtB,CAAJ,EAAiC;EAC/B;EACD;;EAED,QAAIyE,GAAG,GAAGkN,OAAO,CAACrR,IAAR,CAAaoR,KAAb,EAAoB1R,IAApB,CAAV;EACA2R,IAAAA,OAAO,GAAGA,OAAO,CAAC7L,GAAR,CAAYrB,GAAZ,EAAiBzE,IAAjB,CAAV;EACAM,IAAAA,IAAI,CAACN,IAAD,CAAJ,GAAayE,GAAb;EACD,GARD,EAbqB;;EAuBrB,MAAI+L,QAAJ,EAAc;EACZpY,IAAAA,MAAM,CAAC4E,IAAP,CAAYsD,IAAZ,EAAkBrD,OAAlB,CAA0B,UAAU4U,CAAV,EAAa;EACrC,UAAIvR,IAAI,CAACuR,CAAD,CAAJ,KAAY,CAAhB,EAAmB;EACjBvR,QAAAA,IAAI,CAACuR,CAAD,CAAJ,IAAW,CAAC,CAAZ;EACD;EACF,KAJD;EAKD;;EAED,SAAOvR,IAAP;EACD;;;EAGD,SAASwR,SAAT,CAAmB/Y,KAAnB,EAA0BiH,IAA1B,EAAgC;EAC9B,MAAIjH,KAAK,KAAK,CAAd,EAAiB;EACfiH,IAAAA,IAAI,GAAGA,IAAI,CAACzG,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAAP;EACD;;EAED,SAAOR,KAAK,GAAG,GAAR,GAAciH,IAArB;EACD;;;EAGD,IAAI+R,KAAK,GAAG,SAASA,KAAT,CAAe/W,KAAf,EAAsBC,GAAtB,EAA2B;EACrCA,EAAAA,GAAG,GAAG0H,GAAG,CAACqB,OAAJ,CAAY/I,GAAZ,EAAiBD,KAAjB,CAAN;EACA,MAAIsF,IAAI,GAAGmR,OAAO,CAACzW,KAAD,EAAQC,GAAR,CAAlB;EACA,MAAI+W,KAAK,GAAG5Z,MAAM,CAAC4E,IAAP,CAAYsD,IAAZ,EAAkB2R,KAAlB,CAAwB,UAAUJ,CAAV,EAAa;EAC/C,WAAO,CAACvR,IAAI,CAACuR,CAAD,CAAZ;EACD,GAFW,CAAZ;;EAIA,MAAIG,KAAK,KAAK,IAAd,EAAoB;EAClB,WAAO;EACL1R,MAAAA,IAAI,EAAEA,IADD;EAEL4R,MAAAA,OAAO,EAAE,KAFJ;EAGLC,MAAAA,SAAS,EAAE,KAHN;EAILC,MAAAA,OAAO,EAAE;EAJJ,KAAP;EAMD;;EAED,MAAIF,OAAJ;EACA,MAAIC,SAAJ;EACA,MAAIC,OAAJ;EACA,MAAIC,aAAa,GAAG,EAApB,CAnBqC;;EAqBrCja,EAAAA,MAAM,CAAC4E,IAAP,CAAYsD,IAAZ,EAAkBrD,OAAlB,CAA0B,UAAU+C,IAAV,EAAgBrJ,CAAhB,EAAmB2b,KAAnB,EAA0B;EAClD,QAAIvZ,KAAK,GAAGwH,IAAI,CAACC,GAAL,CAASF,IAAI,CAACN,IAAD,CAAb,CAAZ;;EAEA,QAAIjH,KAAK,KAAK,CAAd,EAAiB;EACf;EACD;;EAED,QAAIwZ,YAAY,GAAGT,SAAS,CAAC/Y,KAAD,EAAQiH,IAAR,CAA5B;EACAqS,IAAAA,aAAa,CAACvZ,IAAd,CAAmByZ,YAAnB;;EAEA,QAAI,CAACL,OAAL,EAAc;EACZA,MAAAA,OAAO,GAAGC,SAAS,GAAGI,YAAtB;;EAEA,UAAI5b,CAAC,GAAG,CAAR,EAAW;EACT;EACD,OALW;;;EAQZ,UAAI6b,QAAQ,GAAGF,KAAK,CAAC3b,CAAC,GAAG,CAAL,CAApB;EACA,UAAI8b,SAAS,GAAGlS,IAAI,CAACC,GAAL,CAASF,IAAI,CAACkS,QAAD,CAAb,CAAhB;;EAEA,UAAIC,SAAS,GAAGnB,UAAU,CAACkB,QAAD,CAAV,CAAqBjB,MAArC,EAA6C;EAC3CW,QAAAA,OAAO,GAAGJ,SAAS,CAAC/Y,KAAK,GAAG,CAAT,EAAYiH,IAAZ,CAAnB;EACAmS,QAAAA,SAAS,GAAG,YAAYD,OAAxB;EACD,OAHD,MAGO,IAAIO,SAAS,GAAGnB,UAAU,CAACkB,QAAD,CAAV,CAAqBhB,IAArC,EAA2CW,SAAS,GAAG,UAAUI,YAAtB;EACnD;EACF,GA1BD,EArBqC;;EAiDrCH,EAAAA,OAAO,GAAGC,aAAa,CAACK,MAAd,CAAqB,CAArB,EAAwB,CAAxB,EAA2BrP,IAA3B,CAAgC,IAAhC,CAAV,CAjDqC;;EAmDrC,MAAIrI,KAAK,CAACyV,OAAN,CAAcxV,GAAd,MAAuB,IAA3B,EAAiC;EAC/BiX,IAAAA,OAAO,IAAI,MAAX;EACAC,IAAAA,SAAS,IAAI,MAAb;EACAC,IAAAA,OAAO,IAAI,MAAX;EACD,GAJD,MAIO;EACLF,IAAAA,OAAO,GAAG,QAAQA,OAAlB;EACAC,IAAAA,SAAS,GAAG,QAAQA,SAApB;EACAC,IAAAA,OAAO,GAAG,QAAQA,OAAlB;EACD;;EAED,SAAO;EACL9R,IAAAA,IAAI,EAAEA,IADD;EAEL4R,IAAAA,OAAO,EAAEA,OAFJ;EAGLC,IAAAA,SAAS,EAAEA,SAHN;EAILC,IAAAA,OAAO,EAAEA;EAJJ,GAAP;EAMD,CAnED;;EAqEA,IAAIO,OAAO,GAAGZ,KAAd;EAGA;EACA;EACA;EACA;;EACA,IAAIa,OAAO,GAAG;EACZC,EAAAA,KAAK,EAAE,CAAC,CAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAAD;EACP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CADO;EAEP,GAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,CAFO;EAGP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAHO;EAIP,GAAC,QAAD,EAAW,EAAX,EAAe,CAAf,CAJO;EAAA,GADK;EAOZC,EAAAA,KAAK,EAAE,CAAC,CAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,CAAD;EACP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CADO;EAEP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAFO;EAGP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAHO;EAIP,GAAC,QAAD,EAAW,EAAX,EAAe,CAAf,CAJO;EAAA;EAPK,CAAd;EAeA,IAAIC,QAAQ,GAAG,CAAC,IAAD,EAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;EACf,CAAC,CAAD,EAAI,CAAJ,CADe;EAEf,CAAC,CAAD,EAAI,CAAJ,CAFe;EAGf,CAAC,CAAD,EAAI,CAAJ,CAHe;EAAA,CAAf;EAMA,IAAIC,OAAO,GAAG;EACZrT,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBxI,CAAhB,EAAmB;EACzBkK,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRuI,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,WAAW,EAAE;EAFL,KAAJ,CAAN;EAIA,WAAOtI,CAAP;EACD,GAPW;EAQZ8b,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqB9b,CAArB,EAAwB;EACnC,QAAIwI,MAAM,GAAGxI,CAAC,CAACmN,OAAF,EAAb;;EAEA,QAAI3E,MAAM,IAAI,EAAd,EAAkB;EAChBxI,MAAAA,CAAC,GAAGA,CAAC,CAACmN,OAAF,CAAU,EAAV,CAAJ;EACD,KAFD,MAEO,IAAI3E,MAAM,IAAI,EAAd,EAAkB;EACvBxI,MAAAA,CAAC,GAAGA,CAAC,CAACmN,OAAF,CAAU,EAAV,CAAJ;EACD,KAFM,MAEA,IAAI3E,MAAM,IAAI,EAAd,EAAkB;EACvBxI,MAAAA,CAAC,GAAGA,CAAC,CAACmN,OAAF,CAAU,EAAV,CAAJ;EACD,KAFM,MAEA;EACLnN,MAAAA,CAAC,GAAGA,CAAC,CAACmN,OAAF,CAAU,CAAV,CAAJ;EACD;;EAEDjD,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRuI,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,WAAW,EAAE;EAFL,KAAJ,CAAN;EAIA,WAAOtI,CAAP;EACD,GA1BW;EA2BZwD,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcxD,CAAd,EAAiB;EACrBkK,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRwI,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,WAAW,EAAE;EAHL,KAAJ,CAAN;EAKA,WAAOtI,CAAP;EACD,GAlCW;EAmCZuD,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavD,CAAb,EAAgB;EACnBkK,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRwD,MAAAA,IAAI,EAAE,CADE;EAERgF,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,WAAW,EAAE;EAJL,KAAJ,CAAN;EAMA,WAAOtI,CAAP;EACD,GA3CW;EA4CZ0I,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1I,CAAd,EAAiB;EACrB,QAAIkJ,QAAQ,GAAGlJ,CAAC,CAAC+J,KAAF,EAAf;EACA/J,IAAAA,CAAC,GAAGA,CAAC,CAACuD,GAAF,CAAMvD,CAAC,CAAC+b,UAAR,CAAJ,CAFqB;;EAIrB,QAAI/b,CAAC,CAACsZ,OAAF,CAAUpQ,QAAV,CAAJ,EAAyB;EACvBlJ,MAAAA,CAAC,GAAGA,CAAC,CAAC6O,QAAF,CAAW,CAAX,EAAc,MAAd,CAAJ;EACD;;EAED3E,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRwD,MAAAA,IAAI,EAAE,CADE;EAERgF,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,WAAW,EAAE;EAJL,KAAJ,CAAN;EAMA,WAAOtI,CAAP;EACD,GA3DW;EA4DZmD,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAenD,CAAf,EAAkB;EACvBkK,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRyI,MAAAA,IAAI,EAAE,CADE;EAERjF,MAAAA,IAAI,EAAE,CAFE;EAGRgF,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,MAAM,EAAE,CAJA;EAKRD,MAAAA,WAAW,EAAE;EALL,KAAJ,CAAN;EAOA,WAAOtI,CAAP;EACD,GArEW;EAsEZkO,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBlO,CAAjB,EAAoB;EAC3B,QAAIgc,CAAC,GAAGhc,CAAC,CAACkO,OAAF,EAAR;;EAEA,QAAI0N,QAAQ,CAACI,CAAD,CAAZ,EAAiB;EACf9R,MAAAA,MAAM,CAAClK,CAAD,EAAI;EACRmD,QAAAA,KAAK,EAAEyY,QAAQ,CAACI,CAAD,CAAR,CAAY,CAAZ,CADC;EAERvT,QAAAA,IAAI,EAAEmT,QAAQ,CAACI,CAAD,CAAR,CAAY,CAAZ,CAFE;EAGRxY,QAAAA,IAAI,EAAE,CAHE;EAIRgF,QAAAA,MAAM,EAAE,CAJA;EAKRD,QAAAA,MAAM,EAAE,CALA;EAMRD,QAAAA,WAAW,EAAE;EANL,OAAJ,CAAN;EAQD;;EAED,WAAOtI,CAAP;EACD,GArFW;EAsFZmO,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBnO,CAAhB,EAAmB;EACzB,QAAI+I,OAAO,GAAG/I,CAAC,CAACmO,MAAF,EAAd;EACA,QAAIrJ,GAAG,GAAG,OAAV;;EAEA,QAAI9E,CAAC,CAACic,UAAF,OAAmB,OAAvB,EAAgC;EAC9BnX,MAAAA,GAAG,GAAG,OAAN;EACD;;EAED,SAAK,IAAItF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGic,OAAO,CAAC3W,GAAD,CAAP,CAAarF,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;EAC5C,UAAIic,OAAO,CAAC3W,GAAD,CAAP,CAAatF,CAAb,EAAgB,CAAhB,MAAuBuJ,OAA3B,EAAoC;EAClC;EACA,YAAIhG,IAAI,GAAG/C,CAAC,CAAC+C,IAAF,EAAX;;EAEA,YAAIgG,OAAO,KAAK,QAAZ,IAAwB/I,CAAC,CAACmD,KAAF,KAAY,CAAxC,EAA2C;EACzCJ,UAAAA,IAAI,IAAI,CAAR;EACD;;EAEDmH,QAAAA,MAAM,CAAClK,CAAD,EAAI;EACR+C,UAAAA,IAAI,EAAEA,IADE;EAERI,UAAAA,KAAK,EAAEsY,OAAO,CAAC3W,GAAD,CAAP,CAAatF,CAAb,EAAgB,CAAhB,CAFC;EAGRiJ,UAAAA,IAAI,EAAEgT,OAAO,CAAC3W,GAAD,CAAP,CAAatF,CAAb,EAAgB,CAAhB,CAHE;EAIRgE,UAAAA,IAAI,EAAE,CAJE;EAKRgF,UAAAA,MAAM,EAAE,CALA;EAMRD,UAAAA,MAAM,EAAE,CANA;EAORD,UAAAA,WAAW,EAAE;EAPL,SAAJ,CAAN;EASA,eAAOtI,CAAP;EACD;EACF;;EAED,WAAOA,CAAP;EACD,GArHW;EAsHZ+C,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/C,CAAd,EAAiB;EACrBkK,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRmD,MAAAA,KAAK,EAAE,CADC;EAERsF,MAAAA,IAAI,EAAE,CAFE;EAGRjF,MAAAA,IAAI,EAAE,CAHE;EAIRgF,MAAAA,MAAM,EAAE,CAJA;EAKRD,MAAAA,MAAM,EAAE,CALA;EAMRD,MAAAA,WAAW,EAAE;EANL,KAAJ,CAAN;EAQA,WAAOtI,CAAP;EACD,GAhIW;EAiIZkc,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlc,CAAhB,EAAmB;EACzBA,IAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,MAAV,CAAJ;EACA,QAAIjI,IAAI,GAAG/C,CAAC,CAAC+C,IAAF,EAAX;EACA,QAAImZ,MAAM,GAAGlS,QAAQ,CAACjH,IAAI,GAAG,EAAR,EAAY,EAAZ,CAAR,GAA0B,EAAvC;EACA/C,IAAAA,CAAC,GAAGA,CAAC,CAAC+C,IAAF,CAAOmZ,MAAP,CAAJ;EACA,WAAOlc,CAAP;EACD,GAvIW;EAwIZmc,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBnc,CAAjB,EAAoB;EAC3BA,IAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,MAAV,CAAJ;EACA,QAAIjI,IAAI,GAAG/C,CAAC,CAAC+C,IAAF,EAAX,CAF2B;;EAI3B,QAAImZ,MAAM,GAAGlS,QAAQ,CAACjH,IAAI,GAAG,GAAR,EAAa,EAAb,CAAR,GAA2B,GAAxC;EACA/C,IAAAA,CAAC,GAAGA,CAAC,CAAC+C,IAAF,CAAOmZ,MAAP,CAAJ;EACA,WAAOlc,CAAP;EACD;EA/IW,CAAd;EAiJA6b,OAAO,CAACpT,IAAR,GAAeoT,OAAO,CAACtY,GAAvB;;EAEA,IAAIyH,OAAO,GAAG,SAASA,OAAT,CAAiBwL,CAAjB,EAAoB3N,IAApB,EAA0B;EACtC,MAAI7I,CAAC,GAAGwW,CAAC,CAACzM,KAAF,EAAR;EACAlB,EAAAA,IAAI,GAAG2C,GAAG,CAACxD,SAAJ,CAAca,IAAd,CAAP;;EAEA,MAAIgT,OAAO,CAAChT,IAAD,CAAX,EAAmB;EACjB,WAAOgT,OAAO,CAAChT,IAAD,CAAP,CAAc7I,CAAd,CAAP;EACD;;EAED,MAAI6I,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAAlC,EAA4C;EAC1C7I,IAAAA,CAAC,GAAGA,CAAC,CAACmO,MAAF,CAAStF,IAAT,CAAJ;EACA,WAAOgT,OAAO,CAAC1N,MAAR,CAAenO,CAAf,CAAP;EACD;;EAED,SAAOA,CAAP;EACD,CAdD;;;EAiBA,IAAI0Y,KAAK,GAAG,SAASA,KAAT,CAAelC,CAAf,EAAkB3N,IAAlB,EAAwB;EAClC,MAAI7I,CAAC,GAAGwW,CAAC,CAACzM,KAAF,EAAR;EACAlB,EAAAA,IAAI,GAAG2C,GAAG,CAACxD,SAAJ,CAAca,IAAd,CAAP;;EAEA,MAAIgT,OAAO,CAAChT,IAAD,CAAX,EAAmB;EACjB;EACA7I,IAAAA,CAAC,GAAG6b,OAAO,CAAChT,IAAD,CAAP,CAAc7I,CAAd,CAAJ,CAFiB;;EAIjBA,IAAAA,CAAC,GAAGA,CAAC,CAAC2O,GAAF,CAAM,CAAN,EAAS9F,IAAT,CAAJ;EACA7I,IAAAA,CAAC,GAAGA,CAAC,CAAC6O,QAAF,CAAW,CAAX,EAAc,aAAd,CAAJ;EACA,WAAO7O,CAAP;EACD;;EAED,SAAOA,CAAP;EACD,CAdD;;EAgBA,IAAIoc,SAAS,GAAG;EACdpR,EAAAA,OAAO,EAAEA,OADK;EAEd0N,EAAAA,KAAK,EAAEA;EAFO,CAAhB;;EAKA,IAAI2D,KAAK,GAAG,SAASA,KAAT,CAAexT,IAAf,EAAqB;EAC/B,MAAIgH,IAAI,CAAC,OAAD,CAAJ,GAAgBxH,IAAhB,CAAqB,UAAUrI,CAAV,EAAa;EACpC,WAAOA,CAAC,KAAK6I,IAAb;EACD,GAFG,CAAJ,EAEI;EACF,WAAO,IAAP;EACD;;EAED,MAAIgH,IAAI,CAAC,MAAD,CAAJ,GAAexH,IAAf,CAAoB,UAAUrI,CAAV,EAAa;EACnC,WAAOA,CAAC,KAAK6I,IAAb;EACD,GAFG,CAAJ,EAEI;EACF,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAdD;EAeA;;;EAGA,IAAIiS,KAAK,GAAG,SAASA,KAAT,CAAejX,KAAf,EAAsB;EAChC,MAAIgF,IAAI,GAAGkC,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,MAAIjH,GAAG,GAAGiH,SAAS,CAACtL,MAAV,GAAmB,CAAnB,GAAuBsL,SAAS,CAAC,CAAD,CAAhC,GAAsCzJ,SAAhD;;EAEA,MAAI,CAACuH,IAAD,IAAS,CAAC/E,GAAd,EAAmB;EACjB,WAAO,EAAP;EACD,GAN+B;;;EAShC+E,EAAAA,IAAI,GAAG2C,GAAG,CAACxD,SAAJ,CAAca,IAAd,CAAP,CATgC;;EAWhC/E,EAAAA,GAAG,GAAGD,KAAK,CAACkG,KAAN,GAAcW,GAAd,CAAkB5G,GAAlB,CAAN,CAXgC;;EAahC,MAAID,KAAK,CAACyV,OAAN,CAAcxV,GAAd,CAAJ,EAAwB;EACtB,QAAI6I,GAAG,GAAG9I,KAAV;EACAA,IAAAA,KAAK,GAAGC,GAAR;EACAA,IAAAA,GAAG,GAAG6I,GAAN;EACD,GAjB+B;;;EAoBhC,MAAI3D,CAAC,GAAGnF,KAAK,CAACkG,KAAN,EAAR;;EAEA,MAAIsS,KAAK,CAACxT,IAAD,CAAT,EAAiB;EACfG,IAAAA,CAAC,GAAGA,CAAC,CAACvH,IAAF,CAAOoH,IAAP,CAAJ;EACAA,IAAAA,IAAI,GAAG,MAAP;EACD,GAHD,MAGO;EACLG,IAAAA,CAAC,GAAGA,CAAC,CAACvH,IAAF,CAAOoH,IAAP,CAAJ;EACD,GA3B+B;;;EA8BhC,MAAIyT,MAAM,GAAG,EAAb;;EAEA,SAAOtT,CAAC,CAACqQ,QAAF,CAAWvV,GAAX,CAAP,EAAwB;EACtBwY,IAAAA,MAAM,CAAC3a,IAAP,CAAYqH,CAAZ;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC2F,GAAF,CAAM,CAAN,EAAS9F,IAAT,CAAJ;EACD;;EAED,SAAOyT,MAAP;EACD,CAtCD;;EAwCA,IAAIC,OAAO,GAAGzB,KAAd;;EAEA,IAAI0B,QAAQ,GAAG,SAASA,QAAT,CAAkB7X,GAAlB,EAAuB;EACpC,MAAI,CAACA,GAAL,EAAU;EACR,WAAO,EAAP;EACD;;EAED,SAAOA,GAAG,CAAC1B,KAAJ,CAAU,IAAV,CAAP;EACD,CAND;;EAQA,IAAIkJ,SAAS,GAAG,SAASA,SAAT,CAAmBjG,GAAnB,EAAwB;EACtCA,EAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAH,CAAOkG,WAAP,KAAuBlG,GAAG,CAACmG,MAAJ,CAAW,CAAX,CAA7B;EACAnG,EAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,OAAZ,EAAqB,MAArB,CAAN;EACAD,EAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,gBAAZ,EAA8B,UAAUnG,CAAV,EAAa;EAC/C,WAAOA,CAAC,CAACoM,WAAF,EAAP;EACD,GAFK,CAAN;EAGA,SAAOlG,GAAP;EACD,CAPD;;;EAUA,IAAIW,QAAQ,GAAG,SAASA,QAAT,CAAkB7G,CAAlB,EAAqB;EAClC,MAAIsE,KAAK,GAAGtE,CAAC,CAACuE,SAAd;EACA,MAAIC,EAAE,GAAGxE,CAAC,CAACwE,EAAX;;EAEA,MAAIF,KAAK,CAACvE,cAAN,CAAqByE,EAArB,MAA6B,KAAjC,EAAwC;EACtCA,IAAAA,EAAE,GAAG6D,IAAI,CAACrI,CAAC,CAACwE,EAAH,EAAOF,KAAP,CAAT;EACD;;EAED,MAAIE,EAAE,KAAK,IAAX,EAAiB;EACf,QAAIxE,CAAC,CAACiK,MAAF,KAAa,KAAjB,EAAwB;EACtBxF,MAAAA,OAAO,CAACC,IAAR,CAAa,qDAAqD1E,CAAC,CAACwE,EAAvD,GAA4D,GAAzE;EACD;;EAED,WAAO;EACLuE,MAAAA,OAAO,EAAE;EACP0T,QAAAA,UAAU,EAAE;EADL;EADJ,KAAP;EAKD;;EAED,MAAIC,KAAK,GAAGpY,KAAK,CAACE,EAAD,CAAjB;EACA,MAAI8X,MAAM,GAAG;EACXja,IAAAA,IAAI,EAAE8J,SAAS,CAAC3H,EAAD,CADJ;EAEXmY,IAAAA,MAAM,EAAEC,OAAO,CAACF,KAAK,CAAC/X,GAAP,CAFJ;EAGXkY,IAAAA,cAAc,EAAEH,KAAK,CAAC5Z,MAHX;EAIX;EACAmZ,IAAAA,UAAU,EAAES,KAAK,CAAC5X,GAAN,KAAc,GAAd,GAAoB,OAApB,GAA8B,OAL/B;EAMXiE,IAAAA,OAAO,EAAE;EANE,GAAb;;EASA,MAAIuT,MAAM,CAACK,MAAX,EAAmB;EACjB,QAAIjc,GAAG,GAAG8b,QAAQ,CAACE,KAAK,CAAC/X,GAAP,CAAlB;EACA2X,IAAAA,MAAM,CAACQ,MAAP,GAAgB;EACdjZ,MAAAA,KAAK,EAAEnD,GAAG,CAAC,CAAD,CADI;EAEdqc,MAAAA,IAAI,EAAErc,GAAG,CAAC,CAAD;EAFK,KAAhB;EAID,GApCiC;EAqClC;;;EAGA,MAAIsc,MAAM,GAAGN,KAAK,CAAC5Z,MAAnB,CAxCkC;;EA0ClC,MAAIma,MAAM,GAAGD,MAAb,CA1CkC;;EA4ClC,MAAIV,MAAM,CAACK,MAAP,KAAkB,IAAtB,EAA4B;EAC1B,QAAIL,MAAM,CAACL,UAAP,KAAsB,OAA1B,EAAmC;EACjCgB,MAAAA,MAAM,GAAGD,MAAM,GAAG,CAAlB;EACD,KAFD,MAEO;EACL;EACAC,MAAAA,MAAM,GAAGP,KAAK,CAAC5Z,MAAN,GAAe,CAAxB;EACD;EACF,GAnDiC;EAoDlC;;;EAGA,MAAIwZ,MAAM,CAACK,MAAP,KAAkB,KAAtB,EAA6B;EAC3BL,IAAAA,MAAM,CAACvT,OAAP,CAAejG,MAAf,GAAwBka,MAAxB;EACAV,IAAAA,MAAM,CAACvT,OAAP,CAAemU,KAAf,GAAuB,KAAvB;EACD,GAHD,MAGO,IAAI9Y,UAAU,CAACpE,CAAC,CAAC4D,KAAH,EAAU0Y,MAAM,CAACQ,MAAP,CAAcjZ,KAAxB,EAA+ByY,MAAM,CAACQ,MAAP,CAAcC,IAA7C,EAAmDC,MAAnD,EAA2DC,MAA3D,CAAV,KAAiF,IAArF,EAA2F;EAChGX,IAAAA,MAAM,CAACvT,OAAP,CAAejG,MAAf,GAAwBka,MAAxB;EACAV,IAAAA,MAAM,CAACvT,OAAP,CAAemU,KAAf,GAAuBZ,MAAM,CAACL,UAAP,KAAsB,OAA7C,CAFgG;EAGjG,GAHM,MAGA;EACL;EACAK,IAAAA,MAAM,CAACvT,OAAP,CAAejG,MAAf,GAAwBma,MAAxB;EACAX,IAAAA,MAAM,CAACvT,OAAP,CAAemU,KAAf,GAAuBZ,MAAM,CAACL,UAAP,KAAsB,OAA7C,CAHK;EAIN;;EAED,SAAOK,MAAP;EACD,CApED;;EAsEA,IAAIa,UAAU,GAAGtW,QAAjB;EAEA,IAAIsU,KAAK,GAAG,CAAC,SAAD,EAAY,QAAZ,EAAsB,MAAtB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,MAAtD,EAA8D,QAA9D,EAAwE,QAAxE,EAAkF,aAAlF,CAAZ;;EAEA,IAAIiC,SAAS,GAAG;EACd1S,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa2S,OAAb,EAAsB7Y,EAAtB,EAA0B;EAC7B,QAAIxE,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,IAAAA,CAAC,GAAG6L,KAAK,CAAC7L,CAAD,EAAIqd,OAAJ,EAAa,IAAb,CAAT;;EAEA,QAAI7Y,EAAJ,EAAQ;EACN,WAAKA,EAAL,GAAU6D,IAAI,CAAC7D,EAAD,CAAd;EACD;;EAED,WAAOxE,CAAP;EACD,GAVa;EAWd6G,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,WAAOsW,UAAU,CAAC,IAAD,CAAjB;EACD,GAba;EAcdD,EAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;EACtB,WAAOC,UAAU,CAAC,IAAD,CAAV,CAAiBpU,OAAjB,CAAyBmU,KAAhC;EACD,GAhBa;EAiBdI,EAAAA,MAAM,EAAE,SAASA,MAAT,GAAkB;EACxB,WAAOH,UAAU,CAAC,IAAD,CAAV,CAAiBR,MAAxB;EACD,GAnBa;EAoBd7Z,EAAAA,MAAM,EAAE,SAASA,MAAT,GAAkB;EACxB,WAAOqa,UAAU,CAAC,IAAD,CAAV,CAAiBpU,OAAjB,CAAyBjG,MAAzB,GAAkC,EAAzC;EACD,GAtBa;EAuBdmZ,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,WAAOkB,UAAU,CAAC,IAAD,CAAV,CAAiBlB,UAAxB;EACD,GAzBa;EA0BdtV,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBwN,GAAhB,EAAqB;EAC3B,WAAOE,QAAQ,CAAC,IAAD,EAAOF,GAAP,CAAf;EACD,GA5Ba;EA6BdkE,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBlE,GAAjB,EAAsB;EAC7B,WAAOoE,SAAS,CAAC,IAAD,EAAOpE,GAAP,CAAhB;EACD,GA/Ba;EAgCdnJ,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBnC,IAAjB,EAAuB;EAC9B,WAAOuT,SAAS,CAACpR,OAAV,CAAkB,IAAlB,EAAwBnC,IAAxB,CAAP;EACD,GAlCa;EAmCd6P,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7P,IAAf,EAAqB;EAC1B,WAAOuT,SAAS,CAAC1D,KAAV,CAAgB,IAAhB,EAAsB7P,IAAtB,CAAP;EACD,GArCa;EAsCd0U,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,QAAIxa,IAAI,GAAG,KAAKA,IAAL,EAAX;EACA,WAAOyI,GAAG,CAACC,UAAJ,CAAe1I,IAAf,CAAP;EACD,GAzCa;EA0Cd+V,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBjQ,IAAlB,EAAwB;EAChC,WAAOkQ,UAAU,CAAC,IAAD,EAAOlQ,IAAP,CAAjB;EACD,GA5Ca;EA6CdmQ,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBnQ,IAAjB,EAAuB;EAC9B,WAAOqQ,SAAS,CAAC,IAAD,EAAOrQ,IAAP,CAAhB;EACD,GA/Ca;EAgDdM,EAAAA,IAAI,EAAE,SAASwQ,MAAT,CAAgB3Q,CAAhB,EAAmBH,IAAnB,EAAyB;EAC7B,WAAOM,IAAI,CAAC,IAAD,EAAOH,CAAP,EAAUH,IAAV,CAAX;EACD,GAlDa;EAmDd+R,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5R,CAAf,EAAkB;EACvB,QAAI,CAACA,CAAL,EAAQ;EACNA,MAAAA,CAAC,GAAG,KAAKe,KAAL,GAAaW,GAAb,EAAJ;EACD;;EAED,WAAO8Q,OAAO,CAAC,IAAD,EAAOxS,CAAP,CAAd;EACD,GAzDa;EA0DdvH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcoH,IAAd,EAAoB;EACxB,QAAI7I,CAAC,GAAG,KAAK2O,GAAL,CAAS,CAAT,EAAY9F,IAAZ,CAAR;EACA,WAAO7I,CAAC,CAACgL,OAAF,CAAUnC,IAAV,CAAP;EACD,GA7Da;EA8Dd;EACA2U,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc3U,IAAd,EAAoB;EACxB,QAAI7I,CAAC,GAAG,KAAK6O,QAAL,CAAc,CAAd,EAAiBhG,IAAjB,CAAR;EACA,WAAO7I,CAAC,CAACgL,OAAF,CAAUnC,IAAV,CAAP;EACD,GAlEa;EAmEd4G,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B;EACA,QAAI,CAAC,KAAK7L,KAAN,IAAe,KAAKA,KAAL,KAAe,CAAlC,EAAqC;EACnC,aAAO,KAAP;EACD;;EAED,WAAO,CAAC+H,KAAK,CAAC,KAAK3C,CAAL,CAAO4D,OAAP,EAAD,CAAb;EACD,GA1Ea;EA2Ed;EACA,UAAQ,SAAS6Q,IAAT,CAAcjZ,EAAd,EAAkB;EACxB,QAAIxE,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,IAAAA,CAAC,CAACwE,EAAF,GAAO6D,IAAI,CAAC7D,EAAD,EAAKxE,CAAC,CAACuE,SAAP,CAAX,CAFwB;;EAIxB,WAAOvE,CAAP;EACD,GAjFa;EAkFd;EACA8a,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejS,IAAf,EAAqBgP,EAArB,EAAyB;EAC9B;EACA,QAAI1X,OAAO,CAAC0I,IAAD,CAAP,KAAkB,QAAlB,IAA8B,OAAOgP,EAAP,KAAc,QAAhD,EAA0D;EACxD,UAAIlL,GAAG,GAAGkL,EAAV;EACAA,MAAAA,EAAE,GAAGhP,IAAL;EACAA,MAAAA,IAAI,GAAG8D,GAAP;EACD;;EAED,WAAO4P,OAAO,CAAC,IAAD,EAAO1T,IAAP,EAAagP,EAAb,CAAd;EACD,GA5Fa;EA6Fd6F,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,QAAIla,IAAI,GAAG,KAAKA,IAAL,EAAX,CAD0B;;EAG1B,QAAIA,IAAI,GAAG,CAAP,IAAYA,IAAI,GAAG,EAAvB,EAA2B;EACzB,aAAO,KAAP;EACD;;EAED,WAAO,IAAP;EACD,GArGa;EAsGdma,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,WAAO,CAAC,KAAKD,OAAL,EAAR;EACD,GAxGa;EAyGd;EACAE,EAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClBnZ,IAAAA,OAAO,CAACmZ,GAAR,CAAY,EAAZ;EACAnZ,IAAAA,OAAO,CAACmZ,GAAR,CAAYvJ,QAAQ,CAAC,IAAD,EAAO,YAAP,CAApB;EACA,WAAO,IAAP;EACD,GA9Ga;EA+GdwJ,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1BpZ,IAAAA,OAAO,CAACmZ,GAAR,CAAY,EAAZ;EACAnZ,IAAAA,OAAO,CAACmZ,GAAR,CAAYvJ,QAAQ,CAAC,IAAD,EAAO,YAAP,CAApB;EACA,WAAO,IAAP;EACD,GAnHa;EAoHd3B,EAAAA,IAAI,EAAE,SAASA,IAAT,GAAgB;EACpB,QAAIoL,KAAK,GAAG,IAAZ;;EAEA,WAAO3C,KAAK,CAACtT,MAAN,CAAa,UAAUC,CAAV,EAAae,IAAb,EAAmB;EACrCf,MAAAA,CAAC,CAACe,IAAD,CAAD,GAAUiV,KAAK,CAACjV,IAAD,CAAL,EAAV;EACA,aAAOf,CAAP;EACD,KAHM,EAGJ,EAHI,CAAP;EAID,GA3Ha;EA4HdiW,EAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;EACtB,QAAIvZ,EAAE,GAAG,KAAKqC,QAAL,EAAT;EACA,QAAI4B,IAAI,GAAG,KAAK9B,MAAL,CAAY,IAAZ,IAAoB,GAApB,GAA0B,KAAKA,MAAL,CAAY,cAAZ,CAA1B,GAAwD,GAAxD,GAA8D,KAAK5D,IAAL,EAAzE;EACA0F,IAAAA,IAAI,IAAI,cAAc,KAAK9B,MAAL,CAAY,MAAZ,CAAtB;EACAlC,IAAAA,OAAO,CAACmZ,GAAR,CAAY,MAAZ,EAAoBnV,IAAI,GAAG,WAAP,GAAqBjE,EAAE,CAACnC,IAAxB,GAA+B,IAA/B,GAAsCmC,EAAE,CAACuE,OAAH,CAAWjG,MAAjD,GAA0D,GAA9E;EACA,WAAO,IAAP;EACD,GAlIa;EAmId;EACAR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc0G,CAAd,EAAiB;EACrBA,IAAAA,CAAC,GAAG,KAAKe,KAAL,GAAaW,GAAb,CAAiB1B,CAAjB,CAAJ;EACA,WAAOA,CAAC,CAAC4R,KAAF,CAAQ,IAAR,CAAP;EACD,GAvIa;EAwIdoD,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,QAAIhV,CAAC,GAAG,KAAKe,KAAL,GAAaW,GAAb,CAAiBjH,IAAI,CAAC8K,GAAL,EAAjB,CAAR;EACA,WAAOvF,CAAC,CAAC4R,KAAF,CAAQ,IAAR,CAAP;EACD,GA3Ia;EA4IdqD,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBpS,KAAnB,EAA0B;EACnC;EACA,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B,WAAKkQ,UAAL,GAAkBlQ,KAAlB;EACA,aAAO,IAAP;EACD;;EAED,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B;EACAA,MAAAA,KAAK,GAAGA,KAAK,CAACjM,WAAN,GAAoBC,IAApB,EAAR;EACA,UAAIwG,GAAG,GAAGwJ,IAAI,CAAC,OAAD,CAAJ,GAAgBmE,OAAhB,CAAwBnI,KAAxB,CAAV;;EAEA,UAAIxF,GAAG,KAAK,CAAC,CAAb,EAAgB;EACdA,QAAAA,GAAG,GAAGwJ,IAAI,CAAC,MAAD,CAAJ,GAAemE,OAAf,CAAuBnI,KAAvB,CAAN;EACD;;EAED,UAAIxF,GAAG,KAAK,CAAC,CAAb,EAAgB;EACdA,QAAAA,GAAG,GAAG,CAAN,CADc;EAEf;;EAED,WAAK0V,UAAL,GAAkB1V,GAAlB;EACD,KAdD,MAcO;EACL5B,MAAAA,OAAO,CAACC,IAAR,CAAa,wDAAb,EAAuEmH,KAAvE;EACD;;EAED,WAAO,IAAP;EACD;EAtKa,CAAhB;;EAyKAuR,SAAS,CAACc,KAAV,GAAkBd,SAAS,CAACF,KAA5B;EACAE,SAAS,CAACe,KAAV,GAAkBf,SAAS,CAACpE,OAA5B;EACAoE,SAAS,CAACgB,IAAV,GAAiBhB,SAAS,CAACtC,KAA3B;EACA,IAAIuD,SAAS,GAAGjB,SAAhB;;EAIA,IAAIkB,YAAY,GAAG9S,GAAG,CAACC,UAAvB;;EAEA,IAAI8S,QAAQ,GAAG,SAASA,QAAT,CAAkBtc,CAAlB,EAAqB;EAClC;EACA,MAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACzBA,IAAAA,CAAC,GAAG+H,QAAQ,CAAC/H,CAAD,EAAI,EAAJ,CAAZ;EACD;;EAED,SAAOA,CAAP;EACD,CAPD;;EASA,IAAIuc,OAAO,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,QAAlC,EAA4C,QAA5C,EAAsD,aAAtD,CAAd;;EAEA,IAAIC,OAAO,GAAG,SAASA,OAAT,CAAiBze,CAAjB,EAAoB2M,GAApB,EAAyB9D,IAAzB,EAA+B;EAC3C,MAAI5G,CAAC,GAAGuc,OAAO,CAACxK,OAAR,CAAgBnL,IAAhB,CAAR;EACA,MAAInI,GAAG,GAAG8d,OAAO,CAACpc,KAAR,CAAcH,CAAd,EAAiBuc,OAAO,CAAC/e,MAAzB,CAAV;;EAEA,OAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkB,GAAG,CAACjB,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;EACnC,QAAIkf,IAAI,GAAG/R,GAAG,CAACjM,GAAG,CAAClB,CAAD,CAAJ,CAAH,EAAX;EACAQ,IAAAA,CAAC,CAACU,GAAG,CAAClB,CAAD,CAAJ,CAAD,CAAUkf,IAAV;EACD;;EAED,SAAO1e,CAAP;EACD,CAVD;;EAYA,IAAI0K,GAAG,GAAG;EACR/B,EAAAA,YAAY,EAAE,SAASA,YAAT,CAAsB3I,CAAtB,EAAyBiC,CAAzB,EAA4B;EACxCA,IAAAA,CAAC,GAAGsc,QAAQ,CAACtc,CAAD,CAAZ;EACA,QAAI8G,OAAO,GAAG/I,CAAC,CAACsI,WAAF,EAAd;EACA,QAAIa,IAAI,GAAGJ,OAAO,GAAG9G,CAArB,CAHwC;;EAKxC,WAAOjC,CAAC,CAAC4D,KAAF,GAAUuF,IAAjB;EACD,GAPO;EAQRS,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB5J,CAAjB,EAAoBiC,CAApB,EAAuB;EAC9BA,IAAAA,CAAC,GAAGsc,QAAQ,CAACtc,CAAD,CAAZ;EACA,QAAIkH,IAAI,GAAGnJ,CAAC,CAACuI,MAAF,KAAatG,CAAxB;EACA,QAAI0c,KAAK,GAAGxV,IAAI,GAAGR,YAAY,CAACJ,MAAhC;EACA,WAAOvI,CAAC,CAAC4D,KAAF,GAAU+a,KAAjB;EACD,GAbO;EAcRxR,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBnN,CAAjB,EAAoBiC,CAApB,EAAuB;EAC9BA,IAAAA,CAAC,GAAGsc,QAAQ,CAACtc,CAAD,CAAZ;EACA,QAAI6H,GAAG,GAAG9J,CAAC,CAAC+J,KAAF,EAAV;EACA,QAAIZ,IAAI,GAAGnJ,CAAC,CAACwI,MAAF,KAAavG,CAAxB;EACA,QAAI0c,KAAK,GAAGxV,IAAI,GAAGR,YAAY,CAACH,MAAhC;EACAxI,IAAAA,CAAC,CAAC4D,KAAF,IAAW+a,KAAX,CAL8B;EAM9B;EACA;EACA;EACA;EACA;EACA;;EAEAF,IAAAA,OAAO,CAACze,CAAD,EAAI8J,GAAJ,EAAS,QAAT,CAAP;EACA,WAAO9J,CAAC,CAAC4D,KAAT;EACD,GA7BO;EA8BRsJ,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAelN,CAAf,EAAkBiC,CAAlB,EAAqB;EAC1BA,IAAAA,CAAC,GAAGsc,QAAQ,CAACtc,CAAD,CAAZ;;EAEA,QAAIA,CAAC,IAAI,EAAT,EAAa;EACXA,MAAAA,CAAC,GAAG,EAAJ;EACD,KAFD,MAEO,IAAIA,CAAC,GAAG,CAAR,EAAW;EAChBA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAED,QAAI6H,GAAG,GAAG9J,CAAC,CAAC+J,KAAF,EAAV;EACA,QAAIZ,IAAI,GAAGnJ,CAAC,CAACwD,IAAF,KAAWvB,CAAtB;EACA,QAAI0c,KAAK,GAAGxV,IAAI,GAAGR,YAAY,CAACnF,IAAhC;EACAxD,IAAAA,CAAC,CAAC4D,KAAF,IAAW+a,KAAX,CAZ0B;;EAc1B,QAAI3e,CAAC,CAACyI,IAAF,OAAaqB,GAAG,CAACrB,IAAJ,EAAjB,EAA6B;EAC3BzI,MAAAA,CAAC,GAAG8J,GAAG,CAACC,KAAJ,EAAJ;;EAEA,UAAIZ,IAAI,GAAG,CAAX,EAAc;EACZA,QAAAA,IAAI,IAAI,CAAR;EACD;;EAED,UAAIA,IAAI,GAAG,CAAX,EAAc;EACZA,QAAAA,IAAI,IAAI,CAAR;EACD;;EAEDwV,MAAAA,KAAK,GAAGxV,IAAI,GAAGR,YAAY,CAACnF,IAA5B;EACAxD,MAAAA,CAAC,CAAC4D,KAAF,IAAW+a,KAAX;EACD;;EAEDzU,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRwD,MAAAA,IAAI,EAAEvB;EADE,KAAJ,CAAN;EAGAwc,IAAAA,OAAO,CAACze,CAAD,EAAI8J,GAAJ,EAAS,QAAT,CAAP;EACA,WAAO9J,CAAC,CAAC4D,KAAT;EACD,GAhEO;EAiER;EACAqO,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjS,CAAd,EAAiBkG,GAAjB,EAAsB;EAC1B,QAAIsB,CAAC,GAAGtB,GAAG,CAACuB,KAAJ,CAAU,sDAAV,CAAR;;EAEA,QAAI,CAACD,CAAL,EAAQ;EACN;EACAA,MAAAA,CAAC,GAAGtB,GAAG,CAACuB,KAAJ,CAAU,uBAAV,CAAJ;;EAEA,UAAI,CAACD,CAAL,EAAQ;EACN,eAAOxH,CAAC,CAAC4D,KAAT;EACD;;EAED4D,MAAAA,CAAC,CAAC+T,MAAF,CAAS,CAAT,EAAY,CAAZ,EAAe,GAAf,EARM;;EAUN/T,MAAAA,CAAC,CAAC+T,MAAF,CAAS,CAAT,EAAY,CAAZ,EAAe,EAAf,EAVM;EAWP;;EAED,QAAIvI,GAAG,GAAG,KAAV;EACA,QAAIxP,IAAI,GAAGwG,QAAQ,CAACxC,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;EACA,QAAIgB,MAAM,GAAGwB,QAAQ,CAACxC,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAArB;;EAEA,QAAIhE,IAAI,GAAG,EAAX,EAAe;EACbwP,MAAAA,GAAG,GAAG,IAAN;EACD,KAtByB;;;EAyB1B,QAAIA,GAAG,KAAK,KAAZ,EAAmB;EACjB,UAAIxL,CAAC,CAAC,CAAD,CAAD,KAAS,IAAT,IAAiBhE,IAAI,KAAK,EAA9B,EAAkC;EAChC;EACAA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,UAAIgE,CAAC,CAAC,CAAD,CAAD,KAAS,IAAT,IAAiBhE,IAAI,GAAG,EAA5B,EAAgC;EAC9B;EACAA,QAAAA,IAAI,IAAI,EAAR;EACD;EACF,KAnCyB;;;EAsC1BgE,IAAAA,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAD,IAAQ,EAAf;EACAA,IAAAA,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAD,CAAKrB,OAAL,CAAa,GAAb,EAAkB,EAAlB,CAAP;EACA,QAAIyY,GAAG,GAAG5U,QAAQ,CAACxC,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAR,IAAsB,CAAhC;EACAxH,IAAAA,CAAC,GAAGA,CAAC,CAACwD,IAAF,CAAOA,IAAP,CAAJ;EACAxD,IAAAA,CAAC,GAAGA,CAAC,CAACwI,MAAF,CAASA,MAAT,CAAJ;EACAxI,IAAAA,CAAC,GAAGA,CAAC,CAACuI,MAAF,CAASqW,GAAT,CAAJ;EACA5e,IAAAA,CAAC,GAAGA,CAAC,CAACsI,WAAF,CAAc,CAAd,CAAJ;EACA,WAAOtI,CAAC,CAAC4D,KAAT;EACD,GAhHO;EAiHR6E,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAczI,CAAd,EAAiBiC,CAAjB,EAAoB;EACxBA,IAAAA,CAAC,GAAGsc,QAAQ,CAACtc,CAAD,CAAZ,CADwB;;EAGxB,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV,UAAIkB,KAAK,GAAGnD,CAAC,CAACmD,KAAF,EAAZ;EACA,UAAImK,GAAG,GAAG/B,cAAc,CAACpI,KAAD,CAAxB,CAFU;;EAIV,UAAIA,KAAK,KAAK,CAAV,IAAelB,CAAC,KAAK,EAArB,IAA2Bqc,YAAY,CAACte,CAAC,CAAC+C,IAAF,EAAD,CAA3C,EAAuD;EACrDuK,QAAAA,GAAG,GAAG,EAAN;EACD;;EAED,UAAIrL,CAAC,GAAGqL,GAAR,EAAa;EACXrL,QAAAA,CAAC,GAAGqL,GAAJ;EACD;EACF,KAduB;;;EAiBxB,QAAIrL,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAEDiI,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRyI,MAAAA,IAAI,EAAExG;EADE,KAAJ,CAAN;EAGA,WAAOjC,CAAC,CAAC4D,KAAT;EACD,GA1IO;EA2IR;EACAT,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAenD,CAAf,EAAkBiC,CAAlB,EAAqB;EAC1B,QAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACzBA,MAAAA,CAAC,GAAGsI,QAAQ,CAACzK,OAAT,GAAmBmC,CAAC,CAACrC,WAAF,EAAnB,CAAJ;EACD;;EAEDqC,IAAAA,CAAC,GAAGsc,QAAQ,CAACtc,CAAD,CAAZ,CAL0B;;EAO1B,QAAIA,CAAC,IAAI,EAAT,EAAa;EACXA,MAAAA,CAAC,GAAG,EAAJ;EACD;;EAED,QAAIA,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAED,QAAIwG,IAAI,GAAGzI,CAAC,CAACyI,IAAF,EAAX,CAf0B;;EAiB1B,QAAIA,IAAI,GAAG8C,cAAc,CAACtJ,CAAD,CAAzB,EAA8B;EAC5B;EACAwG,MAAAA,IAAI,GAAG8C,cAAc,CAACtJ,CAAD,CAArB;EACD;;EAEDiI,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRmD,MAAAA,KAAK,EAAElB,CADC;EAERwG,MAAAA,IAAI,EAAEA;EAFE,KAAJ,CAAN;EAIA,WAAOzI,CAAC,CAAC4D,KAAT;EACD,GAvKO;EAwKRb,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/C,CAAd,EAAiBiC,CAAjB,EAAoB;EACxB;EACA,QAAI,OAAOA,CAAP,KAAa,QAAb,IAAyB,cAAcM,IAAd,CAAmBN,CAAnB,CAA7B,EAAoD;EAClDA,MAAAA,CAAC,GAAGA,CAAC,CAACkE,OAAF,CAAU,GAAV,EAAe,EAAf,EAAmBtG,IAAnB,EAAJ;EACAoC,MAAAA,CAAC,GAAG+D,MAAM,CAAC/D,CAAD,CAAV,CAFkD;;EAIlD,UAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACAA,QAAAA,CAAC,GAAG,OAAOA,CAAX;EACD,OAHD,MAGO;EACL;EACAA,QAAAA,CAAC,GAAG,OAAOA,CAAX;EACD;EACF;;EAEDA,IAAAA,CAAC,GAAGsc,QAAQ,CAACtc,CAAD,CAAZ;EACAiI,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACR+C,MAAAA,IAAI,EAAEd;EADE,KAAJ,CAAN;EAGA,WAAOjC,CAAC,CAAC4D,KAAT;EACD,GA5LO;EA6LR+R,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB3V,CAAnB,EAAsBiC,CAAtB,EAAyB;EAClCA,IAAAA,CAAC,GAAGsc,QAAQ,CAACtc,CAAD,CAAZ;EACA,QAAI6H,GAAG,GAAG9J,CAAC,CAAC+J,KAAF,EAAV;EACA9H,IAAAA,CAAC,IAAI,CAAL,CAHkC;;EAKlC,QAAIA,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD,KAFD,MAEO,IAAIA,CAAC,IAAI,GAAT,EAAc;EACnBA,MAAAA,CAAC,GAAG,GAAJ;EACD;;EAEDjC,IAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,MAAV,CAAJ;EACAhL,IAAAA,CAAC,GAAGA,CAAC,CAAC2O,GAAF,CAAM1M,CAAN,EAAS,KAAT,CAAJ;EACAwc,IAAAA,OAAO,CAACze,CAAD,EAAI8J,GAAJ,EAAS,MAAT,CAAP;EACA,WAAO9J,CAAC,CAAC4D,KAAT;EACD;EA5MO,CAAV;EA+MA,IAAIib,SAAS,GAAG;EACdvW,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqBjC,GAArB,EAA0B;EACrC,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAAC/B,YAAJ,CAAiB3I,CAAjB,EAAoBqG,GAApB,CAAV;EACA,aAAOrG,CAAP;EACD;;EAED,WAAO,KAAKgJ,CAAL,CAAO8V,eAAP,EAAP;EACD,GATa;EAUdvW,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlC,GAAhB,EAAqB;EAC3B,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACd,OAAJ,CAAY5J,CAAZ,EAAeqG,GAAf,CAAV;EACA,aAAOrG,CAAP;EACD;;EAED,WAAO,KAAKgJ,CAAL,CAAO+V,UAAP,EAAP;EACD,GAlBa;EAmBdvW,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBnC,GAAhB,EAAqB;EAC3B,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACyC,OAAJ,CAAYnN,CAAZ,EAAeqG,GAAf,CAAV;EACA,aAAOrG,CAAP;EACD;;EAED,WAAO,KAAKgJ,CAAL,CAAOgW,UAAP,EAAP;EACD,GA3Ba;EA4Bdxb,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc6C,GAAd,EAAmB;EACvB,QAAI2C,CAAC,GAAG,KAAKA,CAAb;;EAEA,QAAI3C,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACwC,KAAJ,CAAUlN,CAAV,EAAaqG,GAAb,CAAV;EACA,aAAOrG,CAAP;EACD;;EAED,WAAOgJ,CAAC,CAACiW,QAAF,EAAP;EACD,GAtCa;EAuCd;EACAC,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB7Y,GAAnB,EAAwB;EACjC,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;;EAEA,UAAIoV,OAAO,GAAG9Y,GAAG,GAAG,CAApB;;EAEA8Y,MAAAA,OAAO,GAAGA,OAAO,GAAG,EAApB;;EAEA,UAAIC,KAAK,GAAGpV,QAAQ,CAAC3D,GAAD,EAAM,EAAN,CAApB;;EAEArG,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACwC,KAAJ,CAAUlN,CAAV,EAAaof,KAAb,CAAV;EACApf,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACyC,OAAJ,CAAYnN,CAAZ,EAAemf,OAAf,CAAV;EACA,aAAOnf,CAAP;EACD;;EAED,QAAIgJ,CAAC,GAAG,KAAKA,CAAb;EACA,QAAIxF,IAAI,GAAGwF,CAAC,CAACiW,QAAF,EAAX;EACA,QAAIzW,MAAM,GAAGQ,CAAC,CAACgW,UAAF,EAAb;EACAxW,IAAAA,MAAM,GAAGA,MAAM,GAAG,EAAlB;EACA,WAAOhF,IAAI,GAAGgF,MAAd;EACD,GA5Da;EA6Dd;EACA4J,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlM,GAAhB,EAAqB;EAC3B,QAAI8C,CAAC,GAAG,KAAKA,CAAb;;EAEA,QAAI9C,GAAG,KAAK5E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA7D,MAAAA,GAAG,GAAG,KAAKA,GAAX;EACA,UAAIsB,CAAC,GAAGtB,GAAG,CAACuB,KAAJ,CAAU,mBAAV,CAAR;;EAEA,UAAID,CAAJ,EAAO;EACL,YAAIhE,IAAI,GAAGwG,QAAQ,CAACxC,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;;EAEA,YAAIA,CAAC,CAAC,CAAD,CAAD,KAAS,IAAb,EAAmB;EACjBhE,UAAAA,IAAI,IAAI,EAAR;EACD;;EAEDxD,QAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACwC,KAAJ,CAAUlN,CAAV,EAAawD,IAAb,CAAV;EACD;;EAED,aAAOxD,CAAP;EACD,KAnB0B;;;EAsB3B,QAAIoS,MAAM,GAAGpJ,CAAC,CAACiW,QAAF,EAAb;;EAEA,QAAI7M,MAAM,GAAG,EAAb,EAAiB;EACfA,MAAAA,MAAM,GAAGA,MAAM,GAAG,EAAlB;EACD;;EAED,QAAIA,MAAM,KAAK,CAAf,EAAkB;EAChBA,MAAAA,MAAM,GAAG,EAAT;EACD;;EAED,WAAOA,MAAP;EACD,GA/Fa;EAgGd;EACAH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/L,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAK5E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA7D,MAAAA,GAAG,GAAGA,GAAG,CAACtG,WAAJ,GAAkBC,IAAlB,EAAN;EACAG,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACuH,IAAJ,CAASjS,CAAT,EAAYkG,GAAZ,CAAV;EACA,aAAOlG,CAAP;EACD;;EAED,WAAO,GAAGiL,MAAH,CAAU,KAAK2L,GAAL,EAAV,EAAsB,GAAtB,EAA2B3L,MAA3B,CAAkCO,GAAG,CAACQ,OAAJ,CAAY,KAAKxD,MAAL,EAAZ,CAAlC,EAA8DyC,MAA9D,CAAqE,KAAKE,IAAL,EAArE,CAAP;EACD,GA1Ga;EA2Gd;EACAA,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcU,KAAd,EAAqB;EACzB,QAAIwT,KAAK,GAAG,IAAZ;EACA,QAAI7b,IAAI,GAAG,KAAKA,IAAL,EAAX;;EAEA,QAAIA,IAAI,IAAI,EAAZ,EAAgB;EACd6b,MAAAA,KAAK,GAAG,IAAR;EACD;;EAED,QAAI,OAAOxT,KAAP,KAAiB,QAArB,EAA+B;EAC7B,aAAOwT,KAAP;EACD,KAVwB;;;EAazB,QAAIrf,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA8B,IAAAA,KAAK,GAAGA,KAAK,CAACjM,WAAN,GAAoBC,IAApB,EAAR,CAdyB;EAezB;;EAEA,QAAI2D,IAAI,IAAI,EAAR,IAAcqI,KAAK,KAAK,IAA5B,EAAkC;EAChC;EACArI,MAAAA,IAAI,IAAI,EAAR;EACA,aAAOxD,CAAC,CAACwD,IAAF,CAAOA,IAAP,CAAP;EACD;;EAED,QAAIA,IAAI,GAAG,EAAP,IAAaqI,KAAK,KAAK,IAA3B,EAAiC;EAC/BrI,MAAAA,IAAI,IAAI,EAAR;EACA,aAAOxD,CAAC,CAACwD,IAAF,CAAOA,IAAP,CAAP;EACD;;EAED,WAAOxD,CAAP;EACD,GAzIa;EA0Id;EACAsf,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBpZ,GAAjB,EAAsB;EAC7B,QAAIA,GAAG,KAAK5E,SAAZ,EAAuB;EACrB,UAAIie,KAAK,GAAG;EACVC,QAAAA,OAAO,EAAE,QADC;EAEVC,QAAAA,SAAS,EAAE,QAFD;EAGVC,QAAAA,IAAI,EAAE,SAHI;EAIVC,QAAAA,KAAK,EAAE,SAJG;EAKVC,QAAAA,SAAS,EAAE,QALD;EAMVC,QAAAA,OAAO,EAAE,QANC;EAOVC,QAAAA,MAAM,EAAE,QAPE;EAQVC,QAAAA,KAAK,EAAE,SARG;EASVC,QAAAA,QAAQ,EAAE;EATA,OAAZ;EAWA,UAAIhgB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA7D,MAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;EACAA,MAAAA,GAAG,GAAGA,GAAG,CAACtG,WAAJ,EAAN;;EAEA,UAAI2f,KAAK,CAACxf,cAAN,CAAqBmG,GAArB,MAA8B,IAAlC,EAAwC;EACtClG,QAAAA,CAAC,GAAGA,CAAC,CAACiS,IAAF,CAAOsN,KAAK,CAACrZ,GAAD,CAAZ,CAAJ;EACD;;EAED,aAAOlG,CAAP;EACD;;EAED,QAAI8H,CAAC,GAAG,KAAKtE,IAAL,EAAR;;EAEA,QAAIsE,CAAC,GAAG,CAAR,EAAW;EACT,aAAO,OAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,SAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,WAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,SAAP;EACD;;EAED,WAAO,OAAP;EACD,GAzLa;EA0Ld;EACAiL,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa1M,GAAb,EAAkB;EACrB,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,aAAO,KAAKoJ,GAAL,CAASrE,GAAT,CAAP;EACD;;EAED,WAAO,KAAKM,MAAL,CAAY,KAAZ,CAAP;EACD;EAjMa,CAAhB;EAmMA,IAAIsZ,OAAO,GAAGpB,SAAd;EAEA,IAAIqB,SAAS,GAAG;EACd;EACAzX,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcpC,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA1D,MAAAA,GAAG,GAAG2D,QAAQ,CAAC3D,GAAD,EAAM,EAAN,CAAd;;EAEA,UAAIA,GAAJ,EAAS;EACPrG,QAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACjC,IAAJ,CAASzI,CAAT,EAAYqG,GAAZ,CAAV;EACD;;EAED,aAAOrG,CAAP;EACD;;EAED,WAAO,KAAKgJ,CAAL,CAAOoF,OAAP,EAAP;EACD,GAfa;EAgBd;EACA7K,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAasI,KAAb,EAAoB;EACvB,QAAIA,KAAK,KAAKvK,SAAd,EAAyB;EACvB,aAAO,KAAK0H,CAAL,CAAOmX,MAAP,EAAP;EACD;;EAED,QAAIjX,QAAQ,GAAG,KAAKa,KAAL,EAAf;EACA,QAAI2U,IAAI,GAAG7S,KAAX,CANuB;;EAQvB,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,MAAAA,KAAK,GAAGA,KAAK,CAACjM,WAAN,EAAR;;EAEA,UAAIiQ,IAAI,CAACC,OAAL,CAAa/P,cAAb,CAA4B8L,KAA5B,CAAJ,EAAwC;EACtC6S,QAAAA,IAAI,GAAG7O,IAAI,CAACC,OAAL,CAAajE,KAAb,CAAP;EACD,OAFD,MAEO;EACL6S,QAAAA,IAAI,GAAG7O,IAAI,CAAC,OAAD,CAAJ,GAAgBmE,OAAhB,CAAwBnI,KAAxB,CAAP;;EAEA,YAAI6S,IAAI,KAAK,CAAC,CAAd,EAAiB;EACfA,UAAAA,IAAI,GAAG7O,IAAI,CAAC,MAAD,CAAJ,GAAemE,OAAf,CAAuBnI,KAAvB,CAAP;EACD;EACF;EACF,KApBsB;;;EAuBvB,QAAItI,GAAG,GAAG,KAAKyF,CAAL,CAAOmX,MAAP,EAAV;EACA,QAAIhX,IAAI,GAAG5F,GAAG,GAAGmb,IAAjB;EACA,QAAI1e,CAAC,GAAG,KAAK6O,QAAL,CAAc1F,IAAd,EAAoB,MAApB,CAAR,CAzBuB;;EA2BvBe,IAAAA,MAAM,CAAClK,CAAD,EAAI;EACRwD,MAAAA,IAAI,EAAE0F,QAAQ,CAAC1F,IAAT,EADE;EAERgF,MAAAA,MAAM,EAAEU,QAAQ,CAACV,MAAT,EAFA;EAGRD,MAAAA,MAAM,EAAEW,QAAQ,CAACX,MAAT;EAHA,KAAJ,CAAN;EAKA,WAAOvI,CAAP;EACD,GAlDa;EAmDd;EACAiR,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBpF,KAAjB,EAAwB;EAC/B,QAAIA,KAAK,KAAKvK,SAAd,EAAyB;EACvB,aAAOuO,IAAI,CAAC,MAAD,CAAJ,GAAe,KAAKtM,GAAL,EAAf,CAAP;EACD;;EAED,QAAIvD,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,IAAAA,CAAC,GAAGA,CAAC,CAACuD,GAAF,CAAMsI,KAAN,CAAJ;EACA,WAAO7L,CAAP;EACD,GA5Da;EA6Dd;EACAmD,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0I,KAAf,EAAsB;EAC3B,QAAIA,KAAK,KAAKvK,SAAd,EAAyB;EACvB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACvH,KAAJ,CAAUnD,CAAV,EAAa6L,KAAb,CAAV;EACA,aAAO7L,CAAP;EACD;;EAED,WAAO,KAAKgJ,CAAL,CAAOU,QAAP,EAAP;EACD;EAtEa,CAAhB;EAwEA,IAAI0W,OAAO,GAAGF,SAAd;;EAEA,IAAIG,YAAY,GAAG,SAASA,YAAT,CAAsBrgB,CAAtB,EAAyB;EAC1CA,EAAAA,CAAC,GAAGA,CAAC,CAACwI,MAAF,CAAS,CAAT,CAAJ;EACAxI,EAAAA,CAAC,GAAGA,CAAC,CAACuI,MAAF,CAAS,CAAT,CAAJ;EACAvI,EAAAA,CAAC,GAAGA,CAAC,CAACsI,WAAF,CAAc,CAAd,CAAJ;EACA,SAAOtI,CAAP;EACD,CALD;;EAOA,IAAIsgB,SAAS,GAAG;EACd;EACA3K,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBtP,GAAnB,EAAwB;EACjC,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAACiL,SAAJ,CAAc3V,CAAd,EAAiBqG,GAAjB,CAAV;EACA,aAAOrG,CAAP;EACD,KALgC;;;EAQjC,QAAIugB,GAAG,GAAG,CAAV;EACA,QAAIpd,KAAK,GAAG,KAAK6F,CAAL,CAAOU,QAAP,EAAZ;EACA,QAAIiD,GAAJ,CAViC;;EAYjC,SAAK,IAAInN,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI2D,KAArB,EAA4B3D,CAAC,EAA7B,EAAiC;EAC/BmN,MAAAA,GAAG,GAAG,IAAIlJ,IAAJ,EAAN;EACAkJ,MAAAA,GAAG,CAAC6T,OAAJ,CAAY,CAAZ;EACA7T,MAAAA,GAAG,CAAC8T,WAAJ,CAAgB,KAAKzX,CAAL,CAAOW,WAAP,EAAhB,EAH+B;;EAK/BgD,MAAAA,GAAG,CAAC+T,QAAJ,CAAa,CAAb;EACA/T,MAAAA,GAAG,CAACgU,UAAJ,CAAe,CAAf;EACAhU,MAAAA,GAAG,CAACiU,QAAJ,CAAaphB,CAAb;EACAmN,MAAAA,GAAG,CAAC+T,QAAJ,CAAa,CAAC,CAAd,EAR+B;;EAU/BH,MAAAA,GAAG,IAAI5T,GAAG,CAACyB,OAAJ,EAAP;EACD;;EAED,WAAOmS,GAAG,GAAG,KAAKvX,CAAL,CAAOoF,OAAP,EAAb;EACD,GA5Ba;EA6Bd;EACA1F,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrC,GAAd,EAAmB;EACvB;EACA,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,MAAAA,CAAC,GAAGA,CAAC,CAACmD,KAAF,CAAQ,CAAR,CAAJ;EACAnD,MAAAA,CAAC,GAAGA,CAAC,CAACyI,IAAF,CAAO,CAAP,CAAJ;EACAzI,MAAAA,CAAC,GAAGA,CAAC,CAACuD,GAAF,CAAM,QAAN,CAAJ;EACAvD,MAAAA,CAAC,GAAGqgB,YAAY,CAACrgB,CAAD,CAAhB,CALqB;EAMrB;EACA;;EAEA,UAAIA,CAAC,CAACwR,SAAF,OAAkB,UAAlB,IAAgCxR,CAAC,CAACyI,IAAF,MAAY,EAAhD,EAAoD;EAClDzI,QAAAA,CAAC,GAAGA,CAAC,CAAC2O,GAAF,CAAM,CAAN,EAAS,MAAT,CAAJ;EACD;;EAEDtI,MAAAA,GAAG,IAAI,CAAP,CAbqB;;EAerBrG,MAAAA,CAAC,GAAGA,CAAC,CAAC2O,GAAF,CAAMtI,GAAN,EAAW,OAAX,CAAJ;EACA,aAAOrG,CAAP;EACD,KAnBsB;;;EAsBvB,QAAI2M,GAAG,GAAG,KAAK5C,KAAL,EAAV;EACA4C,IAAAA,GAAG,GAAGA,GAAG,CAACxJ,KAAJ,CAAU,CAAV,CAAN;EACAwJ,IAAAA,GAAG,GAAGA,GAAG,CAAClE,IAAJ,CAAS,CAAT,CAAN;EACAkE,IAAAA,GAAG,GAAG0T,YAAY,CAAC1T,GAAD,CAAlB;EACAA,IAAAA,GAAG,GAAGA,GAAG,CAACpJ,GAAJ,CAAQ,QAAR,CAAN,CA1BuB;;EA4BvB,QAAIoJ,GAAG,CAAC6E,SAAJ,OAAoB,UAApB,IAAkC7E,GAAG,CAAClE,IAAJ,MAAc,EAApD,EAAwD;EACtDkE,MAAAA,GAAG,GAAGA,GAAG,CAACgC,GAAJ,CAAQ,CAAR,EAAW,MAAX,CAAN;EACD,KA9BsB;;;EAiCvB,QAAIkS,KAAK,GAAG,CAAZ;;EAEA,QAAIlU,GAAG,CAAClE,IAAJ,OAAe,CAAnB,EAAsB;EACpBoY,MAAAA,KAAK,GAAG,CAAR;EACD;;EAEDlU,IAAAA,GAAG,GAAGA,GAAG,CAACmU,KAAJ,CAAU,CAAV,EAAa,QAAb,CAAN;EACA,QAAIC,OAAO,GAAG,KAAKnd,KAAnB,CAxCuB;;EA0CvB,QAAI+I,GAAG,CAAC/I,KAAJ,GAAYmd,OAAhB,EAAyB;EACvB,aAAO,CAAP;EACD,KA5CsB;;;EA+CvB,QAAIvhB,CAAC,GAAG,CAAR;EACA,QAAIwhB,SAAS,GAAG,KAAK7d,KAAL,KAAe,CAA/B;EACAwJ,IAAAA,GAAG,CAAC/I,KAAJ,IAAa+E,YAAY,CAACD,IAAb,GAAoBsY,SAAjC;EACAxhB,IAAAA,CAAC,IAAIwhB,SAAL;;EAEA,WAAOxhB,CAAC,IAAI,EAAZ,EAAgBA,CAAC,EAAjB,EAAqB;EACnB,UAAImN,GAAG,CAAC/I,KAAJ,GAAYmd,OAAhB,EAAyB;EACvB,eAAOvhB,CAAC,GAAGqhB,KAAX;EACD;;EAEDlU,MAAAA,GAAG,GAAGA,GAAG,CAACgC,GAAJ,CAAQ,CAAR,EAAW,MAAX,CAAN;EACD;;EAED,WAAO,EAAP;EACD,GA3Fa;EA4Fd;EACA6C,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB3F,KAAnB,EAA0B;EACnC,QAAIA,KAAK,KAAKvK,SAAd,EAAyB;EACvB,aAAOiJ,QAAQ,CAAC,MAAD,CAAR,GAAmB,KAAKpH,KAAL,EAAnB,CAAP;EACD;;EAED,QAAInD,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,IAAAA,CAAC,GAAGA,CAAC,CAACmD,KAAF,CAAQ0I,KAAR,CAAJ;EACA,WAAO7L,CAAP;EACD,GArGa;EAsGd;EACAkO,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB7H,GAAjB,EAAsB;EAC7B,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAI,OAAO+E,GAAP,KAAe,QAAnB,EAA6B;EAC3BA,QAAAA,GAAG,GAAGA,GAAG,CAACF,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;EACAE,QAAAA,GAAG,GAAG2D,QAAQ,CAAC3D,GAAD,EAAM,EAAN,CAAd;EACD;;EAED,UAAIuV,QAAQ,CAACvV,GAAD,CAAZ,EAAmB;EACjB,YAAIrG,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA,YAAIkX,MAAM,GAAGrF,QAAQ,CAACvV,GAAD,CAAR,CAAc,CAAd,CAAb;EACArG,QAAAA,CAAC,GAAGA,CAAC,CAACmD,KAAF,CAAQ8d,MAAR,CAAJ;EACAjhB,QAAAA,CAAC,GAAGA,CAAC,CAACyI,IAAF,CAAO,CAAP,CAAJ;EACAzI,QAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAJ;EACA,eAAOhL,CAAP;EACD;EACF;;EAED,QAAImD,KAAK,GAAG,KAAK6F,CAAL,CAAOU,QAAP,EAAZ;;EAEA,SAAK,IAAIlK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoc,QAAQ,CAACnc,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;EACxC,UAAI2D,KAAK,GAAGyY,QAAQ,CAACpc,CAAD,CAAR,CAAY,CAAZ,CAAZ,EAA4B;EAC1B,eAAOA,CAAC,GAAG,CAAX;EACD;EACF;;EAED,WAAO,CAAP;EACD,GAjIa;EAkId;EACA2O,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBtC,KAAhB,EAAuB;EAC7B,QAAI/G,GAAG,GAAG,OAAV;;EAEA,QAAI,KAAKmX,UAAL,OAAsB,OAA1B,EAAmC;EACjCnX,MAAAA,GAAG,GAAG,OAAN;EACD;;EAED,QAAI+G,KAAK,KAAKvK,SAAd,EAAyB;EACvB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;;EAEA,WAAK,IAAIvK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGic,OAAO,CAAC3W,GAAD,CAAP,CAAarF,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;EAC5C,YAAIqM,KAAK,KAAK4P,OAAO,CAAC3W,GAAD,CAAP,CAAatF,CAAb,EAAgB,CAAhB,CAAd,EAAkC;EAChCQ,UAAAA,CAAC,GAAGA,CAAC,CAACmD,KAAF,CAAQsY,OAAO,CAAC3W,GAAD,CAAP,CAAatF,CAAb,EAAgB,CAAhB,CAAR,CAAJ;EACAQ,UAAAA,CAAC,GAAGA,CAAC,CAACyI,IAAF,CAAO,CAAP,CAAJ;EACAzI,UAAAA,CAAC,GAAGA,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAJ;EACD;EACF;;EAED,aAAOhL,CAAP;EACD;;EAED,QAAImD,KAAK,GAAG,KAAK6F,CAAL,CAAOU,QAAP,EAAZ;;EAEA,SAAK,IAAInI,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGka,OAAO,CAAC3W,GAAD,CAAP,CAAarF,MAAb,GAAsB,CAA5C,EAA+C8B,EAAE,EAAjD,EAAqD;EACnD,UAAI4B,KAAK,IAAIsY,OAAO,CAAC3W,GAAD,CAAP,CAAavD,EAAb,EAAiB,CAAjB,CAAT,IAAgC4B,KAAK,GAAGsY,OAAO,CAAC3W,GAAD,CAAP,CAAavD,EAAE,GAAG,CAAlB,EAAqB,CAArB,CAA5C,EAAqE;EACnE,eAAOka,OAAO,CAAC3W,GAAD,CAAP,CAAavD,EAAb,EAAiB,CAAjB,CAAP;EACD;EACF;;EAED,WAAO,QAAP;EACD,GAjKa;EAkKd;EACAwB,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsD,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAK/E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA/J,MAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAAC3H,IAAJ,CAAS/C,CAAT,EAAYqG,GAAZ,CAAV;EACA,aAAOrG,CAAP;EACD;;EAED,WAAO,KAAKgJ,CAAL,CAAOW,WAAP,EAAP;EACD,GA3Ka;EA4Kd;EACA8I,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavM,GAAb,EAAkB;EACrB,QAAIA,GAAG,KAAK5E,SAAZ,EAAuB;EACrB,UAAItB,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA7D,MAAAA,GAAG,GAAGA,GAAG,CAACtG,WAAJ,EAAN,CAFqB;;EAIrB,UAAImD,IAAI,GAAG/C,CAAC,CAACgJ,CAAF,CAAIW,WAAJ,EAAX,CAJqB;;EAMrB,UAAIzD,GAAG,KAAK,IAAR,IAAgBnD,IAAI,GAAG,CAA3B,EAA8B;EAC5B/C,QAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAAC3H,IAAJ,CAAS/C,CAAT,EAAY+C,IAAI,GAAG,CAAC,CAApB,CAAV;EACD,OARoB;;;EAWrB,UAAImD,GAAG,KAAK,IAAR,IAAgBnD,IAAI,GAAG,CAA3B,EAA8B;EAC5B/C,QAAAA,CAAC,CAAC4D,KAAF,GAAU8G,GAAG,CAAC3H,IAAJ,CAAS/C,CAAT,EAAY+C,IAAI,GAAG,CAAC,CAApB,CAAV;EACD;;EAED,aAAO/C,CAAP;EACD;;EAED,QAAI,KAAKgJ,CAAL,CAAOW,WAAP,KAAuB,CAA3B,EAA8B;EAC5B,aAAO,IAAP;EACD;;EAED,WAAO,IAAP;EACD,GArMa;EAsMd;EACAuS,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBrQ,KAAhB,EAAuB;EAC7B,QAAIA,KAAK,KAAKvK,SAAd,EAAyB;EACvBuK,MAAAA,KAAK,GAAGY,MAAM,CAACZ,KAAD,CAAd;EACAA,MAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,aAAd,EAA6B,IAA7B,CAAR,CAFuB;;EAIvB0F,MAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAJuB;;EAMvB,UAAI,CAAC0F,KAAL,EAAY;EACVpH,QAAAA,OAAO,CAACC,IAAR,CAAa,iCAAb;EACA,eAAO,IAAP;EACD,OATsB;;;EAYvB,UAAImH,KAAK,CAACpM,MAAN,KAAiB,CAAjB,IAAsB,aAAa8C,IAAb,CAAkBsJ,KAAlB,CAA1B,EAAoD;EAClDA,QAAAA,KAAK,GAAG,OAAOA,KAAf;EACD;;EAED,UAAI9I,IAAI,GAAGiD,MAAM,CAAC6F,KAAD,CAAjB;;EAEA,UAAIF,KAAK,CAAC5I,IAAD,CAAT,EAAiB;EACf,eAAO,IAAP;EACD,OApBsB;;;EAuBvBA,MAAAA,IAAI,GAAGqG,IAAI,CAAC8X,KAAL,CAAWne,IAAI,GAAG,EAAlB,IAAwB,EAA/B;EACA,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP,CAxBuB;EAyBxB;;EAED,WAAO,KAAKiI,OAAL,CAAa,QAAb,EAAuBjI,IAAvB,EAAP;EACD,GApOa;EAqOd;EACAoZ,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBtQ,KAAjB,EAAwB;EAC/B,QAAIA,KAAK,KAAKvK,SAAd,EAAyB;EACvB,UAAI,OAAOuK,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,QAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAD6B;;EAG7B0F,QAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,gCAAd,EAAgD,UAAUqQ,CAAV,EAAa4C,CAAb,EAAgBjB,CAAhB,EAAmB;EACzE,cAAIA,CAAC,CAAC1Q,KAAF,CAAQ,WAAR,CAAJ,EAA0B;EACxB2R,YAAAA,CAAC,GAAG,MAAMA,CAAV;EACD;;EAED,iBAAOA,CAAP;EACD,SANO,CAAR;EAOAvN,QAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR,CAV6B;EAW9B;;EAED,UAAIpD,IAAI,GAAGiD,MAAM,CAAC6F,KAAD,CAAjB;;EAEA,UAAIF,KAAK,CAACE,KAAD,CAAT,EAAkB;EAChBpH,QAAAA,OAAO,CAACC,IAAR,CAAa,kCAAb;EACA,eAAO,IAAP;EACD,OAnBsB;;;EAsBvB,UAAI3B,IAAI,KAAK,CAAb,EAAgB;EACdA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,UAAIA,IAAI,IAAI,CAAZ,EAAe;EACbA,QAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAa,GAApB;EACD,OAFD,MAEO;EACLA,QAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAa,GAApB;EACD;;EAED,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;EACD,KAlC8B;;;EAqC/B,QAAIsD,GAAG,GAAG,KAAK2E,OAAL,CAAa,SAAb,EAAwBjI,IAAxB,EAAV;EACAsD,IAAAA,GAAG,GAAG+C,IAAI,CAAC8X,KAAL,CAAW7a,GAAG,GAAG,GAAjB,CAAN;;EAEA,QAAIA,GAAG,GAAG,CAAV,EAAa;EACX,aAAOA,GAAG,GAAG,CAAb;EACD;;EAED,WAAOA,GAAG,GAAG,CAAb;EACD,GAnRa;EAoRd;EACA8a,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBtV,KAAnB,EAA0B;EACnC,QAAIA,KAAK,KAAKvK,SAAd,EAAyB;EACvB,UAAI,OAAOuK,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,QAAAA,KAAK,GAAGA,KAAK,CAAC1F,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAD6B;;EAG7B0F,QAAAA,KAAK,GAAG7F,MAAM,CAAC6F,KAAD,CAAd;;EAEA,YAAIF,KAAK,CAACE,KAAD,CAAT,EAAkB;EAChBpH,UAAAA,OAAO,CAACC,IAAR,CAAa,oCAAb;EACA,iBAAO,IAAP;EACD;EACF;;EAED,UAAImH,KAAK,GAAG,CAAZ,EAAe;EACbA,QAAAA,KAAK,IAAI,CAAT;EACD;;EAED,UAAI9I,IAAI,GAAG8I,KAAK,GAAG,IAAnB,CAhBuB;;EAkBvB,UAAI9I,IAAI,KAAK,CAAb,EAAgB;EACdA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;EACD,KAxBkC;;;EA2BnC,QAAIsD,GAAG,GAAG+C,IAAI,CAAC8X,KAAL,CAAW,KAAKne,IAAL,KAAc,IAAzB,CAAV;;EAEA,QAAIsD,GAAG,IAAI,CAAX,EAAc;EACZA,MAAAA,GAAG,IAAI,CAAP;EACD;;EAED,WAAOA,GAAP;EACD;EAvTa,CAAhB;EAyTA,IAAI+a,OAAO,GAAGd,SAAd;EAEA,IAAIe,OAAO,GAAGpgB,MAAM,CAACqO,MAAP,CAAc,EAAd,EAAkB2Q,OAAlB,EAA2BG,OAA3B,EAAoCgB,OAApC,CAAd;;EAEAC,OAAO,CAAC1Y,YAAR,GAAuB0Y,OAAO,CAAC/Y,WAA/B;EACA+Y,OAAO,CAACzX,OAAR,GAAkByX,OAAO,CAAC9Y,MAA1B;EACA8Y,OAAO,CAAClU,OAAR,GAAkBkU,OAAO,CAAC7Y,MAA1B;EACA6Y,OAAO,CAACnU,KAAR,GAAgBmU,OAAO,CAAC7d,IAAxB;EACA6d,OAAO,CAAClP,MAAR,GAAiBkP,OAAO,CAAC7d,IAAzB;EACA6d,OAAO,CAACzK,GAAR,GAAcyK,OAAO,CAACjP,MAAtB;EACAiP,OAAO,CAACrO,GAAR,GAAcqO,OAAO,CAAClP,MAAtB;EACAkP,OAAO,CAACxR,IAAR,GAAewR,OAAO,CAAC9d,GAAvB;;EAEA,IAAI+d,YAAY,GAAG,SAASC,UAAT,CAAoBC,KAApB,EAA2B;EAC5C;EACAvgB,EAAAA,MAAM,CAAC4E,IAAP,CAAYwb,OAAZ,EAAqBvb,OAArB,CAA6B,UAAUC,CAAV,EAAa;EACxCyb,IAAAA,KAAK,CAAChhB,SAAN,CAAgBuF,CAAhB,IAAqBsb,OAAO,CAACtb,CAAD,CAA5B;EACD,GAFD;EAGD,CALD;;EAOA,IAAI0b,KAAK,GAAGH,YAAZ;EAEA,IAAI7V,UAAU,GAAGD,GAAG,CAACC,UAArB;;EAEA,IAAIiW,cAAc,GAAG,SAASA,cAAT,CAAwBve,KAAxB,EAA+BJ,IAA/B,EAAqC;EACxD,MAAII,KAAK,KAAK,CAAV,IAAesI,UAAU,CAAC1I,IAAD,CAA7B,EAAqC;EACnC,WAAO,EAAP;EACD;;EAED,SAAOwI,cAAc,CAACpI,KAAD,CAArB;EACD,CAND;EAOA;;;EAGA,IAAIwe,SAAS,GAAG,SAASA,SAAT,CAAmBjD,IAAnB,EAAyB5U,GAAzB,EAA8B;EAC5C;EACA,MAAI4U,IAAI,CAACvb,KAAL,GAAa,CAAjB,EAAoB;EAClB,QAAIuW,KAAK,GAAG1P,QAAQ,CAAC0U,IAAI,CAACvb,KAAL,GAAa,EAAd,EAAkB,EAAlB,CAApB;EACAub,IAAAA,IAAI,CAAC3b,IAAL,GAAY+G,GAAG,CAAC/G,IAAJ,KAAa2W,KAAzB;EACAgF,IAAAA,IAAI,CAACvb,KAAL,GAAaub,IAAI,CAACvb,KAAL,GAAa,EAA1B;EACD,GAJD,MAIO,IAAIub,IAAI,CAACvb,KAAL,GAAa,CAAjB,EAAoB;EACzB;EACA,QAAIye,MAAM,GAAGxY,IAAI,CAAC8X,KAAL,CAAW9X,IAAI,CAACC,GAAL,CAASqV,IAAI,CAACvb,KAAd,IAAuB,EAAlC,EAAsC,EAAtC,CAAb;;EAEAye,IAAAA,MAAM,GAAGxY,IAAI,CAACC,GAAL,CAASuY,MAAT,IAAmB,CAA5B;EACAlD,IAAAA,IAAI,CAAC3b,IAAL,GAAY+G,GAAG,CAAC/G,IAAJ,KAAa6e,MAAzB,CALyB;;EAOzBlD,IAAAA,IAAI,CAACvb,KAAL,GAAaub,IAAI,CAACvb,KAAL,GAAa,EAA1B;EACAub,IAAAA,IAAI,CAACvb,KAAL,GAAaub,IAAI,CAACvb,KAAL,GAAa,EAA1B;;EAEA,QAAIub,IAAI,CAACvb,KAAL,KAAe,EAAnB,EAAuB;EACrBub,MAAAA,IAAI,CAACvb,KAAL,GAAa,CAAb;EACD;EACF;;EAED,SAAOub,IAAP;EACD,CAtBD;;;EAyBA,IAAImD,YAAY,GAAG,SAASA,YAAT,CAAsBnD,IAAtB,EAA4B5U,GAA5B,EAAiCyW,GAAjC,EAAsC;EACvD7B,EAAAA,IAAI,CAAC3b,IAAL,GAAY+G,GAAG,CAAC/G,IAAJ,EAAZ;EACA2b,EAAAA,IAAI,CAACvb,KAAL,GAAa2G,GAAG,CAAC3G,KAAJ,EAAb;EACA,MAAIsF,IAAI,GAAGqB,GAAG,CAACrB,IAAJ,EAAX;EACAiW,EAAAA,IAAI,CAACjW,IAAL,GAAYA,IAAI,GAAGW,IAAI,CAACC,GAAL,CAASkX,GAAT,CAAnB;;EAEA,SAAO7B,IAAI,CAACjW,IAAL,GAAY,CAAnB,EAAsB;EACpBiW,IAAAA,IAAI,CAACvb,KAAL,IAAc,CAAd;;EAEA,QAAIub,IAAI,CAACvb,KAAL,GAAa,CAAjB,EAAoB;EAClBub,MAAAA,IAAI,CAACvb,KAAL,GAAa,EAAb;EACAub,MAAAA,IAAI,CAAC3b,IAAL,IAAa,CAAb;EACD;;EAED,QAAIuK,GAAG,GAAGoU,cAAc,CAAChD,IAAI,CAACvb,KAAN,EAAaub,IAAI,CAAC3b,IAAlB,CAAxB;EACA2b,IAAAA,IAAI,CAACjW,IAAL,IAAa6E,GAAb;EACD;;EAED,SAAOoR,IAAP;EACD,CAnBD;;;EAsBA,IAAIoD,UAAU,GAAG,SAASA,UAAT,CAAoBpD,IAApB,EAA0B5U,GAA1B,EAA+ByW,GAA/B,EAAoC;EACnD,MAAIxd,IAAI,GAAG+G,GAAG,CAAC/G,IAAJ,EAAX;EACA,MAAII,KAAK,GAAG2G,GAAG,CAAC3G,KAAJ,EAAZ;EACA,MAAImK,GAAG,GAAGoU,cAAc,CAACve,KAAD,EAAQJ,IAAR,CAAxB;;EAEA,SAAOwd,GAAG,GAAGjT,GAAb,EAAkB;EAChBiT,IAAAA,GAAG,IAAIjT,GAAP;EACAnK,IAAAA,KAAK,IAAI,CAAT;;EAEA,QAAIA,KAAK,IAAI,EAAb,EAAiB;EACfA,MAAAA,KAAK,IAAI,EAAT;EACAJ,MAAAA,IAAI,IAAI,CAAR;EACD;;EAEDuK,IAAAA,GAAG,GAAGoU,cAAc,CAACve,KAAD,EAAQJ,IAAR,CAApB;EACD;;EAED2b,EAAAA,IAAI,CAACvb,KAAL,GAAaA,KAAb;EACAub,EAAAA,IAAI,CAACjW,IAAL,GAAY8X,GAAZ;EACA,SAAO7B,IAAP;EACD,CApBD;;EAsBA,IAAIqD,MAAM,GAAG;EACXvU,EAAAA,MAAM,EAAEmU,SADG;EAEX9R,EAAAA,IAAI,EAAEiS,UAFK;EAGXE,EAAAA,QAAQ,EAAEH;EAHC,CAAb;EAOA;EACA;EACA;;EAEA,IAAIzS,KAAK,GAAG,CAAC,aAAD,EAAgB,QAAhB,EAA0B,QAA1B,EAAoC,MAApC,EAA4C,MAA5C,EAAoD,OAApD,CAAZ;EACA,IAAI6S,IAAI,GAAG;EACT1Z,EAAAA,MAAM,EAAE6G,KAAK,CAAChN,KAAN,CAAY,CAAZ,EAAe,CAAf,CADC;EAEToG,EAAAA,MAAM,EAAE4G,KAAK,CAAChN,KAAN,CAAY,CAAZ,EAAe,CAAf,CAFC;EAGT0Z,EAAAA,WAAW,EAAE1M,KAAK,CAAChN,KAAN,CAAY,CAAZ,EAAe,CAAf,CAHJ;EAIToB,EAAAA,IAAI,EAAE4L,KAAK,CAAChN,KAAN,CAAY,CAAZ,EAAe,CAAf,CAJG;EAKTqG,EAAAA,IAAI,EAAE2G,KAAK,CAAChN,KAAN,CAAY,CAAZ,EAAe,CAAf,CALG;EAMTe,EAAAA,KAAK,EAAEiM,KAAK,CAAChN,KAAN,CAAY,CAAZ,EAAe,CAAf,CANE;EAOT8L,EAAAA,OAAO,EAAEkB,KAAK,CAAChN,KAAN,CAAY,CAAZ,EAAe,CAAf,CAPA;EAQT+L,EAAAA,MAAM,EAAEiB,KAAK,CAAChN,KAAN,CAAY,CAAZ,EAAe,CAAf,CARC;EASTW,EAAAA,IAAI,EAAEqM,KATG;EAUT8M,EAAAA,MAAM,EAAE9M,KAVC;EAWT+M,EAAAA,OAAO,EAAE/M;EAXA,CAAX;EAaA6S,IAAI,CAACvZ,IAAL,GAAYuZ,IAAI,CAACze,IAAjB;EACAye,IAAI,CAAC9T,MAAL,GAAc8T,IAAI,CAACxZ,IAAnB;EACAwZ,IAAI,CAAC/T,OAAL,GAAe+T,IAAI,CAACxZ,IAApB;;EAEA,IAAIyZ,aAAa,GAAG;EAClBnf,EAAAA,IAAI,EAAE,IADY;EAElBmL,EAAAA,OAAO,EAAE,IAFS;EAGlBC,EAAAA,MAAM,EAAE,IAHU;EAIlBhL,EAAAA,KAAK,EAAE,IAJW;EAKlBuF,EAAAA,IAAI,EAAE,IALY;EAMlBnF,EAAAA,GAAG,EAAE;EANa,CAApB;EAQA,IAAI4e,QAAQ,GAAG;EACbhf,EAAAA,KAAK,EAAE,IADM;EAEb+K,EAAAA,OAAO,EAAE,IAFI;EAGbC,EAAAA,MAAM,EAAE,IAHK;EAIbpL,EAAAA,IAAI,EAAE;EAJO,CAAf;;EAOA,IAAIqf,YAAY,GAAG,SAASb,UAAT,CAAoBc,SAApB,EAA+B;EAChDA,EAAAA,SAAS,CAAC7hB,SAAV,CAAoBmO,GAApB,GAA0B,UAAUtI,GAAV,EAAewC,IAAf,EAAqB;EAC7C,QAAI7I,CAAC,GAAG,KAAK+J,KAAL,EAAR;;EAEA,QAAI,CAAClB,IAAD,IAASxC,GAAG,KAAK,CAArB,EAAwB;EACtB,aAAOrG,CAAP,CADsB;EAEvB;;EAED,QAAI8J,GAAG,GAAG,KAAKC,KAAL,EAAV;EACAlB,IAAAA,IAAI,GAAG2C,GAAG,CAACxD,SAAJ,CAAca,IAAd,CAAP;;EAEA,QAAIA,IAAI,KAAK,aAAb,EAA4B;EAC1B7I,MAAAA,CAAC,CAAC4D,KAAF,IAAWyC,GAAX;EACA,aAAOrG,CAAP;EACD,KAb4C;;;EAgB7C,QAAI6I,IAAI,KAAK,WAAb,EAA0B;EACxBxC,MAAAA,GAAG,IAAI,CAAP;EACAwC,MAAAA,IAAI,GAAG,MAAP;EACD,KAnB4C;;;EAsB7C,QAAIF,YAAY,CAACE,IAAD,CAAhB,EAAwB;EACtB7I,MAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACE,IAAD,CAAZ,GAAqBxC,GAAhC;EACD,KAFD,MAEO,IAAIwC,IAAI,KAAK,MAAb,EAAqB;EAC1B7I,MAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACpF,GAAb,IAAoB8C,GAAG,GAAG,CAA1B,CAAX;EACD,KAFM,MAEA,IAAIwC,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,QAAnC,EAA6C;EAClD7I,MAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACxF,KAAb,IAAsBkD,GAAG,GAAG,CAA5B,CAAX;EACD,KAFM,MAEA,IAAIwC,IAAI,KAAK,aAAb,EAA4B;EACjC7I,MAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACH,MAAb,GAAsB,EAAtB,GAA2BnC,GAAtC;EACD,KA9B4C;;;EAiC7C,QAAIqY,IAAI,GAAG,EAAX;;EAEA,QAAIuD,IAAI,CAACpZ,IAAD,CAAR,EAAgB;EACdoZ,MAAAA,IAAI,CAACpZ,IAAD,CAAJ,CAAW/C,OAAX,CAAmB,UAAU4U,CAAV,EAAa;EAC9BgE,QAAAA,IAAI,CAAChE,CAAD,CAAJ,GAAU5Q,GAAG,CAAC4Q,CAAD,CAAH,EAAV;EACD,OAFD;EAGD;;EAED,QAAIwH,aAAa,CAACrZ,IAAD,CAAjB,EAAyB;EACvB,UAAIM,IAAI,GAAGW,GAAG,CAACjD,QAAJ,GAAekC,OAAf,CAAuBjG,MAAvB,GAAgC9C,CAAC,CAAC6G,QAAF,GAAakC,OAAb,CAAqBjG,MAAhE;EACA9C,MAAAA,CAAC,CAAC4D,KAAF,IAAWuF,IAAI,GAAG,IAAP,GAAc,IAAzB;EACD,KA5C4C;;;EA+C7C,QAAIN,IAAI,KAAK,OAAb,EAAsB;EACpB6V,MAAAA,IAAI,CAACvb,KAAL,GAAa2G,GAAG,CAAC3G,KAAJ,KAAckD,GAA3B,CADoB;;EAGpBqY,MAAAA,IAAI,GAAGqD,MAAM,CAACvU,MAAP,CAAckR,IAAd,EAAoB5U,GAApB,CAAP;EACD,KAnD4C;;;EAsD7C,QAAIjB,IAAI,KAAK,MAAb,EAAqB;EACnB,UAAI0X,GAAG,GAAGzW,GAAG,CAACrB,IAAJ,KAAapC,GAAG,GAAG,CAA7B;;EAEA,UAAIka,GAAG,IAAI,EAAP,IAAaA,GAAG,GAAG,CAAvB,EAA0B;EACxB7B,QAAAA,IAAI,CAACjW,IAAL,GAAY8X,GAAZ;EACD;EACF,KAND;EAAA,SAOK,IAAI1X,IAAI,KAAK,MAAb,EAAqB;EACtB,YAAIxC,GAAG,GAAG,CAAV,EAAa;EACXqY,UAAAA,IAAI,GAAGqD,MAAM,CAACC,QAAP,CAAgBtD,IAAhB,EAAsB5U,GAAtB,EAA2BzD,GAA3B,CAAP;EACD,SAFD,MAEO;EACL;EACA,cAAIic,IAAI,GAAGxY,GAAG,CAACrB,IAAJ,KAAapC,GAAxB,CAFK;;;EAKLqY,UAAAA,IAAI,GAAGqD,MAAM,CAAClS,IAAP,CAAY6O,IAAZ,EAAkB5U,GAAlB,EAAuBwY,IAAvB,CAAP;EACD,SATqB;;;EAYtB,YAAIjc,GAAG,KAAK,CAAR,IAAayD,GAAG,CAAC2Q,MAAJ,CAAWza,CAAX,EAAc,KAAd,CAAjB,EAAuC;EACrC0e,UAAAA,IAAI,CAACjW,IAAL,GAAYqB,GAAG,CAACrB,IAAJ,KAAapC,GAAzB;EACD;EACF,OAfE;EAAA,WAgBE,IAAIwC,IAAI,KAAK,SAAb,EAAwB;EACzB6V,UAAAA,IAAI,CAACvb,KAAL,GAAa2G,GAAG,CAAC3G,KAAJ,KAAckD,GAAG,GAAG,CAAjC;EACAqY,UAAAA,IAAI,CAAC3b,IAAL,GAAY+G,GAAG,CAAC/G,IAAJ,EAAZ,CAFyB;;EAIzB,cAAI2b,IAAI,CAACvb,KAAL,GAAa,CAAjB,EAAoB;EAClB,gBAAIuW,KAAK,GAAGtQ,IAAI,CAAC8X,KAAL,CAAWxC,IAAI,CAACvb,KAAL,GAAa,EAAxB,CAAZ;EACA,gBAAIof,SAAS,GAAG7D,IAAI,CAACvb,KAAL,GAAaiG,IAAI,CAACC,GAAL,CAASqQ,KAAT,IAAkB,EAA/C;EACAgF,YAAAA,IAAI,CAACvb,KAAL,GAAaof,SAAb;EACA7D,YAAAA,IAAI,CAAC3b,IAAL,IAAa2W,KAAb;EACD,WALD,MAKO,IAAIgF,IAAI,CAACvb,KAAL,IAAc,EAAlB,EAAsB;EAC3B,gBAAIye,MAAM,GAAGxY,IAAI,CAAC8X,KAAL,CAAWxC,IAAI,CAACvb,KAAL,GAAa,EAAxB,CAAb;;EAEAub,YAAAA,IAAI,CAACvb,KAAL,GAAaub,IAAI,CAACvb,KAAL,GAAa,EAA1B;EACAub,YAAAA,IAAI,CAAC3b,IAAL,IAAa6e,MAAb;EACD;;EAEDlD,UAAAA,IAAI,CAACjW,IAAL,GAAYqB,GAAG,CAACrB,IAAJ,EAAZ;EACD,SAjBE;EAAA,aAkBE,IAAII,IAAI,KAAK,MAAb,EAAqB;EACtB,gBAAI2Z,QAAQ,GAAG1Y,GAAG,CAAC/G,IAAJ,KAAasD,GAA5B;EACA,gBAAIoc,QAAQ,GAAGziB,CAAC,CAAC+C,IAAF,EAAf;;EAEA,gBAAI0f,QAAQ,GAAGD,QAAf,EAAyB;EACvBxiB,cAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACpF,GAAxB;EACD,aAFD,MAEO,IAAIkf,QAAQ,GAAGD,QAAf,EAAyB;EAC9BxiB,cAAAA,CAAC,CAAC4D,KAAF,IAAW+E,YAAY,CAACpF,GAAxB;EACD;EACF,WATE;EAAA,eAUE,IAAIsF,IAAI,KAAK,QAAb,EAAuB;EACxB6V,cAAAA,IAAI,CAAC3b,IAAL,GAAY/C,CAAC,CAAC+C,IAAF,KAAW,EAAvB;EACD,aAFE,MAEI,IAAI8F,IAAI,KAAK,SAAb,EAAwB;EAC7B6V,cAAAA,IAAI,CAAC3b,IAAL,GAAY/C,CAAC,CAAC+C,IAAF,KAAW,GAAvB;EACD,aA7GoC;;;EAgH7C,QAAIof,QAAQ,CAACtZ,IAAD,CAAZ,EAAoB;EAClB,UAAIyE,GAAG,GAAG/B,cAAc,CAACmT,IAAI,CAACvb,KAAN,CAAxB;EACAub,MAAAA,IAAI,CAACjW,IAAL,GAAYqB,GAAG,CAACrB,IAAJ,EAAZ;;EAEA,UAAIiW,IAAI,CAACjW,IAAL,GAAY6E,GAAhB,EAAqB;EACnBoR,QAAAA,IAAI,CAACjW,IAAL,GAAY6E,GAAZ;EACD;EACF;;EAED,QAAIrM,MAAM,CAAC4E,IAAP,CAAY6Y,IAAZ,EAAkBjf,MAAlB,GAA2B,CAA/B,EAAkC;EAChCyK,MAAAA,MAAM,CAAClK,CAAD,EAAI0e,IAAJ,CAAN;EACD;;EAED,WAAO1e,CAAP;EACD,GA9HD,CADgD;;;EAkIhDqiB,EAAAA,SAAS,CAAC7hB,SAAV,CAAoBqO,QAApB,GAA+B,UAAUxI,GAAV,EAAewC,IAAf,EAAqB;EAClD,QAAI7I,CAAC,GAAG,KAAK+J,KAAL,EAAR;EACA,WAAO/J,CAAC,CAAC2O,GAAF,CAAMtI,GAAG,GAAG,CAAC,CAAb,EAAgBwC,IAAhB,CAAP;EACD,GAHD,CAlIgD;;;EAwIhDwZ,EAAAA,SAAS,CAAC7hB,SAAV,CAAoBsgB,KAApB,GAA4BuB,SAAS,CAAC7hB,SAAV,CAAoBqO,QAAhD;EACAwT,EAAAA,SAAS,CAAC7hB,SAAV,CAAoBkiB,IAApB,GAA2BL,SAAS,CAAC7hB,SAAV,CAAoBmO,GAA/C;EACD,CA1ID;;EA4IA,IAAIA,GAAG,GAAGyT,YAAV;;EAGA,IAAIO,KAAK,GAAG;EACVra,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqBtI,CAArB,EAAwB;EACnC,WAAOA,CAAC,CAAC4D,KAAT;EACD,GAHS;EAIV2E,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBvI,CAAhB,EAAmB;EACzB,WAAO,CAACA,CAAC,CAAC+C,IAAF,EAAD,EAAW/C,CAAC,CAACmD,KAAF,EAAX,EAAsBnD,CAAC,CAACyI,IAAF,EAAtB,EAAgCzI,CAAC,CAACwD,IAAF,EAAhC,EAA0CxD,CAAC,CAACwI,MAAF,EAA1C,EAAsDxI,CAAC,CAACuI,MAAF,EAAtD,EAAkE2D,IAAlE,CAAuE,GAAvE,CAAP;EACD,GANS;EAOV1D,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBxI,CAAhB,EAAmB;EACzB,WAAO,CAACA,CAAC,CAAC+C,IAAF,EAAD,EAAW/C,CAAC,CAACmD,KAAF,EAAX,EAAsBnD,CAAC,CAACyI,IAAF,EAAtB,EAAgCzI,CAAC,CAACwD,IAAF,EAAhC,EAA0CxD,CAAC,CAACwI,MAAF,EAA1C,EAAsD0D,IAAtD,CAA2D,GAA3D,CAAP;EACD,GATS;EAUV1I,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcxD,CAAd,EAAiB;EACrB,WAAO,CAACA,CAAC,CAAC+C,IAAF,EAAD,EAAW/C,CAAC,CAACmD,KAAF,EAAX,EAAsBnD,CAAC,CAACyI,IAAF,EAAtB,EAAgCzI,CAAC,CAACwD,IAAF,EAAhC,EAA0C0I,IAA1C,CAA+C,GAA/C,CAAP;EACD,GAZS;EAaV3I,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavD,CAAb,EAAgB;EACnB,WAAO,CAACA,CAAC,CAAC+C,IAAF,EAAD,EAAW/C,CAAC,CAACmD,KAAF,EAAX,EAAsBnD,CAAC,CAACyI,IAAF,EAAtB,EAAgCyD,IAAhC,CAAqC,GAArC,CAAP;EACD,GAfS;EAgBVxD,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1I,CAAd,EAAiB;EACrB,WAAO,CAACA,CAAC,CAAC+C,IAAF,EAAD,EAAW/C,CAAC,CAAC0I,IAAF,EAAX,EAAqBwD,IAArB,CAA0B,GAA1B,CAAP;EACD,GAlBS;EAmBV/I,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAenD,CAAf,EAAkB;EACvB,WAAO,CAACA,CAAC,CAAC+C,IAAF,EAAD,EAAW/C,CAAC,CAACmD,KAAF,EAAX,EAAsB+I,IAAtB,CAA2B,GAA3B,CAAP;EACD,GArBS;EAsBVgC,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBlO,CAAjB,EAAoB;EAC3B,WAAO,CAACA,CAAC,CAAC+C,IAAF,EAAD,EAAW/C,CAAC,CAACkO,OAAF,EAAX,EAAwBhC,IAAxB,CAA6B,GAA7B,CAAP;EACD,GAxBS;EAyBVnJ,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/C,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC+C,IAAF,EAAP;EACD;EA3BS,CAAZ;EA6BA4f,KAAK,CAACla,IAAN,GAAaka,KAAK,CAACpf,GAAnB;;EAEA,IAAIqf,YAAY,GAAG,SAASrB,UAAT,CAAoBc,SAApB,EAA+B;EAChDA,EAAAA,SAAS,CAAC7hB,SAAV,CAAoBia,MAApB,GAA6B,UAAUrB,CAAV,EAAavQ,IAAb,EAAmB;EAC9C,QAAIga,OAAO,GAAG9X,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,IAAlF;EACA,QAAIyL,CAAC,GAAG,IAAR;;EAEA,QAAI,CAAC3N,IAAL,EAAW;EACT,aAAO,IAAP;EACD,KAN6C;;;EAS9C,QAAI,OAAOuQ,CAAP,KAAa,QAAb,IAAyBjZ,OAAO,CAAC0I,IAAD,CAAP,KAAkB,QAA/C,EAAyD;EACvD,UAAI8D,GAAG,GAAGyM,CAAV;EACAA,MAAAA,CAAC,GAAGvQ,IAAJ;EACAA,MAAAA,IAAI,GAAG8D,GAAP;EACD;;EAED,QAAI,OAAOyM,CAAP,KAAa,QAAb,IAAyB,OAAOA,CAAP,KAAa,QAA1C,EAAoD;EAClDA,MAAAA,CAAC,GAAG,IAAIiJ,SAAJ,CAAcjJ,CAAd,EAAiB,KAAKvS,QAAL,CAAcxE,IAA/B,CAAJ;EACD,KAjB6C;;;EAoB9CwG,IAAAA,IAAI,GAAGA,IAAI,CAAC1C,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAP,CApB8C;;EAsB9C,QAAI0c,OAAO,KAAK,IAAZ,IAAoBrM,CAAC,CAAChS,EAAF,KAAS4U,CAAC,CAAC5U,EAAnC,EAAuC;EACrC4U,MAAAA,CAAC,GAAGA,CAAC,CAACrP,KAAF,EAAJ;EACAqP,MAAAA,CAAC,CAAC5U,EAAF,GAAOgS,CAAC,CAAChS,EAAT;EACD;;EAED,QAAIme,KAAK,CAAC9Z,IAAD,CAAT,EAAiB;EACf,aAAO8Z,KAAK,CAAC9Z,IAAD,CAAL,CAAY2N,CAAZ,MAAmBmM,KAAK,CAAC9Z,IAAD,CAAL,CAAYuQ,CAAZ,CAA1B;EACD;;EAED,WAAO,IAAP;EACD,GAhCD;EAiCD,CAlCD;;EAoCA,IAAI0J,IAAI,GAAGF,YAAX;;EAEA,IAAIG,YAAY,GAAG,SAASxB,UAAT,CAAoBc,SAApB,EAA+B;EAChD,MAAIhB,OAAO,GAAG;EACZ/H,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBtQ,CAAjB,EAAoB;EAC3BA,MAAAA,CAAC,GAAGwC,GAAG,CAACqB,OAAJ,CAAY7D,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAIpF,KAAK,GAAG4H,GAAG,CAACkB,QAAJ,CAAa1D,CAAb,CAAZ;;EAEA,UAAIpF,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,GAAaA,KAApB;EACD,KAVW;EAWZyV,IAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBrQ,CAAlB,EAAqB;EAC7BA,MAAAA,CAAC,GAAGwC,GAAG,CAACqB,OAAJ,CAAY7D,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAIpF,KAAK,GAAG4H,GAAG,CAACkB,QAAJ,CAAa1D,CAAb,CAAZ;;EAEA,UAAIpF,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,GAAaA,KAApB;EACD,KApBW;EAqBZof,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBha,CAAjB,EAAoB;EAC3BA,MAAAA,CAAC,GAAGwC,GAAG,CAACqB,OAAJ,CAAY7D,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAIpF,KAAK,GAAG4H,GAAG,CAACkB,QAAJ,CAAa1D,CAAb,CAAZ;;EAEA,UAAIpF,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,KAAeA,KAAtB;EACD,KA9BW;EA+BZqf,IAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBpf,KAAnB,EAA0BC,GAA1B,EAA+B;EACxC,UAAIof,WAAW,GAAGnY,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,KAAtF;EACAlH,MAAAA,KAAK,GAAG2H,GAAG,CAACqB,OAAJ,CAAYhJ,KAAZ,EAAmB,IAAnB,CAAR;EACAC,MAAAA,GAAG,GAAG0H,GAAG,CAACqB,OAAJ,CAAY/I,GAAZ,EAAiB,IAAjB,CAAN;EACA,UAAIqf,UAAU,GAAG3X,GAAG,CAACkB,QAAJ,CAAa7I,KAAb,CAAjB;;EAEA,UAAIsf,UAAU,KAAK,IAAnB,EAAyB;EACvB,eAAO,IAAP;EACD;;EAED,UAAIC,QAAQ,GAAG5X,GAAG,CAACkB,QAAJ,CAAa5I,GAAb,CAAf;;EAEA,UAAIsf,QAAQ,KAAK,IAAjB,EAAuB;EACrB,eAAO,IAAP;EACD;;EAED,UAAIF,WAAJ,EAAiB;EACf,eAAO,KAAKD,SAAL,CAAepf,KAAf,EAAsBC,GAAtB,KAA8B,KAAKkf,OAAL,CAAanf,KAAb,CAA9B,IAAqD,KAAKmf,OAAL,CAAalf,GAAb,CAA5D;EACD;;EAED,aAAOqf,UAAU,GAAG,KAAKvf,KAAlB,IAA2B,KAAKA,KAAL,GAAawf,QAA/C;EACD;EApDW,GAAd,CADgD;;EAwDhDniB,EAAAA,MAAM,CAAC4E,IAAP,CAAYwb,OAAZ,EAAqBvb,OAArB,CAA6B,UAAUC,CAAV,EAAa;EACxCsc,IAAAA,SAAS,CAAC7hB,SAAV,CAAoBuF,CAApB,IAAyBsb,OAAO,CAACtb,CAAD,CAAhC;EACD,GAFD;EAGD,CA3DD;;EA6DA,IAAIsd,OAAO,GAAGN,YAAd;;EAEA,IAAIxB,UAAU,GAAG,SAASA,UAAT,CAAoBc,SAApB,EAA+B;EAC9C,MAAIhB,OAAO,GAAG;EACZ1W,IAAAA,IAAI,EAAE,SAASA,IAAT,CAAchF,IAAd,EAAoB;EACxB;EACA,UAAI6F,GAAG,CAACM,QAAJ,CAAanG,IAAI,CAACkK,IAAlB,CAAJ,EAA6B;EAC3BA,QAAAA,IAAI,CAACnF,GAAL,CAAS/E,IAAI,CAACkK,IAAd;EACD,OAJuB;;;EAOxB,UAAIrE,GAAG,CAACM,QAAJ,CAAanG,IAAI,CAAC6H,MAAlB,CAAJ,EAA+B;EAC7BjD,QAAAA,QAAQ,CAACG,GAAT,CAAa/E,IAAI,CAAC6H,MAAlB;EACD,OATuB;;;EAYxB,UAAIhC,GAAG,CAACO,SAAJ,CAAcpG,IAAI,CAACkL,YAAnB,CAAJ,EAAsC;EACpCD,QAAAA,UAAU,CAAClG,GAAX,CAAe/E,IAAI,CAACkL,YAApB;EACD;EACF;EAhBW,GAAd,CAD8C;;EAoB9C5P,EAAAA,MAAM,CAAC4E,IAAP,CAAYwb,OAAZ,EAAqBvb,OAArB,CAA6B,UAAUC,CAAV,EAAa;EACxCsc,IAAAA,SAAS,CAAC7hB,SAAV,CAAoBuF,CAApB,IAAyBsb,OAAO,CAACtb,CAAD,CAAhC;EACD,GAFD;EAGD,CAvBD;;EAyBA,IAAI4E,IAAI,GAAG4W,UAAX;EAEA,IAAIhd,SAAS,GAAG+B,MAAhB;;EAEA,IAAI+b,SAAS,GAAG,SAASA,SAAT,CAAmBhF,OAAnB,EAA4B7Y,EAA5B,EAAgC;EAC9C,MAAIuJ,OAAO,GAAGhD,SAAS,CAACtL,MAAV,GAAmB,CAAnB,IAAwBsL,SAAS,CAAC,CAAD,CAAT,KAAiBzJ,SAAzC,GAAqDyJ,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF,CAD8C;;EAG9C,OAAKnH,KAAL,GAAa,IAAb,CAH8C;;EAK9C,OAAKY,EAAL,GAAU6D,IAAI,CAAC7D,EAAD,EAAKD,SAAL,CAAd,CAL8C;;EAO9C,OAAK0F,MAAL,GAAc8D,OAAO,CAAC9D,MAAR,IAAkB,IAAhC,CAP8C;;EAS9C,OAAK+D,OAAL,GAAeD,OAAO,CAAC6F,GAAR,IAAe7F,OAAO,CAACC,OAAtC,CAT8C;;EAW9C,OAAK+N,UAAL,GAAkB,CAAlB,CAX8C;;EAa9C,MAAIhO,OAAO,CAACkQ,SAAR,KAAsB3c,SAA1B,EAAqC;EACnC,SAAKya,UAAL,GAAkBhO,OAAO,CAACkQ,SAA1B;EACD,GAf6C;;;EAkB9C,OAAKhQ,MAAL,GAAc,EAAd;;EAEA,MAAIF,OAAO,CAACL,KAAR,KAAkBpM,SAAtB,EAAiC;EAC/B,SAAK2M,MAAL,GAAcF,OAAO,CAACL,KAAtB;EACD,GAtB6C;;;EAyB9CzM,EAAAA,MAAM,CAACqiB,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC;EAC/B;EACArjB,IAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,UAAI6C,MAAM,GAAGkC,KAAK,CAAC,IAAD,CAAlB,CADkB;;EAGlB,UAAIue,IAAI,GAAG,IAAI9f,IAAJ,CAAS,KAAKG,KAAd,EAAqB4f,iBAArB,MAA4C,CAAvD,CAHkB;;EAKlB,UAAI7E,KAAK,GAAG4E,IAAI,GAAGzgB,MAAM,GAAG,EAA5B,CALkB;;EAOlB6b,MAAAA,KAAK,GAAGA,KAAK,GAAG,EAAR,GAAa,IAArB,CAPkB;EAQlB;;EAEA,UAAI/a,KAAK,GAAG,KAAKA,KAAL,GAAa+a,KAAzB;EACA,UAAI3V,CAAC,GAAG,IAAIvF,IAAJ,CAASG,KAAT,CAAR;EACA,aAAOoF,CAAP;EACD;EAf8B,GAAjC,EAzB8C;;EA2C9C/H,EAAAA,MAAM,CAACqiB,cAAP,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC;EACvCrjB,IAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,aAAOsE,SAAP;EACD,KAHsC;EAIvCmG,IAAAA,GAAG,EAAE,SAASA,GAAT,CAAatK,GAAb,EAAkB;EACrBmE,MAAAA,SAAS,GAAGnE,GAAZ;EACA,aAAOA,GAAP;EACD;EAPsC,GAAzC,EA3C8C;;EAqD9C,MAAIuM,GAAG,GAAGd,KAAK,CAAC,IAAD,EAAOwR,OAAP,EAAgB7Y,EAAhB,CAAf;EACA,OAAKZ,KAAL,GAAa+I,GAAG,CAAC/I,KAAjB;EACD,CAvDD;;;EA0DA3C,MAAM,CAAC4E,IAAP,CAAYwY,SAAZ,EAAuBvY,OAAvB,CAA+B,UAAUC,CAAV,EAAa;EAC1Csc,EAAAA,SAAS,CAAC7hB,SAAV,CAAoBuF,CAApB,IAAyBsY,SAAS,CAACtY,CAAD,CAAlC;EACD,CAFD;;EAIAsc,SAAS,CAAC7hB,SAAV,CAAoBuJ,KAApB,GAA4B,YAAY;EACtC,SAAO,IAAIsY,SAAJ,CAAc,KAAKze,KAAnB,EAA0B,KAAKY,EAA/B,EAAmC;EACxCyF,IAAAA,MAAM,EAAE,KAAKA,MAD2B;EAExCgU,IAAAA,SAAS,EAAE,KAAKlC,UAFwB;EAGxCrO,IAAAA,KAAK,EAAE,KAAKO;EAH4B,GAAnC,CAAP;EAKD,CAND;;;EASAoU,SAAS,CAAC7hB,SAAV,CAAoBijB,WAApB,GAAkC,YAAY;EAC5C,SAAO,IAAIhgB,IAAJ,CAAS,KAAKG,KAAd,CAAP;EACD,CAFD;;;EAKA6d,KAAK,CAACY,SAAD,CAAL;EACA1T,GAAG,CAAC0T,SAAD,CAAH;EACAS,IAAI,CAACT,SAAD,CAAJ;EACAgB,OAAO,CAAChB,SAAD,CAAP;EACA1X,IAAI,CAAC0X,SAAD,CAAJ;EACA,IAAIqB,WAAS,GAAGrB,SAAhB;;EAEA,IAAIsB,QAAQ,GAAG,SAASA,QAAT,CAAkBnN,CAAlB,EAAqB4C,CAArB,EAAwB;EACrC,MAAIvV,KAAK,GAAG,IAAI6f,WAAJ,CAAc,IAAd,CAAZ;EACA,MAAI5f,GAAG,GAAG,IAAI4f,WAAJ,CAAc,IAAd,CAAV;EACA7f,EAAAA,KAAK,GAAGA,KAAK,CAACoO,IAAN,CAAWuE,CAAX,CAAR,CAHqC;;EAKrC,MAAI4C,CAAJ,EAAO;EACLtV,IAAAA,GAAG,GAAGA,GAAG,CAACmO,IAAJ,CAASmH,CAAT,CAAN;EACD,GAFD,MAEO;EACLtV,IAAAA,GAAG,GAAGD,KAAK,CAAC8K,GAAN,CAAU,EAAV,EAAc,SAAd,CAAN;EACD;;EAED,MAAIiV,SAAS,GAAG/f,KAAK,CAACL,IAAN,EAAhB;EACA,MAAIqgB,OAAO,GAAG/f,GAAG,CAACN,IAAJ,EAAd;EACA,MAAIsgB,GAAG,GAAG7iB,MAAM,CAAC4E,IAAP,CAAYhC,KAAK,CAACU,SAAlB,EAA6ByT,MAA7B,CAAoC,UAAUxT,EAAV,EAAc;EAC1D,QAAIA,EAAE,CAACwP,OAAH,CAAW,GAAX,MAAoB,CAAC,CAAzB,EAA4B;EAC1B,aAAO,KAAP;EACD;;EAED,QAAIxM,CAAC,GAAG,IAAIkc,WAAJ,CAAc,IAAd,EAAoBlf,EAApB,CAAR;EACA,QAAIhB,IAAI,GAAGgE,CAAC,CAAChE,IAAF,EAAX,CAN0D;;EAQ1D,QAAIA,IAAI,IAAIogB,SAAR,IAAqBpgB,IAAI,IAAIqgB,OAAjC,EAA0C;EACxC;EACA,UAAIrgB,IAAI,KAAKogB,SAAT,IAAsBpc,CAAC,CAACgB,MAAF,KAAa3E,KAAK,CAAC2E,MAAN,EAAvC,EAAuD;EACrD,eAAO,KAAP;EACD;;EAED,UAAIhF,IAAI,KAAKqgB,OAAT,IAAoBrc,CAAC,CAACgB,MAAF,KAAa1E,GAAG,CAAC0E,MAAJ,EAArC,EAAmD;EACjD,eAAO,KAAP;EACD;;EAED,aAAO,IAAP;EACD;;EAED,WAAO,KAAP;EACD,GAtBS,CAAV;EAuBA,SAAOsb,GAAP;EACD,CArCD;;EAuCA,IAAIC,UAAU,GAAGJ,QAAjB;EAEA,IAAIK,QAAQ,GAAG,QAAf;;EAEA,IAAI/J,IAAI,GAAG,SAASA,IAAT,CAAcpO,KAAd,EAAqBrH,EAArB,EAAyBuJ,OAAzB,EAAkC;EAC3C,SAAO,IAAI2V,WAAJ,CAAc7X,KAAd,EAAqBrH,EAArB,EAAyBuJ,OAAzB,CAAP;EACD,CAFD;;;EAKA,IAAIkW,QAAQ,GAAG,SAASA,QAAT,CAAkBjkB,CAAlB,EAAqB;EAClC,MAAI0N,KAAK,GAAG1N,CAAC,CAACiO,MAAF,IAAY,EAAxB;EACAhN,EAAAA,MAAM,CAAC4E,IAAP,CAAY6H,KAAZ,EAAmB5H,OAAnB,CAA2B,UAAUC,CAAV,EAAa;EACtC/F,IAAAA,CAAC,GAAGA,CAAC,CAAC+F,CAAD,CAAD,CAAK2H,KAAK,CAAC3H,CAAD,CAAV,CAAJ;EACD,GAFD;EAGA,SAAO/F,CAAP;EACD,CAND;;;EASAia,IAAI,CAAC1L,GAAL,GAAW,UAAU/J,EAAV,EAAcuJ,OAAd,EAAuB;EAChC,MAAI/N,CAAC,GAAG,IAAI0jB,WAAJ,CAAc,IAAIjgB,IAAJ,GAAWmJ,OAAX,EAAd,EAAoCpI,EAApC,EAAwCuJ,OAAxC,CAAR;EACA/N,EAAAA,CAAC,GAAGikB,QAAQ,CAACjkB,CAAD,CAAZ;EACA,SAAOA,CAAP;EACD,CAJD;;EAMAia,IAAI,CAACvM,KAAL,GAAa,UAAUlJ,EAAV,EAAcuJ,OAAd,EAAuB;EAClC,MAAI/N,CAAC,GAAG,IAAI0jB,WAAJ,CAAc,IAAIjgB,IAAJ,GAAWmJ,OAAX,EAAd,EAAoCpI,EAApC,EAAwCuJ,OAAxC,CAAR;EACA/N,EAAAA,CAAC,GAAGikB,QAAQ,CAACjkB,CAAD,CAAZ;EACA,SAAOA,CAAC,CAACgL,OAAF,CAAU,KAAV,CAAP;EACD,CAJD;;EAMAiP,IAAI,CAACvL,QAAL,GAAgB,UAAUlK,EAAV,EAAcuJ,OAAd,EAAuB;EACrC,MAAI/N,CAAC,GAAG,IAAI0jB,WAAJ,CAAc,IAAIjgB,IAAJ,GAAWmJ,OAAX,EAAd,EAAoCpI,EAApC,EAAwCuJ,OAAxC,CAAR;EACA/N,EAAAA,CAAC,GAAGikB,QAAQ,CAACjkB,CAAD,CAAZ;EACA,SAAOA,CAAC,CAAC2O,GAAF,CAAM,CAAN,EAAS,KAAT,EAAgB3D,OAAhB,CAAwB,KAAxB,CAAP;EACD,CAJD;;EAMAiP,IAAI,CAACrL,SAAL,GAAiB,UAAUpK,EAAV,EAAcuJ,OAAd,EAAuB;EACtC,MAAI/N,CAAC,GAAG,IAAI0jB,WAAJ,CAAc,IAAIjgB,IAAJ,GAAWmJ,OAAX,EAAd,EAAoCpI,EAApC,EAAwCuJ,OAAxC,CAAR;EACA/N,EAAAA,CAAC,GAAGikB,QAAQ,CAACjkB,CAAD,CAAZ;EACA,SAAOA,CAAC,CAAC6O,QAAF,CAAW,CAAX,EAAc,KAAd,EAAqB7D,OAArB,CAA6B,KAA7B,CAAP;EACD,CAJD;;EAMAiP,IAAI,CAACiK,MAAL,GAAc,UAAU9jB,GAAV,EAAe;EAC3Ba,EAAAA,MAAM,CAAC4E,IAAP,CAAYzF,GAAZ,EAAiB0F,OAAjB,CAAyB,UAAUC,CAAV,EAAa;EACpC2d,IAAAA,WAAS,CAACljB,SAAV,CAAoBuF,CAApB,IAAyB3F,GAAG,CAAC2F,CAAD,CAA5B;EACD,GAFD;EAGA,SAAO,IAAP;EACD,CALD;;EAOAkU,IAAI,CAAC1V,SAAL,GAAiB,YAAY;EAC3B,MAAIvE,CAAC,GAAG,IAAI0jB,WAAJ,EAAR;EACA,SAAO1jB,CAAC,CAACuE,SAAT;EACD,CAHD;;EAKA0V,IAAI,CAAC3M,GAAL,GAAW,UAAU9I,EAAV,EAAcuJ,OAAd,EAAuB;EAChC,MAAI/N,CAAC,GAAG,IAAI0jB,WAAJ,CAAc,IAAd,EAAoBlf,EAApB,EAAwBuJ,OAAxB,CAAR;EACA/N,EAAAA,CAAC,CAAC4D,KAAF,GAAU,gBAAV;EACA,SAAO5D,CAAP;EACD,CAJD;;EAMAia,IAAI,CAACkK,GAAL,GAAW,UAAU3f,EAAV,EAAcuJ,OAAd,EAAuB;EAChC,MAAI/N,CAAC,GAAG,IAAI0jB,WAAJ,CAAc,IAAd,EAAoBlf,EAApB,EAAwBuJ,OAAxB,CAAR;EACA/N,EAAAA,CAAC,CAAC4D,KAAF,GAAU,CAAC,gBAAX;EACA,SAAO5D,CAAP;EACD,CAJD;;;EAOAia,IAAI,CAAC0J,QAAL,GAAgBI,UAAhB;EACA9J,IAAI,CAACmK,OAAL,GAAeJ,QAAf;;EAEA/J,IAAI,CAACoK,MAAL,GAAcpK,IAAI,CAACiK,MAAnB;EACA,IAAII,KAAG,GAAGrK,IAAV;;;;;;;;;;;;;ECn3IA,MAAMsK,aAAa,GAAG,UAAUllB,GAAV,EAAe;EACnC,MAAIW,CAAC,GAAGX,GAAG,CAACmlB,QAAJ,EAAR;;EACA,MAAI,CAACxkB,CAAL,EAAQ;EACN,WAAO,IAAP;EACD;;EACD,MAAIsY,GAAG,GAAGtY,CAAC,CAACE,IAAF,MAAY,EAAtB;EACA,MAAIukB,KAAK,GAAGnM,GAAG,CAAC7Q,KAAJ,CAAU,QAAV,CAAZ;;EACA,MAAI,CAACgd,KAAD,IAAU,CAACA,KAAK,CAAC,CAAD,CAApB,EAAyB;EACvB,WAAO,IAAP;EACD;;EACDnM,EAAAA,GAAG,GAAGmM,KAAK,CAAC,CAAD,CAAL,IAAY,EAAlB;EACAnM,EAAAA,GAAG,GAAGA,GAAG,CAACzY,IAAJ,EAAN;EACAyY,EAAAA,GAAG,GAAGA,GAAG,CAACnS,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;EACAmS,EAAAA,GAAG,GAAGA,GAAG,CAACnS,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;EACA,MAAIlD,KAAK,GAAGqV,GAAG,CAACrV,KAAJ,CAAU,KAAV,CAAZ;EACAA,EAAAA,KAAK,GAAGA,KAAK,CAAC+U,MAAN,CAAc9R,GAAD,IAASA,GAAtB,CAAR,CAfmC;;EAiBnC,MAAIjD,KAAK,CAAC,CAAD,CAAL,IAAYA,KAAK,CAAC,CAAD,CAAjB,IAAwBA,KAAK,CAACxD,MAAN,KAAiB,CAA7C,EAAgD;EAC9C,WAAO;EACLilB,MAAAA,KAAK,EAAEzhB,KAAK,CAAC,CAAD,CADP;EAEL0hB,MAAAA,KAAK,EAAE1hB,KAAK,CAAC,CAAD;EAFP,KAAP;EAID,GAtBkC;;;EAwBnC,MAAIA,KAAK,CAAC,CAAD,CAAT,EAAc;EACZ,QAAIiD,GAAG,GAAGjD,KAAK,CAAC,CAAD,CAAL,CAASkD,OAAT,CAAiB,mBAAjB,EAAsC,EAAtC,CAAV;EACA,QAAI6C,CAAC,GAAG0a,SAAS,CAACxd,GAAD,CAAjB;;EACA,QAAI8C,CAAC,CAACyG,OAAF,EAAJ,EAAiB;EACf,aAAO;EACLiV,QAAAA,KAAK,EAAExe;EADF,OAAP;EAGD;EACF;;EACD,SAAO,IAAP;EACD,CAlCD;;EAmCA,eAAc,GAAGqe,aAAjB;;ECrCA,MAAMK,YAAU,GAAG,UAAUvlB,GAAV,EAAe;EAChC,MAAIwlB,IAAI,GAAGxlB,GAAG,CAACylB,UAAJ,EAAX;;EACA,OAAK,IAAItlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqlB,IAAI,CAACplB,MAAzB,EAAiCD,CAAC,IAAI,CAAtC,EAAyC;EACvC,QAAIgI,CAAC,GAAGqd,IAAI,CAACrlB,CAAD,CAAJ,CAAQiI,KAAR,CAAc,mBAAd,CAAR;;EACA,QAAID,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAV,EAAe;EACb,UAAIzE,IAAI,GAAGiH,QAAQ,CAACxC,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;;EACA,UAAIzE,IAAI,IAAIA,IAAI,GAAG,IAAnB,EAAyB;EACvB,eAAOA,IAAP;EACD;EACF;EACF;;EACD,SAAO,IAAP;EACD,CAZD;;EAaA,kBAAc,GAAG6hB,YAAjB;;ECXA,MAAMG,SAAS,GAAG,UAAU7e,GAAV,EAAe;EAC/B,MAAI,CAACA,GAAL,EAAU;EACR,WAAO,IAAP;EACD,GAH8B;;;EAK/BA,EAAAA,GAAG,GAAGA,GAAG,CAACC,OAAJ,CAAY,QAAZ,EAAsB,EAAtB,CAAN;EACAD,EAAAA,GAAG,GAAGA,GAAG,CAACrG,IAAJ,EAAN,CAN+B;;EAQ/B,MAAIqG,GAAG,CAACuB,KAAJ,CAAU,YAAV,CAAJ,EAA6B;EAC3B,WAAO;EACL1E,MAAAA,IAAI,EAAEiH,QAAQ,CAAC9D,GAAD,EAAM,EAAN;EADT,KAAP;EAGD,GAZ8B;;;EAc/B,MAAIlG,CAAC,GAAG0jB,SAAS,CAACxd,GAAD,CAAjB;EACA,SAAO;EACLnD,IAAAA,IAAI,EAAE/C,CAAC,CAAC+C,IAAF,EADD;EAELI,IAAAA,KAAK,EAAEnD,CAAC,CAACmD,KAAF,EAFF;EAGLsF,IAAAA,IAAI,EAAEzI,CAAC,CAACyI,IAAF;EAHD,GAAP;EAKD,CApBD;;EAqBA,eAAc,GAAGsc,SAAjB;;EClBA,MAAMC,SAAS,GAAG,UAAU3lB,GAAV,EAAe;EAC/B,MAAImQ,GAAG,GAAGpQ,UAAS,CAACC,GAAD,EAAM,YAAN,CAAnB;;EACA,MAAImQ,GAAJ,EAAS;EACP,WAAOuV,WAAS,CAACvV,GAAD,CAAhB;EACD,GAJ8B;;;EAO/BA,EAAAA,GAAG,GAAGyV,WAAU,CAAC5lB,GAAD,CAAhB;;EACA,MAAImQ,GAAG,IAAIA,GAAG,CAACkV,KAAf,EAAsB;EACpB,WAAOK,WAAS,CAACvV,GAAG,CAACkV,KAAL,CAAhB;EACD,GAV8B;;;EAa/B,MAAI3hB,IAAI,GAAG6hB,cAAU,CAACvlB,GAAD,CAArB;;EACA,MAAI0D,IAAJ,EAAU;EACR,WAAO;EAAEA,MAAAA,IAAI,EAAEA;EAAR,KAAP;EACD;;EACD,SAAO,IAAP;EACD,CAlBD;;EAmBA,eAAc,GAAGiiB,SAAjB;;ECtBA,MAAME,UAAU,GAAG,UAAU7lB,GAAV,EAAe;EAChC,MAAImQ,GAAG,GAAGpQ,UAAS,CAACC,GAAD,EAAM,aAAN,CAAnB;;EACA,MAAImQ,GAAJ,EAAS;EACP,WAAOA,GAAP;EACD;;EACD,SAAO,IAAP;EACD,CAND;;EAOA,gBAAc,GAAG0V,UAAjB;;ECTA,MAAMC,SAAS,GAAG;EAChB,mBAAiB,IADD;EAEhB,2CAAyC,IAFzB;EAGhB,2CAAyC,IAHzB;EAIhB,4CAA0C,IAJ1B;EAKhB,wBAAsB,IALN;EAMhB,yCAAuC;EANvB,CAAlB;EASA,MAAMC,MAAM,GAAG;EACb,iBAAe,IADF;EAEb,2BAAyB,IAFZ;EAGb,2BAAyB,IAHZ;EAIb,4BAA0B,IAJb;EAKb,4BAA0B,IALb;EAMb,2BAAyB,IANZ;EAOb,2BAAyB,IAPZ;EAQb,6BAA2B,IARd;EASb,mBAAiB,IATJ;EAUb,sCAAoC,IAVvB;EAWb,sCAAoC,IAXvB;EAYb,+BAA6B,IAZhB;EAab,mCAAiC,IAbpB;EAcb,sCAAoC,IAdvB;EAeb,yBAAuB,IAfV;EAgBb,iDAA+C,IAhBlC;EAiBb,iDAA+C,IAjBlC;EAkBb,sDAAoD,IAlBvC;EAmBb,iDAA+C,IAnBlC;EAoBb,yBAAuB,IApBV;EAqBb,6BAA2B,IArBd;EAsBb,4BAA0B,IAtBb;EAuBb,sBAAoB,IAvBP;EAwBb,sCAAoC,IAxBvB;EAyBb,wBAAsB,IAzBT;EA0Bb,2BAAyB,IA1BZ;EA2Bb,0CAAwC,IA3B3B;EA4Bb,+BAA6B,IA5BhB;EA6Bb,yBAAuB,IA7BV;EA8Bb,4BAA0B,IA9Bb;EA+Bb,6BAA2B,IA/Bd;EAgCb,yBAAuB;EAhCV,CAAf;;EAmCA,MAAMC,KAAK,GAAG,UAAUhmB,GAAV,EAAe;EAC3B,MAAIwlB,IAAI,GAAGxlB,GAAG,CAACylB,UAAJ,EAAX,CAD2B;;EAI3B,MAAID,IAAI,CAACxc,IAAL,CAAW8P,CAAD,IAAOgN,SAAS,CAACplB,cAAV,CAAyBoY,CAAzB,CAAjB,CAAJ,EAAmD;EACjD,WAAO,IAAP;EACD,GAN0B;;;EAQ3B,MAAI0M,IAAI,CAACxc,IAAL,CAAW8P,CAAD,IAAOiN,MAAM,CAACrlB,cAAP,CAAsBoY,CAAtB,CAAjB,CAAJ,EAAgD;EAC9C,WAAO,KAAP;EACD;;EACD,SAAO,IAAP;EACD,CAZD;;EAaA,gBAAc,GAAGkN,KAAjB;;ECzDA;EAEA;EACA;EAEA,MAAMC,SAAO,GAAG;EACdC,EAAAA,GAAG,EAAE,IADS;EAEd,mBAAiB,IAFH;EAGd,2BAAyB,IAHX;EAId,yBAAuB,IAJT;EAKd,wBAAsB,IALR;EAMd,iBAAe,IAND;EAOd,yBAAuB,IAPT;EAQd,8BAA4B,IARd;EASd,yBAAuB,IATT;EAUd,sBAAoB,IAVN;EAWd,wBAAsB,IAXR;EAYd,oBAAkB,IAZJ;EAad,uBAAqB,IAbP;EAcdC,EAAAA,SAAS,EAAE,IAdG;EAed,oBAAkB;EAfJ,CAAhB;EAkBA,MAAMC,MAAM,GAAG;EACb,kBAAgB,IADH;EAEb,2BAAyB,IAFZ;EAGb,4BAA0B,IAHb;EAIbC,EAAAA,QAAQ,EAAE,IAJG;EAKbC,EAAAA,KAAK,EAAE,IALM;EAMbC,EAAAA,MAAM,EAAE,IANK;EAObC,EAAAA,SAAS,EAAE,IAPE;EAQbC,EAAAA,QAAQ,EAAE;EARG,CAAf;;EAUA,MAAMC,UAAU,GAAG,UAAU1mB,GAAV,EAAe;EAChC,MAAI2mB,SAAS,GAAG3mB,GAAG,CAAC2mB,SAAJ,GAAgB5N,GAAhB,CAAqB6N,IAAD,IAAUA,IAAI,CAACvT,IAAL,EAA9B,CAAhB;;EACA,OAAK,IAAIlT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwmB,SAAS,CAACvmB,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACzC,QAAI0mB,KAAK,GAAGF,SAAS,CAACxmB,CAAD,CAAT,CAAa2mB,QAAb,IAAyB,EAArC;EACAD,IAAAA,KAAK,GAAGA,KAAK,CAACtmB,WAAN,GAAoBC,IAApB,EAAR;;EACA,QAAIylB,SAAO,CAACvlB,cAAR,CAAuBmmB,KAAvB,CAAJ,EAAmC;EACjC,aAAO,IAAP;EACD;;EACD,QAAIT,MAAM,CAAC1lB,cAAP,CAAsBmmB,KAAtB,CAAJ,EAAkC;EAChC,aAAO,KAAP;EACD;EACF,GAX+B;;;EAahC,MAAIE,GAAG,GAAG/mB,GAAG,CAAC8mB,QAAJ,CAAa,uBAAb,CAAV;;EACA,MAAIC,GAAJ,EAAS;EACPA,IAAAA,GAAG,GAAGA,GAAG,CAAC1T,IAAJ,EAAN,CADO;;EAGP,QAAI0T,GAAG,CAACC,MAAJ,KAAe,KAAf,IAAwBD,GAAG,CAACb,GAAJ,KAAY,KAApC,IAA6Ca,GAAG,CAACZ,SAAJ,KAAkB,KAA/D,IAAwEY,GAAG,CAACE,GAAJ,KAAY,KAAxF,EAA+F;EAC7F,aAAO,IAAP;EACD;;EACD,QAAIF,GAAG,CAACC,MAAJ,KAAe,IAAf,IAAuBD,GAAG,CAACb,GAAJ,KAAY,IAAnC,IAA2Ca,GAAG,CAACE,GAAJ,KAAY,IAA3D,EAAiE;EAC/D,aAAO,KAAP;EACD;EACF;;EACD,SAAO,IAAP;EACD,CAzBD;;EA0BA,gBAAc,GAAGP,UAAjB;;ECvDA,IAAI/c,CAAC,GAAG,IAAIvF,IAAJ,EAAR;EACA,MAAM8iB,OAAO,GAAGvd,CAAC,CAACW,WAAF,KAAkB,GAAlC;;EAEA,MAAM2b,OAAO,GAAG,UAAUjmB,GAAV,EAAe;;EAE7B,MAAIslB,KAAK,GAAGtlB,GAAG,CAACmnB,SAAJ,EAAZ;;EACA,MAAI7B,KAAJ,EAAW;EACT,WAAO,KAAP;EACD,GAL4B;;;EAO7B,MAAI8B,UAAU,GAAGpnB,GAAG,CAAConB,UAAJ,EAAjB;;EACA,MAAIA,UAAJ,EAAgB;EACd,WAAO,KAAP;EACD,GAV4B;;;EAY7B,MAAIC,OAAO,GAAGrB,YAAK,CAAChmB,GAAD,CAAnB;;EACA,MAAIqnB,OAAO,KAAK,IAAZ,IAAoBA,OAAO,KAAK,KAApC,EAA2C;EACzC,WAAOA,OAAP;EACD,GAf4B;;;EAiB7B,MAAIC,YAAY,GAAGZ,YAAU,CAAC1mB,GAAD,CAA7B;;EACA,MAAIsnB,YAAY,KAAK,IAAjB,IAAyBA,YAAY,KAAK,KAA9C,EAAqD;EACnD,WAAOA,YAAP;EACD,GApB4B;;;EAsB7B,MAAIjC,KAAK,GAAGrlB,GAAG,CAAC2lB,SAAJ,EAAZ;;EACA,MAAIN,KAAK,IAAIA,KAAK,CAAC3hB,IAAf,IAAuB2hB,KAAK,CAAC3hB,IAAN,GAAawjB,OAAxC,EAAiD;EAC/C,WAAO,IAAP;EACD;;EACD,SAAO,IAAP;EACD,CA3BD;;EA4BA,aAAc,GAAGjB,OAAjB;;ECnCA,MAAMV,UAAU,GAAG,UAAUvlB,GAAV,EAAe;EAChC,MAAIwlB,IAAI,GAAGxlB,GAAG,CAACylB,UAAJ,EAAX;;EACA,OAAK,IAAItlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqlB,IAAI,CAACplB,MAAzB,EAAiCD,CAAC,IAAI,CAAtC,EAAyC;EACvC,QAAIgI,CAAC,GAAGqd,IAAI,CAACrlB,CAAD,CAAJ,CAAQiI,KAAR,CAAc,mBAAd,CAAR;;EACA,QAAID,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAV,EAAe;EACb,UAAIzE,IAAI,GAAGiH,QAAQ,CAACxC,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;;EACA,UAAIzE,IAAI,IAAIA,IAAI,GAAG,IAAnB,EAAyB;EACvB,eAAOA,IAAP;EACD;EACF;EACF;;EACD,SAAO,IAAP;EACD,CAZD;;EAaA,gBAAc,GAAG6hB,UAAjB;;ECRA,MAAM4B,SAAS,GAAG,UAAUnnB,GAAV,EAAe;EAC/B,MAAImQ,GAAG,GAAGpQ,UAAS,CAACC,GAAD,EAAM,YAAN,CAAnB;;EACA,MAAImQ,GAAJ,EAAS;EACP,WAAOuV,WAAS,CAACvV,GAAD,CAAhB;EACD,GAJ8B;;;EAM/BA,EAAAA,GAAG,GAAGyV,WAAU,CAAC5lB,GAAD,CAAhB;;EACA,MAAImQ,GAAG,IAAIA,GAAG,CAACmV,KAAf,EAAsB;EACpB,WAAOI,WAAS,CAACvV,GAAG,CAACmV,KAAL,CAAhB;EACD,GAT8B;;;EAY/B,MAAI5hB,IAAI,GAAG6hB,YAAU,CAACvlB,GAAD,CAArB;;EACA,MAAI0D,IAAJ,EAAU;EACR,WAAO;EAAEA,MAAAA,IAAI,EAAEA;EAAR,KAAP;EACD;;EACD,SAAO,IAAP;EACD,CAjBD;;EAkBA,eAAc,GAAGyjB,SAAjB;;ECrBA,MAAMC,UAAU,GAAG,UAAUpnB,GAAV,EAAe;EAChC,MAAImQ,GAAG,GAAGpQ,UAAS,CAACC,GAAD,EAAM,aAAN,CAAnB;;EACA,MAAImQ,GAAJ,EAAS;EACP,WAAOA,GAAP;EACD;;EACD,SAAO,IAAP;EACD,CAND;;EAOA,gBAAc,GAAGiX,UAAjB;;ECPA,MAAMG,cAAc,GAAG,UAAUvnB,GAAV,EAAe;EACpC,MAAImQ,GAAG,GAAGpQ,UAAS,CAACC,GAAD,EAAM,aAAN,CAAnB;;EACA,MAAImQ,GAAJ,EAAS;EACP,WAAOA,GAAP;EACD;;EACD,SAAO,IAAP;EACD,CAND;;EAOA,eAAc,GAAGoX,cAAjB;;ECFA,MAAMC,SAAS,GAAG,UAAUC,MAAV,EAAkB;EAClCA,EAAAA,MAAM,CAACC,GAAP,CAAWvmB,SAAX,CAAqBwkB,SAArB,GAAiC,YAAY;EAC3C,WAAOA,WAAS,CAAC,IAAD,CAAhB;EACD,GAFD;;EAGA8B,EAAAA,MAAM,CAACC,GAAP,CAAWvmB,SAAX,CAAqB0kB,UAArB,GAAkC,YAAY;EAC5C,WAAOA,YAAU,CAAC,IAAD,CAAjB;EACD,GAFD;;EAGA4B,EAAAA,MAAM,CAACC,GAAP,CAAWvmB,SAAX,CAAqB8kB,OAArB,GAA+B,YAAY;EACzC,WAAOA,SAAO,CAAC,IAAD,CAAd;EACD,GAFD;;EAGAwB,EAAAA,MAAM,CAACC,GAAP,CAAWvmB,SAAX,CAAqBgmB,SAArB,GAAiC,YAAY;EAC3C,WAAOA,WAAS,CAAC,IAAD,CAAhB;EACD,GAFD;;EAGAM,EAAAA,MAAM,CAACC,GAAP,CAAWvmB,SAAX,CAAqBimB,UAArB,GAAkC,YAAY;EAC5C,WAAOA,YAAU,CAAC,IAAD,CAAjB;EACD,GAFD;;EAGAK,EAAAA,MAAM,CAACC,GAAP,CAAWvmB,SAAX,CAAqBwmB,WAArB,GAAmC,YAAY;EAC7C,WAAOA,WAAW,CAAC,IAAD,CAAlB;EACD,GAFD;EAGD,CAnBD;;SAoBc,GAAGH;;;;;;;;"} \ No newline at end of file diff --git a/plugins/person/builds/wtf-plugin-person.min.js b/plugins/person/builds/wtf-plugin-person.min.js index 0a7ad2ac..d80033e4 100644 --- a/plugins/person/builds/wtf-plugin-person.min.js +++ b/plugins/person/builds/wtf-plugin-person.min.js @@ -1 +1 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfPerson=n()}(this,(function(){"use strict";var e={actor:!0,adult_biography:!0,afl_biography:!0,alpine_ski_racer:!0,archbishop:!0,architect:!0,artist:!0,athlete:!0,baseball_biography:!0,basketball_biography:!0,boxer:!0,canadianmp:!0,cfl_player:!0,chef:!0,chess_player:!0,christian_leader:!0,college_coach:!0,college_football_player:!0,comedian:!0,comics_creator:!0,cricketer:!0,criminal:!0,cyclist:!0,economist:!0,engineer:!0,fashion_designer:!0,field_hockey_player:!0,figure_skater:!0,football_biography:!0,gaa_player:!0,golfer:!0,governor:!0,gridiron_football_person:!0,gymnast:!0,handball_biography:!0,hindu_leader:!0,horseracing_personality:!0,ice_hockey_player:!0,indian_politician:!0,judge:!0,lacrosse_player:!0,martial_artist:!0,mass_murderer:!0,medical_person:!0,military_person:!0,minister:!0,mlb_player:!0,model:!0,monarch:!0,mp:!0,nascar_driver:!0,nba_biography:!0,nfl_biography:!0,nfl_player:!0,officeholder:!0,person:!0,philosopher:!0,police_officer:!0,politician:!0,"politician_(general)":!0,presenter:!0,president:!0,professional_wrestler:!0,racing_driver:!0,religious_biography:!0,roman_emperor:!0,royalty:!0,rugby_biography:!0,rugby_league_biography:!0,saint:!0,scholar:!0,scientist:!0,skier:!0,sportsperson:!0,squash_player:!0,state_representative:!0,state_senator:!0,swimmer:!0,tennis_biography:!0,volleyball_biography:!0,volleyball_player:!0,wrc_driver:!0,writer:!0,"hockey team player":!0,"snooker player":!0,bishop:!0,"football biography":!0,"military person":!0,"baseball biography":!0,"ice hockey player":!0,"nfl player":!0,"christian leader":!0,congressman:!0,"basketball biography":!0,"comics creator":!0,"professional wrestler":!0,"college coach":!0,"tennis biography":!0,"afl biography":!0,"nfl biography":!0,"rugby biography":!0,"rugby league biography":!0,"prime minister":!0,"nba biography":!0,"figure skater":!0,"f1 driver":!0,"gridiron football person":!0,"indian politician":!0,"racing driver":!0,"martial artist":!0,"chinese-language singer and actor":!0,astronaut:!0,senator:!0,"nascar driver":!0,"adult biography":!0,"state representative":!0,"state senator":!0,"coa wide":!0,"religious biography":!0,"chess player":!0,"pageant titleholder":!0,"gaa player":!0,"us cabinet official":!0};var n=function(n,t){let r=n.infoboxes();for(let n=0;ne.length)&&(n=e.length);for(var t=0,r=new Array(n);t=u&&e");return!0===i(e.epoch,a[0],a[1],t,r)?t:r},s=["africa","america","asia","atlantic","australia","brazil","canada","chile","europe","indian","mexico","pacific","antarctica","etc"];var c,l=(c=Object.freeze({__proto__:null,default:{"9|s":"2/dili,2/jayapura","9|n":"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau","9.5|s|04/04:03->10/03:02":"4/adelaide,4/broken_hill,4/south,4/yancowinna","9.5|s":"4/darwin,4/north","8|s|03/08:01->10/04:00":"12/casey","8|s":"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west","8|n":"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator","8.75|s":"4/eucla","7|s":"12/davis,2/jakarta,9/christmas","7|n":"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh","6|s":"12/vostok","6|n":"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu","6.5|n":"2/rangoon,9/cocos,2/yangon","5|s":"12/mawson,9/kerguelen","5|n":"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad","5.75|n":"2/katmandu,2/kathmandu","5.5|n":"2/calcutta,2/colombo,2/kolkata","4|s":"9/reunion","4|n":"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius","4.5|n|03/22:00->09/21:24":"2/tehran","4.5|n":"2/kabul","3|s":"12/syowa,9/antananarivo","3|n|03/28:03->10/31:04":"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia","3|n|03/28:02->10/31:03":"8/chisinau,8/tiraspol","3|n|03/28:00->10/30:24":"2/beirut","3|n|03/27:00->10/30:01":"2/gaza,2/hebron","3|n|03/26:02->10/31:02":"2/jerusalem,2/tel_aviv","3|n|03/26:00->10/29:01":"2/amman","3|n|03/26:00->10/28:24":"2/damascus","3|n":"0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul","2|s|03/28:02->10/31:02":"12/troll","2|s":"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane","2|n|03/28:02->10/31:03":"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen","2|n":"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad","1|s":"0/brazzaville,0/kinshasa,0/luanda,0/windhoek","1|n|04/11:03->05/16:02":"0/casablanca,0/el_aaiun","1|n|03/28:01->10/31:02":"3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast","1|n":"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis","14|n":"11/kiritimati","13|s|04/04:04->09/26:03":"11/apia","13|s|01/15:02->11/05:03":"11/tongatapu","13|n":"11/enderbury,11/fakaofo","12|s|04/04:03->09/26:02":"12/mcmurdo,11/auckland,12/south_pole","12|s|01/17:03->11/14:02":"11/fiji","12|n":"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis","12.75|s|04/04:03->04/04:02":"11/chatham","11|s|04/04:03->10/03:02":"12/macquarie","11|s":"11/bougainville","11|n":"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei","11.5|n|04/04:03->10/03:02":"11/norfolk","10|s|04/04:03->10/03:02":"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria","10|s":"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland","10|n":"2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap","10.5|s|04/04:01->10/03:02":"4/lord_howe,4/lhi","0|n|03/28:00->10/31:01":"1/scoresbysund,3/azores","0|n":"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu","-9|n|03/14:02->11/07:02":"1/adak,1/atka,us/aleutian","-9|n":"11/gambier","-9.5|n":"11/marquesas","-8|n|03/14:02->11/07:02":"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska","-8|n":"11/pitcairn","-7|n|03/14:02->11/07:02":"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific","-7|n|03/08:02->11/01:01":"1/dawson,1/whitehorse,6/yukon","-7|n":"1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona","-6|s|04/03:22->09/04:22":"11/easter,7/easterisland","-6|n|04/04:02->10/31:02":"1/chihuahua,1/mazatlan,10/bajasur","-6|n|03/14:02->11/07:02":"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain","-6|n":"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan","-5|s":"1/lima,1/rio_branco,1/porto_acre,5/acre","-5|n|04/04:02->10/31:02":"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general","-5|n|03/14:02->11/07:02":"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke","-5|n|03/12:03->11/05:01":"1/north_dakota","-5|n":"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan","-4|s|05/13:23->08/13:01":"12/palmer","-4|s|04/03:24->09/05:00":"1/santiago,7/continental","-4|s|03/27:24->10/03:00":"1/asuncion","-4|s|02/16:24->11/03:00":"1/campo_grande,1/cuiaba","-4|s":"1/la_paz,1/manaus,5/west","-4|n|03/14:02->11/07:02":"1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan","-4|n|03/14:00->11/07:01":"1/havana","-4|n|03/12:03->11/05:01":"1/indiana,1/kentucky","-4|n":"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin","-3|s":"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east","-3|n|03/14:02->11/07:02":"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic","-3|n":"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem","-2|n|03/27:22->10/30:23":"1/godthab,1/nuuk","-2|n|03/14:02->11/07:02":"1/miquelon","-2|n":"1/noronha,3/south_georgia,5/denoronha","-2.5|n|03/14:02->11/07:02":"1/st_johns,6/newfoundland","-1|n":"3/cape_verde","-11|n":"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa","-10|n":"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii"}}))&&c.default||c,h={};Object.keys(l).forEach((function(e){var n=e.split("|"),t={offset:Number(n[0]),hem:n[1]};n[2]&&(t.dst=n[2]),l[e].split(",").forEach((function(e){e=e.replace(/(^[0-9]+)\//,(function(e,n){return n=Number(n),s[n]+"/"})),h[e]=t}))})),h.utc={offset:0,hem:"n"};for(var f=-14;f<=14;f+=.5){var d=f;d>0&&(d="+"+d);var m="etc/gmt"+d;h[m]={offset:-1*f,hem:"n"},h[m="utc/gmt"+d]={offset:-1*f,hem:"n"}}var p=h,y=/(\-?[0-9]+)h(rs)?/i,v=/(\-?[0-9]+)/,g=/utc([\-+]?[0-9]+)/i,b=/gmt([\-+]?[0-9]+)/i,w=function(e){return(e=Number(e))>=-13&&e<=13?"etc/gmt"+(e=((e*=-1)>0?"+":"")+e):null},k=function(e){var n=e.match(y);if(null!==n)return w(n[1]);if(null!==(n=e.match(g)))return w(n[1]);if(null!==(n=e.match(b))){var t=-1*Number(n[1]);return w(t)}return null!==(n=e.match(v))?w(n[1]):null},_=function(){var e=function(){if("undefined"==typeof Intl||void 0===Intl.DateTimeFormat)return null;var e=Intl.DateTimeFormat();if(void 0===e||void 0===e.resolvedOptions)return null;var n=e.resolvedOptions().timeZone;return n?n.toLowerCase():null}();return null===e?"utc":e}(),z=Object.keys(p).reduce((function(e,n){var t=n.split("/")[1]||"";return e[t=t.replace(/_/g," ")]=n,e}),{}),j=function(e,n){if(!e)return _;"string"!=typeof e&&console.error("Timezone must be a string - recieved: '",e,"'\n");var t=e.trim();if(t=t.toLowerCase(),!0===n.hasOwnProperty(t))return t;if(t=function(e){return(e=(e=(e=(e=(e=e.replace(/ time/g,"")).replace(/ (standard|daylight|summer)/g,"")).replace(/\b(east|west|north|south)ern/g,"$1")).replace(/\b(africa|america|australia)n/g,"$1")).replace(/\beuropean/g,"europe")).replace(/\islands/g,"island")}(t),!0===n.hasOwnProperty(t))return t;if(!0===z.hasOwnProperty(t))return z[t];if(!0===/[0-9]/.test(t)){var r=k(t);if(r)return r}throw new Error("Spacetime: Cannot find timezone named: '"+e+"'. Please enter an IANA timezone id.")},O={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};O.date=O.day,O.month=25488e5,O.week=6048e5,O.year=3154e7,Object.keys(O).forEach((function(e){O[e+"s"]=O[e]}));var D=O,P=function(e,n,t,r,a){var o=e.d[t]();if(o!==n){var i=null===a?null:e.d[a](),u=e.epoch,s=n-o;e.epoch+=D[r]*s,"day"===r&&Math.abs(s)>28&&n<28&&(e.epoch+=D.hour),null!==a&&i!==e.d[a]()&&(e.epoch=u);for(var c=D[r]/2;e.d[t]()n;)e.epoch-=c;null!==a&&i!==e.d[a]()&&(e.epoch=u)}},S={year:{valid:function(e){return e>-4e3&&e<4e3},walkTo:function(e,n){return P(e,n,"getFullYear","year",null)}},month:{valid:function(e){return e>=0&&e<=11},walkTo:function(e,n){var t=e.d,r=t.getMonth(),a=e.epoch,o=t.getFullYear();if(r!==n){var i=n-r;for(e.epoch+=D.day*(28*i),o!==e.d.getFullYear()&&(e.epoch=a);e.d.getMonth()n;)e.epoch-=D.day}}},date:{valid:function(e){return e>0&&e<=31},walkTo:function(e,n){return P(e,n,"getDate","day","getMonth")}},hour:{valid:function(e){return e>=0&&e<24},walkTo:function(e,n){return P(e,n,"getHours","hour","getDate")}},minute:{valid:function(e){return e>=0&&e<60},walkTo:function(e,n){return P(e,n,"getMinutes","minute","getHours")}},second:{valid:function(e){return e>=0&&e<60},walkTo:function(e,n){e.epoch=e.seconds(n).epoch}},millisecond:{valid:function(e){return e>=0&&e<1e3},walkTo:function(e,n){e.epoch=e.milliseconds(n).epoch}}},M=function(e,n){for(var t=Object.keys(S),r=e.clone(),a=0;a100&&(t/=100),(t*=-1)>=0&&(t="+"+t);var r="etc/gmt"+t;return e.timezones[r]&&(e.tz=r),e},$=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=(n=n.replace(/^\s+/,"").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/);if(null!==t){var r=Number(t[1]);if(r<0||r>24)return e.startOf("day");var a=Number(t[2]);if(t[2].length<2||a<0||a>59)return e.startOf("day");t[4]>999&&(t[4]=parseInt("".concat(t[4]).substring(0,3),10)),e=(e=(e=(e=e.hour(r)).minute(a)).seconds(t[3]||0)).millisecond(t[4]||0);var o=n.match(/[\b0-9](am|pm)\b/);return null!==o&&o[1]&&(e=e.ampm(o[1])),e}if(null!==(t=n.match(/([0-9]+) ?(am|pm)/))&&t[1]){var i=Number(t[1]);return i>12||i<1?e.startOf("day"):e=(e=(e=e.hour(t[1]||0)).ampm(t[2])).startOf("hour")}return e=e.startOf("day")},x=[31,28,31,30,31,30,31,31,30,31,30,31],Y=function(e,n){return e(n={exports:{}},n.exports),n.exports}((function(e,n){n.isLeapYear=function(e){return e%4==0&&e%100!=0||e%400==0},n.isDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.valueOf())},n.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},n.isObject=function(e){return"[object Object]"===Object.prototype.toString.call(e)},n.isBoolean=function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},n.zeroPad=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,t="0";return(e+="").length>=n?e:new Array(n-e.length+1).join(t)+e},n.titleCase=function(e){return e?e[0].toUpperCase()+e.substr(1):""},n.ordinal=function(e){var n=e%10,t=e%100;return 1===n&&11!==t?e+"st":2===n&&12!==t?e+"nd":3===n&&13!==t?e+"rd":e+"th"},n.toCardinal=function(e){return e=(e=String(e)).replace(/([0-9])(st|nd|rd|th)$/i,"$1"),parseInt(e,10)},n.normalize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return"day"===(e=(e=(e=(e=e.toLowerCase().trim()).replace(/ies$/,"y")).replace(/s$/,"")).replace(/-/g,""))||"days"===e?"date":"min"===e||"mins"===e?"minute":e},n.getEpoch=function(e){return"number"==typeof e?e:n.isDate(e)?e.getTime():e.epoch?e.epoch:null},n.beADate=function(e,t){return!1===n.isObject(e)?t.clone().set(e):e},n.formatTimezone=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=e>0?"+":"-",a=Math.abs(e),o=n.zeroPad(parseInt(""+a,10)),i=n.zeroPad(a%1*60);return"".concat(r).concat(o).concat(t).concat(i)}}));Y.isLeapYear,Y.isDate,Y.isArray,Y.isObject,Y.isBoolean,Y.zeroPad,Y.titleCase,Y.ordinal,Y.toCardinal,Y.normalize,Y.getEpoch,Y.beADate,Y.formatTimezone;var L=Y.isLeapYear,B=function(e){if(!0!==x.hasOwnProperty(e.month))return!1;if(1===e.month)return!!(L(e.year)&&e.date<=29)||e.date<=28;var n=x[e.month]||0;return e.date<=n},F=T(),Z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,t=parseInt(e.trim(),10);return!t&&n&&(t=n.year),t=t||(new Date).getFullYear()},H=[{reg:/^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i,parse:function(e,n,t,r){var a=parseInt(n[2],10)-1,o={year:n[1],month:a,date:n[3]};return!1===B(o)?(e.epoch=null,e):(N(e,n[5]),M(e,o),e=$(e,n[4]))}},{reg:/^([0-9]{4})[\-\/.]([0-9]{1,2})[\-\/.]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t={year:n[1],month:parseInt(n[2],10)-1,date:parseInt(n[3],10)};return t.month>=12&&(t.date=parseInt(n[2],10),t.month=parseInt(n[3],10)-1),!1===B(t)?(e.epoch=null,e):(M(e,t),e=$(e,n[4]))}},{reg:/^([0-9]{1,2})[\-\/.]([0-9]{1,2})[\-\/.]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t=parseInt(n[1],10)-1,r=parseInt(n[2],10);(e.british||t>=12)&&(r=parseInt(n[1],10),t=parseInt(n[2],10)-1);var a={year:Z(n[3],e._today)||(new Date).getFullYear(),month:t,date:r};return!1===B(a)?(e.epoch=null,e):(M(e,a),e=$(e,n[4]))}},{reg:/^([0-9]{4})[\-\/]([0-9]{2})$/i,parse:function(e,n,t,r){var a=parseInt(n[2],10)-1,o={year:n[1],month:a,date:1};return!1===B(o)?(e.epoch=null,e):(N(e,n[5]),M(e,o),e=$(e,n[4]))}},{reg:/^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i,parse:function(e,n){var t=F[n[2].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[1]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+)[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[2]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[2]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[2],e._today),month:t,date:e._today.date||1};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t=F[n[2].toLowerCase()];if(!t)return null;var r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[1])};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^(q[0-9])( of)?( [0-9]{4})?/i,parse:function(e,n){var t=n[1]||"";e=e.quarter(t);var r=n[3]||"";return r&&(r=r.trim(),e=e.year(r)),e}},{reg:/^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,parse:function(e,n){var t=n[1]||"";e=e.season(t);var r=n[3]||"";return r&&(r=r.trim(),e=e.year(r)),e}},{reg:/^[0-9,]+ ?b\.?c\.?$/i,parse:function(e,n){var t=n[0]||"";t=(t=t.replace(/^([0-9,]+) ?b\.?c\.?$/i,"-$1")).replace(/,/g,"");var r=parseInt(t.trim(),10),a=new Date,o={year:r,month:a.getMonth(),date:a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}},{reg:/^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i,parse:function(e,n){var t=n[0]||"";t=t.replace(/,/g,"");var r=parseInt(t.trim(),10),a=new Date,o={year:r,month:a.getMonth(),date:a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}},{reg:/^[0-9]{4}( ?a\.?d\.?)?$/i,parse:function(e,n){var t=e._today,r=Z(n[0],t),a=new Date;t.month&&!t.date&&(t.date=1);var o={year:r,month:t.month||a.getMonth(),date:t.date||a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}}],Q=function(e){return e.epoch=Date.now(),Object.keys(e._today||{}).forEach((function(n){"function"==typeof e[n]&&(e=e[n](e._today[n]))})),e},G={now:function(e){return Q(e)},today:function(e){return Q(e)},tonight:function(e){return e=(e=Q(e)).hour(18)},tomorrow:function(e){return e=(e=(e=Q(e)).add(1,"day")).startOf("day")},yesterday:function(e){return e=(e=(e=Q(e)).subtract(1,"day")).startOf("day")},christmas:function(e){var n=Q(e).year();return e=e.set([n,11,25,18,0,0])},"new years":function(e){var n=Q(e).year();return e=e.set([n,11,31,18,0,0])}};G["new years eve"]=G["new years"];var U=G,V={year:(new Date).getFullYear(),month:0,date:1},W=function(e,n,t){if(0===Object.keys(n).length)return e;n=Object.assign({},V,t,n);for(var r=Object.keys(n),a=0;a0&&n<25e8&&!1===e.silent&&(console.warn(" - Warning: You are setting the date to January 1970."),console.warn(" - did input seconds instead of milliseconds?")),e.epoch=n,e;if(e.epoch=Date.now(),e._today&&Y.isObject(e._today)&&Object.keys(e._today).length>0){var a=W(e,r,V);a.isValid()&&(e.epoch=a.epoch)}if(null==n||""===n)return e;if(!0===Y.isDate(n))return e.epoch=n.getTime(),e;if(!0===Y.isArray(n))return e=function(e,n,t){if(0===n.length)return e;for(var r=["year","month","date","hour","minute","second","millisecond"],a=0;a0?n:(n=Math.abs(n),n+" BC")},"year-short":function(e){var n=e.year();return n>0?"'".concat(String(e.year()).substr(2,4)):(n=Math.abs(n))+" BC"},"iso-year":function(e){var n=e.year(),t=n<0,r=Y.zeroPad(Math.abs(n),4);return t&&(r="-"+(r=Y.zeroPad(r,6))),r},time:function(e){return e.time()},"time-24":function(e){return"".concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))},hour:function(e){return e.hour12()},"hour-pad":function(e){return Y.zeroPad(e.hour12())},"hour-24":function(e){return e.hour24()},"hour-24-pad":function(e){return Y.zeroPad(e.hour24())},minute:function(e){return e.minute()},"minute-pad":function(e){return Y.zeroPad(e.minute())},second:function(e){return e.second()},"second-pad":function(e){return Y.zeroPad(e.second())},ampm:function(e){return e.ampm()},quarter:function(e){return"Q"+e.quarter()},season:function(e){return e.season()},era:function(e){return e.era()},json:function(e){return e.json()},timezone:function(e){return e.timezone().name},offset:function(e){return re(e)},numeric:function(e){return"".concat(e.year(),"/").concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()))},"numeric-us":function(e){return"".concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()),"/").concat(e.year())},"numeric-uk":function(e){return"".concat(Y.zeroPad(e.date()),"/").concat(Y.zeroPad(e.month()+1),"/").concat(e.year())},"mm/dd":function(e){return"".concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()))},iso:function(e){var n=e.format("iso-year"),t=Y.zeroPad(e.month()+1),r=Y.zeroPad(e.date()),a=Y.zeroPad(e.h24()),o=Y.zeroPad(e.minute()),i=Y.zeroPad(e.second()),u=Y.zeroPad(e.millisecond(),3),s=re(e);return"".concat(n,"-").concat(t,"-").concat(r,"T").concat(a,":").concat(o,":").concat(i,".").concat(u).concat(s)},"iso-short":function(e){var n=Y.zeroPad(e.month()+1),t=Y.zeroPad(e.date());return"".concat(e.year(),"-").concat(n,"-").concat(t)},"iso-utc":function(e){return new Date(e.epoch).toISOString()},nice:function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.time())},"nice-24":function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))},"nice-year":function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.year())},"nice-day":function(e){return"".concat(X.short()[e.day()]," ").concat(ae(C()[e.month()])," ").concat(Y.ordinal(e.date()))},"nice-full":function(e){return"".concat(e.dayName()," ").concat(ae(e.monthName())," ").concat(Y.ordinal(e.date()),", ").concat(e.time())},"nice-full-24":function(e){return"".concat(e.dayName()," ").concat(ae(e.monthName())," ").concat(Y.ordinal(e.date()),", ").concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))}},ie={"day-name":"day","month-name":"month","iso 8601":"iso","time-h24":"time-24","time-12":"time","time-h12":"time",tz:"timezone","day-num":"day-number","month-num":"month-number","month-iso":"iso-month","year-iso":"iso-year","nice-short":"nice","nice-short-24":"nice-24",mdy:"numeric-us",dmy:"numeric-uk",ymd:"numeric","yyyy/mm/dd":"numeric","mm/dd/yyyy":"numeric-us","dd/mm/yyyy":"numeric-us","little-endian":"numeric-uk","big-endian":"numeric","day-nice":"nice-day"};Object.keys(ie).forEach((function(e){return oe[e]=oe[ie[e]]}));var ue=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!0!==e.isValid())return"";if(oe.hasOwnProperty(n)){var t=oe[n](e)||"";return"json"!==n&&(t=String(t),"ampm"!==n&&(t=ae(t))),t}if(-1!==n.indexOf("{")){var r=/\{(.+?)\}/g;return n=n.replace(r,(function(n,t){if(t=t.toLowerCase().trim(),oe.hasOwnProperty(t)){var r=String(oe[t](e));return"ampm"!==t?ae(r):r}return""}))}return e.format("iso-short")},se=Y.zeroPad,ce=Y.formatTimezone,le={G:function(e){return e.era()},GG:function(e){return e.era()},GGG:function(e){return e.era()},GGGG:function(e){return"AD"===e.era()?"Anno Domini":"Before Christ"},y:function(e){return e.year()},yy:function(e){return parseInt(String(e.year()).substr(2,4),10)},yyy:function(e){return e.year()},yyyy:function(e){return e.year()},yyyyy:function(e){return"0"+e.year()},Q:function(e){return e.quarter()},QQ:function(e){return e.quarter()},QQQ:function(e){return e.quarter()},QQQQ:function(e){return e.quarter()},M:function(e){return e.month()+1},MM:function(e){return se(e.month()+1)},MMM:function(e){return e.format("month-short")},MMMM:function(e){return e.format("month")},w:function(e){return e.week()},ww:function(e){return se(e.week())},d:function(e){return e.date()},dd:function(e){return se(e.date())},D:function(e){return e.dayOfYear()},DD:function(e){return se(e.dayOfYear())},DDD:function(e){return se(e.dayOfYear(),3)},E:function(e){return e.format("day-short")},EE:function(e){return e.format("day-short")},EEE:function(e){return e.format("day-short")},EEEE:function(e){return e.format("day")},EEEEE:function(e){return e.format("day")[0]},e:function(e){return e.day()},ee:function(e){return e.day()},eee:function(e){return e.format("day-short")},eeee:function(e){return e.format("day")},eeeee:function(e){return e.format("day")[0]},a:function(e){return e.ampm().toUpperCase()},aa:function(e){return e.ampm().toUpperCase()},aaa:function(e){return e.ampm().toUpperCase()},aaaa:function(e){return e.ampm().toUpperCase()},h:function(e){return e.h12()},hh:function(e){return se(e.h12())},H:function(e){return e.hour()},HH:function(e){return se(e.hour())},m:function(e){return e.minute()},mm:function(e){return se(e.minute())},s:function(e){return e.second()},ss:function(e){return se(e.second())},A:function(e){return e.epoch-e.startOf("day").epoch},z:function(e){return e.timezone().name},zz:function(e){return e.timezone().name},zzz:function(e){return e.timezone().name},zzzz:function(e){return e.timezone().name},Z:function(e){return ce(e.timezone().current.offset)},ZZ:function(e){return ce(e.timezone().current.offset)},ZZZ:function(e){return ce(e.timezone().current.offset)},ZZZZ:function(e){return ce(e.timezone().current.offset,":")}},he=function(e,n,t){for(var r=e,a=n,o=0;o.5&&(e=e.add(1,n)),e=e.startOf(n)):!1===e.silent&&console.warn("no known unit '"+n+"'"),e},ve=function(e,n,t){var r=0;for(e=e.clone();e.isBefore(n);)e=e.add(1,t),r+=1;return e.isAfter(n,t)&&(r-=1),r},ge=function(e,n,t){return e.isBefore(n)?ve(e,n,t):-1*ve(n,e,t)},be=function(e,n){var t=n.epoch-e.epoch,r={milliseconds:t,seconds:parseInt(t/1e3,10)};r.minutes=parseInt(r.seconds/60,10),r.hours=parseInt(r.minutes/60,10);var a=e.clone();return r.years=function(e,n){var t=n.year()-e.year();return(e=e.year(n.year())).isAfter(n)&&(t-=1),t}(a,n),a=e.add(r.years,"year"),r.months=12*r.years,a=e.add(r.months,"month"),r.months+=ge(a,n,"month"),r.weeks=52*r.years,a=e.add(r.weeks,"week"),r.weeks+=ge(a,n,"week"),r.days=7*r.weeks,a=e.add(r.days,"day"),r.days+=ge(a,n,"day"),r},we=function(e,n,t){n=Y.beADate(n,e);var r=!1;if(e.isAfter(n)){var a=e;e=n,n=a,r=!0}var o=be(e,n);return r&&(o=function(e){return Object.keys(e).forEach((function(n){e[n]*=-1})),e}(o)),t?(t=Y.normalize(t),!0!==/s$/.test(t)&&(t+="s"),"dates"===t&&(t="days"),o[t]):o},ke={months:{almost:10,over:4},days:{almost:25,over:10},hours:{almost:20,over:8},minutes:{almost:50,over:20},seconds:{almost:50,over:20}};function _e(e,n){return 1===e&&(n=n.slice(0,-1)),e+" "+n}var ze=function(e,n){var t,r,a,o=function(e,n){var t=e.isBefore(n),r=t?n:e,a=t?e:n;a=a.clone();var o={years:0,months:0,days:0,hours:0,minutes:0,seconds:0};return Object.keys(o).forEach((function(e){if(!a.isSame(r,e)){var n=a.diff(r,e);a=a.add(n,e),o[e]=n}})),t&&Object.keys(o).forEach((function(e){0!==o[e]&&(o[e]*=-1)})),o}(e,n=Y.beADate(n,e));if(!0===Object.keys(o).every((function(e){return!o[e]})))return{diff:o,rounded:"now",qualified:"now",precise:"now"};var i=[];return Object.keys(o).forEach((function(e,n,a){var u=Math.abs(o[e]);if(0!==u){var s=_e(u,e);if(i.push(s),!t){if(t=r=s,n>4)return;var c=a[n+1],l=Math.abs(o[c]);l>ke[c].almost?(t=_e(u+1,e),r="almost "+t):l>ke[c].over&&(r="over "+s)}}})),a=i.splice(0,2).join(", "),!0===e.isAfter(n)?(t+=" ago",r+=" ago",a+=" ago"):(t="in "+t,r="in "+r,a="in "+a),{diff:o,rounded:t,qualified:r,precise:a}},je={north:[["spring",2,1],["summer",5,1],["fall",8,1],["autumn",8,1],["winter",11,1]],south:[["fall",2,1],["autumn",2,1],["winter",5,1],["spring",8,1],["summer",11,1]]},Oe=[null,[0,1],[3,1],[6,1],[9,1]],De={minute:function(e){return M(e,{second:0,millisecond:0}),e},quarterhour:function(e){var n=e.minutes();return e=n>=45?e.minutes(45):n>=30?e.minutes(30):n>=15?e.minutes(15):e.minutes(0),M(e,{second:0,millisecond:0}),e},hour:function(e){return M(e,{minute:0,second:0,millisecond:0}),e},day:function(e){return M(e,{hour:0,minute:0,second:0,millisecond:0}),e},week:function(e){var n=e.clone();return(e=e.day(e._weekStart)).isAfter(n)&&(e=e.subtract(1,"week")),M(e,{hour:0,minute:0,second:0,millisecond:0}),e},month:function(e){return M(e,{date:1,hour:0,minute:0,second:0,millisecond:0}),e},quarter:function(e){var n=e.quarter();return Oe[n]&&M(e,{month:Oe[n][0],date:Oe[n][1],hour:0,minute:0,second:0,millisecond:0}),e},season:function(e){var n=e.season(),t="north";"South"===e.hemisphere()&&(t="south");for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;if(!n||!t)return[];if(n=Y.normalize(n),t=e.clone().set(t),e.isAfter(t)){var r=e;e=t,t=r}var a=e.clone();Me(n)?(a=a.next(n),n="week"):a=a.next(n);for(var o=[];a.isBefore(t);)o.push(a),a=a.add(1,n);return o},Ie=function(e){var n=e.timezones,t=e.tz;if(!1===n.hasOwnProperty(t)&&(t=j(e.tz,n)),null===t)return!1===e.silent&&console.warn("Warn: could not find given or local timezone - '"+e.tz+"'"),{current:{epochShift:0}};var r,a,o=n[t],u={name:(r=t,r=(r=(r=r[0].toUpperCase()+r.substr(1)).replace(/\/gmt/,"/GMT")).replace(/[\/_]([a-z])/gi,(function(e){return e.toUpperCase()}))),hasDst:Boolean(o.dst),default_offset:o.offset,hemisphere:"s"===o.hem?"South":"North",current:{}};if(u.hasDst){var s=(a=o.dst)?a.split("->"):[];u.change={start:s[0],back:s[1]}}var c=o.offset,l=c;return!0===u.hasDst&&(l="North"===u.hemisphere?c-1:o.offset+1),!1===u.hasDst?(u.current.offset=c,u.current.isDST=!1):!0===i(e.epoch,u.change.start,u.change.back,c,l)?(u.current.offset=c,u.current.isDST="North"===u.hemisphere):(u.current.offset=l,u.current.isDST="South"===u.hemisphere),u},Ce=["century","decade","year","month","date","day","hour","minute","second","millisecond"],Ee={set:function(e,n){var t=this.clone();return t=J(t,e,null),n&&(this.tz=j(n)),t},timezone:function(){return Ie(this)},isDST:function(){return Ie(this).current.isDST},hasDST:function(){return Ie(this).hasDst},offset:function(){return 60*Ie(this).current.offset},hemisphere:function(){return Ie(this).hemisphere},format:function(e){return ue(this,e)},unixFmt:function(e){return fe(this,e)},startOf:function(e){return Pe(this,e)},endOf:function(e){return Se(this,e)},leapYear:function(){var e=this.year();return Y.isLeapYear(e)},progress:function(e){return pe(this,e)},nearest:function(e){return ye(this,e)},diff:function(e,n){return we(this,e,n)},since:function(e){return e||(e=this.clone().set()),ze(this,e)},next:function(e){return this.add(1,e).startOf(e)},last:function(e){return this.subtract(1,e).startOf(e)},isValid:function(){return!(!this.epoch&&0!==this.epoch)&&!isNaN(this.d.getTime())},goto:function(e){var n=this.clone();return n.tz=j(e,n.timezones),n},every:function(e,n){if("object"===t(e)&&"string"==typeof n){var r=n;n=e,e=r}return qe(this,e,n)},isAwake:function(){var e=this.hour();return!(e<8||e>22)},isAsleep:function(){return!this.isAwake()},log:function(){return console.log(""),console.log(ue(this,"nice-short")),this},logYear:function(){return console.log(""),console.log(ue(this,"full-short")),this},json:function(){var e=this;return Ce.reduce((function(n,t){return n[t]=e[t](),n}),{})},debug:function(){var e=this.timezone(),n=this.format("MM")+" "+this.format("date-ordinal")+" "+this.year();return n+="\n - "+this.format("time"),console.log("\n\n",n+"\n - "+e.name+" ("+e.current.offset+")"),this},from:function(e){return(e=this.clone().set(e)).since(this)},fromNow:function(){return this.clone().set(Date.now()).since(this)},weekStart:function(e){if("number"==typeof e)return this._weekStart=e,this;if("string"==typeof e){e=e.toLowerCase().trim();var n=X.short().indexOf(e);-1===n&&(n=X.long().indexOf(e)),-1===n&&(n=1),this._weekStart=n}else console.warn("Spacetime Error: Cannot understand .weekStart() input:",e);return this}};Ee.inDST=Ee.isDST,Ee.round=Ee.nearest,Ee.each=Ee.every;var Te=Ee,Ae=Y.isLeapYear,Ne=function(e){return"string"==typeof e&&(e=parseInt(e,10)),e},$e=["year","month","date","hour","minute","second","millisecond"],xe=function(e,n,t){for(var r=$e.indexOf(t),a=$e.slice(r,$e.length),o=0;o=24?n=24:n<0&&(n=0);var t=e.clone(),r=e.hour()-n,a=r*D.hour;return e.epoch-=a,e.date()!==t.date()&&(e=t.clone(),r>1&&(r-=1),r<1&&(r+=1),a=r*D.hour,e.epoch-=a),M(e,{hour:n}),xe(e,t,"minute"),e.epoch},Ze=function(e,n){var t=n.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);if(!t){if(!(t=n.match(/([0-9]{1,2}) ?(am|pm)/)))return e.epoch;t.splice(2,0,"0"),t.splice(3,0,"")}var r=!1,a=parseInt(t[1],10),o=parseInt(t[2],10);a>12&&(r=!0),!1===r&&("am"===t[4]&&12===a&&(a=0),"pm"===t[4]&&a<12&&(a+=12)),t[3]=t[3]||"",t[3]=t[3].replace(/:/,"");var i=parseInt(t[3],10)||0;return(e=(e=(e=(e=e.hour(a)).minute(o)).second(i)).millisecond(0)).epoch},He=function(e,n){if((n=Ne(n))>28){var t=e.month(),r=x[t];1===t&&29===n&&Ae(e.year())&&(r=29),n>r&&(n=r)}return n<=0&&(n=1),M(e,{date:n}),e.epoch},Qe=function(e,n){"string"==typeof n&&(n=T()[n.toLowerCase()]),(n=Ne(n))>=12&&(n=11),n<=0&&(n=0);var t=e.date();return t>x[n]&&(t=x[n]),M(e,{month:n,date:t}),e.epoch},Ge=function(e,n){return"string"==typeof n&&/^'[0-9]{2}$/.test(n)&&(n=n.replace(/'/,"").trim(),n=(n=Number(n))>30?1900+n:2e3+n),n=Ne(n),M(e,{year:n}),e.epoch},Ue=function(e,n){n=Ne(n);var t=e.clone();return(n-=1)<=0?n=0:n>=365&&(n=364),e=(e=e.startOf("year")).add(n,"day"),xe(e,t,"hour"),e.epoch},Ve={millisecond:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ye(n,e),n}return this.d.getMilliseconds()},second:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Le(n,e),n}return this.d.getSeconds()},minute:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Be(n,e),n}return this.d.getMinutes()},hour:function(e){var n=this.d;if(void 0!==e){var t=this.clone();return t.epoch=Fe(t,e),t}return n.getHours()},hourFloat:function(e){if(void 0!==e){var n=this.clone(),t=e%1;t*=60;var r=parseInt(e,10);return n.epoch=Fe(n,r),n.epoch=Be(n,t),n}var a=this.d,o=a.getHours(),i=a.getMinutes();return o+(i/=60)},hour12:function(e){var n=this.d;if(void 0!==e){var t=this.clone(),r=(e=""+e).match(/^([0-9]+)(am|pm)$/);if(r){var a=parseInt(r[1],10);"pm"===r[2]&&(a+=12),t.epoch=Fe(t,a)}return t}var o=n.getHours();return o>12&&(o-=12),0===o&&(o=12),o},time:function(e){if(void 0!==e){var n=this.clone();return e=e.toLowerCase().trim(),n.epoch=Ze(n,e),n}return"".concat(this.h12(),":").concat(Y.zeroPad(this.minute())).concat(this.ampm())},ampm:function(e){var n="am",t=this.hour();if(t>=12&&(n="pm"),"string"!=typeof e)return n;var r=this.clone();return e=e.toLowerCase().trim(),t>=12&&"am"===e?(t-=12,r.hour(t)):t<12&&"pm"===e?(t+=12,r.hour(t)):r},dayTime:function(e){if(void 0!==e){var n={morning:"7:00am",breakfast:"7:00am",noon:"12:00am",lunch:"12:00pm",afternoon:"2:00pm",evening:"6:00pm",dinner:"6:00pm",night:"11:00pm",midnight:"23:59pm"},t=this.clone();return e=(e=e||"").toLowerCase(),!0===n.hasOwnProperty(e)&&(t=t.time(n[e])),t}var r=this.hour();return r<6?"night":r<12?"morning":r<17?"afternoon":r<22?"evening":"night"},iso:function(e){return void 0!==e?this.set(e):this.format("iso")}},We={date:function(e){if(void 0!==e){var n=this.clone();return(e=parseInt(e,10))&&(n.epoch=He(n,e)),n}return this.d.getDate()},day:function(e){if(void 0===e)return this.d.getDay();var n=this.clone(),t=e;"string"==typeof e&&(e=e.toLowerCase(),X.aliases.hasOwnProperty(e)?t=X.aliases[e]:-1===(t=X.short().indexOf(e))&&(t=X.long().indexOf(e)));var r=this.d.getDay(),a=r-t,o=this.subtract(a,"days");return M(o,{hour:n.hour(),minute:n.minute(),second:n.second()}),o},dayName:function(e){if(void 0===e)return X.long()[this.day()];var n=this.clone();return n=n.day(e)},month:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Qe(n,e),n}return this.d.getMonth()}},Je=function(e){return e=(e=(e=e.minute(0)).second(0)).millisecond(1)},Ke={dayOfYear:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ue(n,e),n}for(var t,r=0,a=this.d.getMonth(),o=1;o<=a;o++)(t=new Date).setDate(1),t.setFullYear(this.d.getFullYear()),t.setHours(1),t.setMinutes(1),t.setMonth(o),t.setHours(-2),r+=t.getDate();return r+this.d.getDate()},week:function(e){if(void 0!==e){var n=this.clone();return n=(n=(n=n.month(0)).date(1)).day("monday"),"december"===(n=Je(n)).monthName()&&n.date()>=28&&(n=n.add(1,"week")),e-=1,n=n.add(e,"weeks")}var t=this.clone();t=(t=t.month(0)).date(1),"december"===(t=(t=Je(t)).day("monday")).monthName()&&t.date()>=28&&(t=t.add(1,"week"));var r=1;1===t.date()&&(r=0),t=t.minus(1,"second");var a=this.epoch;if(t.epoch>a)return 1;var o=0,i=4*this.month();for(t.epoch+=D.week*i,o+=i;o<=52;o++){if(t.epoch>a)return o+r;t=t.add(1,"week")}return 52},monthName:function(e){if(void 0===e)return E()[this.month()];var n=this.clone();return n=n.month(e)},quarter:function(e){if(void 0!==e&&("string"==typeof e&&(e=e.replace(/^q/i,""),e=parseInt(e,10)),Oe[e])){var n=this.clone(),t=Oe[e][0];return n=(n=(n=n.month(t)).date(1)).startOf("day")}for(var r=this.d.getMonth(),a=1;a=je[n][o][1]&&a0&&(n.epoch=Ge(n,-1*t)),"ad"===e&&t<0&&(n.epoch=Ge(n,-1*t)),n}return this.d.getFullYear()<0?"BC":"AD"},decade:function(e){if(void 0!==e){if(!(e=(e=(e=String(e)).replace(/([0-9])'?s$/,"$1")).replace(/([0-9])(th|rd|st|nd)/,"$1")))return console.warn("Spacetime: Invalid decade input"),this;2===e.length&&/[0-9][0-9]/.test(e)&&(e="19"+e);var n=Number(e);return isNaN(n)?this:(n=10*Math.floor(n/10),this.year(n))}return this.startOf("decade").year()},century:function(e){if(void 0!==e){"string"==typeof e&&(e=(e=(e=e.replace(/([0-9])(th|rd|st|nd)/,"$1")).replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i,(function(e,n,t){return t.match(/b\.?c\.?/i)&&(n="-"+n),n}))).replace(/c$/,""));var n=Number(e);return isNaN(e)?(console.warn("Spacetime: Invalid century input"),this):(0===n&&(n=1),n=n>=0?100*(n-1):100*(n+1),this.year(n))}var t=this.startOf("century").year();return(t=Math.floor(t/100))<0?t-1:t+1},millenium:function(e){if(void 0!==e){if("string"==typeof e&&(e=e.replace(/([0-9])(th|rd|st|nd)/,"$1"),e=Number(e),isNaN(e)))return console.warn("Spacetime: Invalid millenium input"),this;e>0&&(e-=1);var n=1e3*e;return 0===n&&(n=1),this.year(n)}var t=Math.floor(this.year()/1e3);return t>=0&&(t+=1),t}},Re=Object.assign({},Ve,We,Ke);Re.milliseconds=Re.millisecond,Re.seconds=Re.second,Re.minutes=Re.minute,Re.hours=Re.hour,Re.hour24=Re.hour,Re.h12=Re.hour12,Re.h24=Re.hour24,Re.days=Re.day;var Xe=function(e){Object.keys(Re).forEach((function(n){e.prototype[n]=Re[n]}))},en=Y.isLeapYear,nn=function(e,n){return 1===e&&en(n)?29:x[e]},tn=function(e,n){if(e.month>0){var t=parseInt(e.month/12,10);e.year=n.year()+t,e.month=e.month%12}else if(e.month<0){var r=Math.floor(Math.abs(e.month)/13,10);r=Math.abs(r)+1,e.year=n.year()-r,e.month=e.month%12,e.month=e.month+12,12===e.month&&(e.month=0)}return e},rn=function(e,n,t){for(var r=n.year(),a=n.month(),o=nn(a,r);t>o;)t-=o,(a+=1)>=12&&(a-=12,r+=1),o=nn(a,r);return e.month=a,e.date=t,e},an=function(e,n,t){e.year=n.year(),e.month=n.month();var r=n.date();for(e.date=r-Math.abs(t);e.date<1;){e.month-=1,e.month<0&&(e.month=11,e.year-=1);var a=nn(e.month,e.year);e.date+=a}return e},on=["millisecond","second","minute","hour","date","month"],un={second:on.slice(0,1),minute:on.slice(0,2),quarterhour:on.slice(0,2),hour:on.slice(0,3),date:on.slice(0,4),month:on.slice(0,4),quarter:on.slice(0,4),season:on.slice(0,4),year:on,decade:on,century:on};un.week=un.hour,un.season=un.date,un.quarter=un.date;var sn={year:!0,quarter:!0,season:!0,month:!0,week:!0,day:!0},cn={month:!0,quarter:!0,season:!0,year:!0},ln=function(e){e.prototype.add=function(e,n){var t=this.clone();if(!n||0===e)return t;var r=this.clone();if("millisecond"===(n=Y.normalize(n)))return t.epoch+=e,t;"fortnight"===n&&(e*=2,n="week"),D[n]?t.epoch+=D[n]*e:"week"===n?t.epoch+=D.day*(7*e):"quarter"===n||"season"===n?t.epoch+=D.month*(3*e):"quarterhour"===n&&(t.epoch+=15*D.minute*e);var a={};if(un[n]&&un[n].forEach((function(e){a[e]=r[e]()})),sn[n]){var o=r.timezone().current.offset-t.timezone().current.offset;t.epoch+=3600*o*1e3}if("month"===n&&(a.month=r.month()+e,a=tn(a,r)),"week"===n){var i=r.date()+7*e;i<=28&&i>1&&(a.date=i)}else if("date"===n){if(e<0)a=an(a,r,e);else{var u=r.date()+e;a=rn(a,r,u)}0!==e&&r.isSame(t,"day")&&(a.date=r.date()+e)}else if("quarter"===n){if(a.month=r.month()+3*e,a.year=r.year(),a.month<0){var s=Math.floor(a.month/12),c=a.month+12*Math.abs(s);a.month=c,a.year+=s}else if(a.month>=12){var l=Math.floor(a.month/12);a.month=a.month%12,a.year+=l}a.date=r.date()}else if("year"===n){var h=r.year()+e,f=t.year();(fh)&&(t.epoch+=D.day)}else"decade"===n?a.year=t.year()+10:"century"===n&&(a.year=t.year()+100);if(cn[n]){var d=x[a.month];a.date=r.date(),a.date>d&&(a.date=d)}return Object.keys(a).length>1&&M(t,a),t},e.prototype.subtract=function(e,n){return this.clone().add(-1*e,n)},e.prototype.minus=e.prototype.subtract,e.prototype.plus=e.prototype.add},hn={millisecond:function(e){return e.epoch},second:function(e){return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second()].join("-")},minute:function(e){return[e.year(),e.month(),e.date(),e.hour(),e.minute()].join("-")},hour:function(e){return[e.year(),e.month(),e.date(),e.hour()].join("-")},day:function(e){return[e.year(),e.month(),e.date()].join("-")},week:function(e){return[e.year(),e.week()].join("-")},month:function(e){return[e.year(),e.month()].join("-")},quarter:function(e){return[e.year(),e.quarter()].join("-")},year:function(e){return e.year()}};hn.date=hn.day;var fn=function(e){e.prototype.isSame=function(n,r){var a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=this;if(!r)return null;if("string"==typeof n&&"object"===t(r)){var i=n;n=r,r=i}return"string"!=typeof n&&"number"!=typeof n||(n=new e(n,this.timezone.name)),r=r.replace(/s$/,""),!0===a&&o.tz!==n.tz&&((n=n.clone()).tz=o.tz),hn[r]?hn[r](o)===hn[r](n):null}},dn=function(e){var n={isAfter:function(e){e=Y.beADate(e,this);var n=Y.getEpoch(e);return null===n?null:this.epoch>n},isBefore:function(e){e=Y.beADate(e,this);var n=Y.getEpoch(e);return null===n?null:this.epoch2&&void 0!==arguments[2]&&arguments[2];e=Y.beADate(e,this),n=Y.beADate(n,this);var r=Y.getEpoch(e);if(null===r)return null;var a=Y.getEpoch(n);return null===a?null:t?this.isBetween(e,n)||this.isEqual(e)||this.isEqual(n):r2&&void 0!==arguments[2]?arguments[2]:{};this.epoch=null,this.tz=j(n,pn),this.silent=t.silent||!0,this.british=t.dmy||t.british,this._weekStart=1,void 0!==t.weekStart&&(this._weekStart=t.weekStart),this._today={},void 0!==t.today&&(this._today=t.today),Object.defineProperty(this,"d",{get:function(){var e=u(this),n=(new Date(this.epoch).getTimezoneOffset()||0)+60*e;n=60*n*1e3;var t=this.epoch+n;return new Date(t)}}),Object.defineProperty(this,"timezones",{get:function(){return pn},set:function(e){return pn=e,e}});var r=J(this,e,n);this.epoch=r.epoch};Object.keys(Te).forEach((function(e){yn.prototype[e]=Te[e]})),yn.prototype.clone=function(){return new yn(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart,today:this._today})},yn.prototype.toLocalDate=function(){return new Date(this.epoch)},Xe(yn),ln(yn),fn(yn),dn(yn),mn(yn);var vn=yn,gn=function(e,n){var t=new vn(null),r=new vn(null);t=t.time(e),r=n?r.time(n):t.add(59,"minutes");var a=t.hour(),o=r.hour();return Object.keys(t.timezones).filter((function(e){if(-1===e.indexOf("/"))return!1;var n=new vn(null,e),i=n.hour();return i>=a&&i<=o&&(!(i===a&&n.minute()r.minute()))}))},bn=function(e,n,t){return new vn(e,n,t)},wn=function(e){var n=e._today||{};return Object.keys(n).forEach((function(t){e=e[t](n[t])})),e};bn.now=function(e,n){var t=new vn((new Date).getTime(),e,n);return t=wn(t)},bn.today=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).startOf("day")},bn.tomorrow=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).add(1,"day").startOf("day")},bn.yesterday=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).subtract(1,"day").startOf("day")},bn.extend=function(e){return Object.keys(e).forEach((function(n){vn.prototype[n]=e[n]})),this},bn.timezones=function(){return(new vn).timezones},bn.max=function(e,n){var t=new vn(null,e,n);return t.epoch=864e13,t},bn.min=function(e,n){var t=new vn(null,e,n);return t.epoch=-864e13,t},bn.whereIts=gn,bn.version="6.14.0",bn.plugin=bn.extend;var kn=bn;var _n=function(e){return e&&e.default||e}(Object.freeze({__proto__:null,default:kn}));var zn=function(e){let n=e.sentence();if(!n)return null;let t=n.text()||"",r=t.match(/\(.*\)/);if(!r||!r[0])return null;t=r[0]||"",t=t.trim(),t=t.replace(/^\(/,""),t=t.replace(/\)$/,"");let a=t.split(/ – /);if(a=a.filter((e=>e)),a[0]&&a[1]&&2===a.length)return{birth:a[0],death:a[1]};if(a[0]){let e=a[0].replace(/^(born|ne) (c\.)?/,"");if(_n(e).isValid())return{birth:e}}return null};var jn=function(e){let n=e.categories();for(let e=0;e1e3)return e}}return null};var On=function(e){if(!e)return null;if((e=(e=e.replace(/\(.*\)/,"")).trim()).match(/^[0-9]{4}$/))return{year:parseInt(e,10)};let n=_n(e);return{year:n.year(),month:n.month(),date:n.date()}};var Dn=function(e){let t=n(e,"birth_date");if(t)return On(t);if(t=zn(e),t&&t.birth)return On(t.birth);let r=jn(e);return r?{year:r}:null};var Pn=function(e){let t=n(e,"birth_place");return t||null};const Sn={"Living people":!0,"Year of birth missing (living people)":!0,"Date of birth missing (living people)":!0,"Place of birth missing (living people)":!0,"Active politicians":!0,"Biography articles of living people":!0},Mn={"Dead people":!0,"Date of death missing":!0,"Date of death unknown":!0,"Place of death missing":!0,"Place of death unknown":!0,"Year of death missing":!0,"Year of death unknown":!0,"Year of death uncertain":!0,"Recent deaths":!0,"People declared dead in absentia":!0,"Politicians elected posthumously":!0,"People who died in office":!0,"Assassinated heads of state‎ ":!0,"Assassinated heads of government":!0,"Assassinated mayors":!0,"People who died in Nazi concentration camps":!0,"People executed in Nazi concentration camps":!0,"Politicians who died in Nazi concentration camps":!0,"People who have received posthumous pardons":!0,"People lost at sea‎":!0,"Deaths due to shipwreck":!0,"People who died at sea":!0,"Unsolved deaths‎":!0,"Deaths by horse-riding accident‎":!0,"Deaths from falls‎":!0,"Deaths by poisoning‎‎":!0,"Deaths from cerebrovascular disease‎":!0,"Deaths from asphyxiation‎":!0,"Deaths from sepsis‎":!0,"Deaths from pneumonia‎":!0,"Deaths from dysentery‎‎":!0,"Deaths by drowning‎":!0};var qn=function(e){let n=e.categories();return!!n.find((e=>Sn.hasOwnProperty(e)))||!n.find((e=>Mn.hasOwnProperty(e)))&&null};const In={blp:!0,"blp unsourced":!0,"blp unsourced section":!0,"blp primary sources":!0,"blp self-published":!0,"blp sources":!0,"blp sources section":!0,"blp imdb-only refimprove":!0,"blp imdb refimprove":!0,"blp no footnotes":!0,"blp more footnotes":!0,"blp one source":!0,"active politician":!0,activepol:!0,"current person":!0},Cn={"recent death":!0,"recent death presumed":!0,"recent death confirmed":!0,obituary:!0,elegy:!0,eulogy:!0,panegyric:!0,memorial:!0};var En=function(e){let n=e.templates();for(let e=0;e1e3)return e}}return null};var $n=function(e){let t=n(e,"death_date");if(t)return On(t);if(t=zn(e),t&&t.death)return On(t.death);let r=Nn(e);return r?{year:r}:null};var xn=function(e){let t=n(e,"death_place");return t||null};var Yn=function(e){let t=n(e,"nationality");return t||null};return function(e){e.Doc.prototype.birthDate=function(){return Dn(this)},e.Doc.prototype.birthPlace=function(){return Pn(this)},e.Doc.prototype.isAlive=function(){return An(this)},e.Doc.prototype.deathDate=function(){return $n(this)},e.Doc.prototype.deathPlace=function(){return xn(this)},e.Doc.prototype.nationality=function(){return Yn(this)}}})); +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfPerson=n()}(this,(function(){"use strict";var e={actor:!0,adult_biography:!0,afl_biography:!0,alpine_ski_racer:!0,archbishop:!0,architect:!0,artist:!0,athlete:!0,baseball_biography:!0,basketball_biography:!0,boxer:!0,canadianmp:!0,cfl_player:!0,chef:!0,chess_player:!0,christian_leader:!0,college_coach:!0,college_football_player:!0,comedian:!0,comics_creator:!0,cricketer:!0,criminal:!0,cyclist:!0,economist:!0,engineer:!0,fashion_designer:!0,field_hockey_player:!0,figure_skater:!0,football_biography:!0,gaa_player:!0,golfer:!0,governor:!0,gridiron_football_person:!0,gymnast:!0,handball_biography:!0,hindu_leader:!0,horseracing_personality:!0,ice_hockey_player:!0,indian_politician:!0,judge:!0,lacrosse_player:!0,martial_artist:!0,mass_murderer:!0,medical_person:!0,military_person:!0,minister:!0,mlb_player:!0,model:!0,monarch:!0,mp:!0,nascar_driver:!0,nba_biography:!0,nfl_biography:!0,nfl_player:!0,officeholder:!0,person:!0,philosopher:!0,police_officer:!0,politician:!0,"politician_(general)":!0,presenter:!0,president:!0,professional_wrestler:!0,racing_driver:!0,religious_biography:!0,roman_emperor:!0,royalty:!0,rugby_biography:!0,rugby_league_biography:!0,saint:!0,scholar:!0,scientist:!0,skier:!0,sportsperson:!0,squash_player:!0,state_representative:!0,state_senator:!0,swimmer:!0,tennis_biography:!0,volleyball_biography:!0,volleyball_player:!0,wrc_driver:!0,writer:!0,"hockey team player":!0,"snooker player":!0,bishop:!0,"football biography":!0,"military person":!0,"baseball biography":!0,"ice hockey player":!0,"nfl player":!0,"christian leader":!0,congressman:!0,"basketball biography":!0,"comics creator":!0,"professional wrestler":!0,"college coach":!0,"tennis biography":!0,"afl biography":!0,"nfl biography":!0,"rugby biography":!0,"rugby league biography":!0,"prime minister":!0,"nba biography":!0,"figure skater":!0,"f1 driver":!0,"gridiron football person":!0,"indian politician":!0,"racing driver":!0,"martial artist":!0,"chinese-language singer and actor":!0,astronaut:!0,senator:!0,"nascar driver":!0,"adult biography":!0,"state representative":!0,"state senator":!0,"coa wide":!0,"religious biography":!0,"chess player":!0,"pageant titleholder":!0,"gaa player":!0,"us cabinet official":!0};var n=function(n,t){let r=n.infoboxes();for(let n=0;ne.length)&&(n=e.length);for(var t=0,r=new Array(n);t=u&&e");return!0===i(e.epoch,a[0],a[1],t,r)?t:r},s=["africa","america","asia","atlantic","australia","brazil","canada","chile","europe","indian","mexico","pacific","antarctica","etc"];var c,l=(c=Object.freeze({__proto__:null,default:{"9|s":"2/dili,2/jayapura","9|n":"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau","9.5|s|04/04:03->10/03:02":"4/adelaide,4/broken_hill,4/south,4/yancowinna","9.5|s":"4/darwin,4/north","8|s|03/08:01->10/04:00":"12/casey","8|s":"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west","8|n":"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator","8.75|s":"4/eucla","7|s":"12/davis,2/jakarta,9/christmas","7|n":"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh","6|s":"12/vostok","6|n":"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu","6.5|n":"2/rangoon,9/cocos,2/yangon","5|s":"12/mawson,9/kerguelen","5|n":"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad","5.75|n":"2/katmandu,2/kathmandu","5.5|n":"2/calcutta,2/colombo,2/kolkata","4|s":"9/reunion","4|n":"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius","4.5|n|03/22:00->09/21:24":"2/tehran","4.5|n":"2/kabul","3|s":"12/syowa,9/antananarivo","3|n|03/28:03->10/31:04":"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia","3|n|03/28:02->10/31:03":"8/chisinau,8/tiraspol","3|n|03/28:00->10/30:24":"2/beirut","3|n|03/27:00->10/30:01":"2/gaza,2/hebron","3|n|03/26:02->10/31:02":"2/jerusalem,2/tel_aviv","3|n|03/26:00->10/29:01":"2/amman","3|n|03/26:00->10/28:24":"2/damascus","3|n":"0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul","2|s|03/28:02->10/31:02":"12/troll","2|s":"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane","2|n|03/28:02->10/31:03":"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen","2|n":"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad","1|s":"0/brazzaville,0/kinshasa,0/luanda,0/windhoek","1|n|04/11:03->05/16:02":"0/casablanca,0/el_aaiun","1|n|03/28:01->10/31:02":"3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast","1|n":"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis","14|n":"11/kiritimati","13|s|04/04:04->09/26:03":"11/apia","13|s|01/15:02->11/05:03":"11/tongatapu","13|n":"11/enderbury,11/fakaofo","12|s|04/04:03->09/26:02":"12/mcmurdo,11/auckland,12/south_pole","12|s|01/17:03->11/14:02":"11/fiji","12|n":"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis","12.75|s|04/04:03->04/04:02":"11/chatham","11|s|04/04:03->10/03:02":"12/macquarie","11|s":"11/bougainville","11|n":"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei","11.5|n|04/04:03->10/03:02":"11/norfolk","10|s|04/04:03->10/03:02":"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria","10|s":"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland","10|n":"2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap","10.5|s|04/04:01->10/03:02":"4/lord_howe,4/lhi","0|n|03/28:00->10/31:01":"1/scoresbysund,3/azores","0|n":"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu","-9|n|03/14:02->11/07:02":"1/adak,1/atka,us/aleutian","-9|n":"11/gambier","-9.5|n":"11/marquesas","-8|n|03/14:02->11/07:02":"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska","-8|n":"11/pitcairn","-7|n|03/14:02->11/07:02":"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific","-7|n|03/08:02->11/01:01":"1/dawson,1/whitehorse,6/yukon","-7|n":"1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona","-6|s|04/03:22->09/04:22":"11/easter,7/easterisland","-6|n|04/04:02->10/31:02":"1/chihuahua,1/mazatlan,10/bajasur","-6|n|03/14:02->11/07:02":"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain","-6|n":"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan","-5|s":"1/lima,1/rio_branco,1/porto_acre,5/acre","-5|n|04/04:02->10/31:02":"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general","-5|n|03/14:02->11/07:02":"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke","-5|n|03/12:03->11/05:01":"1/north_dakota","-5|n":"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan","-4|s|05/13:23->08/13:01":"12/palmer","-4|s|04/03:24->09/05:00":"1/santiago,7/continental","-4|s|03/27:24->10/03:00":"1/asuncion","-4|s|02/16:24->11/03:00":"1/campo_grande,1/cuiaba","-4|s":"1/la_paz,1/manaus,5/west","-4|n|03/14:02->11/07:02":"1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan","-4|n|03/14:00->11/07:01":"1/havana","-4|n|03/12:03->11/05:01":"1/indiana,1/kentucky","-4|n":"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin","-3|s":"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east","-3|n|03/14:02->11/07:02":"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic","-3|n":"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem","-2|n|03/27:22->10/30:23":"1/godthab,1/nuuk","-2|n|03/14:02->11/07:02":"1/miquelon","-2|n":"1/noronha,3/south_georgia,5/denoronha","-2.5|n|03/14:02->11/07:02":"1/st_johns,6/newfoundland","-1|n":"3/cape_verde","-11|n":"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa","-10|n":"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii"}}))&&c.default||c,h={};Object.keys(l).forEach((function(e){var n=e.split("|"),t={offset:Number(n[0]),hem:n[1]};n[2]&&(t.dst=n[2]),l[e].split(",").forEach((function(e){e=e.replace(/(^[0-9]+)\//,(function(e,n){return n=Number(n),s[n]+"/"})),h[e]=t}))})),h.utc={offset:0,hem:"n"};for(var f=-14;f<=14;f+=.5){var d=f;d>0&&(d="+"+d);var m="etc/gmt"+d;h[m]={offset:-1*f,hem:"n"},h[m="utc/gmt"+d]={offset:-1*f,hem:"n"}}var p=h,y=/(\-?[0-9]+)h(rs)?/i,v=/(\-?[0-9]+)/,g=/utc([\-+]?[0-9]+)/i,b=/gmt([\-+]?[0-9]+)/i,w=function(e){return(e=Number(e))>=-13&&e<=13?"etc/gmt"+(e=((e*=-1)>0?"+":"")+e):null},k=function(e){var n=e.match(y);if(null!==n)return w(n[1]);if(null!==(n=e.match(g)))return w(n[1]);if(null!==(n=e.match(b))){var t=-1*Number(n[1]);return w(t)}return null!==(n=e.match(v))?w(n[1]):null},_=function(){var e=function(){if("undefined"==typeof Intl||void 0===Intl.DateTimeFormat)return null;var e=Intl.DateTimeFormat();if(void 0===e||void 0===e.resolvedOptions)return null;var n=e.resolvedOptions().timeZone;return n?n.toLowerCase():null}();return null===e?"utc":e}(),z=Object.keys(p).reduce((function(e,n){var t=n.split("/")[1]||"";return e[t=t.replace(/_/g," ")]=n,e}),{}),j=function(e,n){if(!e)return _;"string"!=typeof e&&console.error("Timezone must be a string - recieved: '",e,"'\n");var t=e.trim();if(t=t.toLowerCase(),!0===n.hasOwnProperty(t))return t;if(t=function(e){return(e=(e=(e=(e=(e=e.replace(/ time/g,"")).replace(/ (standard|daylight|summer)/g,"")).replace(/\b(east|west|north|south)ern/g,"$1")).replace(/\b(africa|america|australia)n/g,"$1")).replace(/\beuropean/g,"europe")).replace(/\islands/g,"island")}(t),!0===n.hasOwnProperty(t))return t;if(!0===z.hasOwnProperty(t))return z[t];if(!0===/[0-9]/.test(t)){var r=k(t);if(r)return r}throw new Error("Spacetime: Cannot find timezone named: '"+e+"'. Please enter an IANA timezone id.")},O={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};O.date=O.day,O.month=25488e5,O.week=6048e5,O.year=3154e7,Object.keys(O).forEach((function(e){O[e+"s"]=O[e]}));var D=O,P=function(e,n,t,r,a){var o=e.d[t]();if(o!==n){var i=null===a?null:e.d[a](),u=e.epoch,s=n-o;e.epoch+=D[r]*s,"day"===r&&Math.abs(s)>28&&n<28&&(e.epoch+=D.hour),null!==a&&i!==e.d[a]()&&(e.epoch=u);for(var c=D[r]/2;e.d[t]()n;)e.epoch-=c;null!==a&&i!==e.d[a]()&&(e.epoch=u)}},S={year:{valid:function(e){return e>-4e3&&e<4e3},walkTo:function(e,n){return P(e,n,"getFullYear","year",null)}},month:{valid:function(e){return e>=0&&e<=11},walkTo:function(e,n){var t=e.d,r=t.getMonth(),a=e.epoch,o=t.getFullYear();if(r!==n){var i=n-r;for(e.epoch+=D.day*(28*i),o!==e.d.getFullYear()&&(e.epoch=a);e.d.getMonth()n;)e.epoch-=D.day}}},date:{valid:function(e){return e>0&&e<=31},walkTo:function(e,n){return P(e,n,"getDate","day","getMonth")}},hour:{valid:function(e){return e>=0&&e<24},walkTo:function(e,n){return P(e,n,"getHours","hour","getDate")}},minute:{valid:function(e){return e>=0&&e<60},walkTo:function(e,n){return P(e,n,"getMinutes","minute","getHours")}},second:{valid:function(e){return e>=0&&e<60},walkTo:function(e,n){e.epoch=e.seconds(n).epoch}},millisecond:{valid:function(e){return e>=0&&e<1e3},walkTo:function(e,n){e.epoch=e.milliseconds(n).epoch}}},M=function(e,n){for(var t=Object.keys(S),r=e.clone(),a=0;a100&&(t/=100),(t*=-1)>=0&&(t="+"+t);var r="etc/gmt"+t;return e.timezones[r]&&(e.tz=r),e},$=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=(n=n.replace(/^\s+/,"").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/);if(null!==t){var r=Number(t[1]);if(r<0||r>24)return e.startOf("day");var a=Number(t[2]);if(t[2].length<2||a<0||a>59)return e.startOf("day");t[4]>999&&(t[4]=parseInt("".concat(t[4]).substring(0,3),10)),e=(e=(e=(e=e.hour(r)).minute(a)).seconds(t[3]||0)).millisecond(t[4]||0);var o=n.match(/[\b0-9](am|pm)\b/);return null!==o&&o[1]&&(e=e.ampm(o[1])),e}if(null!==(t=n.match(/([0-9]+) ?(am|pm)/))&&t[1]){var i=Number(t[1]);return i>12||i<1?e.startOf("day"):e=(e=(e=e.hour(t[1]||0)).ampm(t[2])).startOf("hour")}return e=e.startOf("day")},x=[31,28,31,30,31,30,31,31,30,31,30,31],Y=function(e,n){return e(n={exports:{}},n.exports),n.exports}((function(e,n){n.isLeapYear=function(e){return e%4==0&&e%100!=0||e%400==0},n.isDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.valueOf())},n.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},n.isObject=function(e){return"[object Object]"===Object.prototype.toString.call(e)},n.isBoolean=function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},n.zeroPad=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,t="0";return(e+="").length>=n?e:new Array(n-e.length+1).join(t)+e},n.titleCase=function(e){return e?e[0].toUpperCase()+e.substr(1):""},n.ordinal=function(e){var n=e%10,t=e%100;return 1===n&&11!==t?e+"st":2===n&&12!==t?e+"nd":3===n&&13!==t?e+"rd":e+"th"},n.toCardinal=function(e){return e=(e=String(e)).replace(/([0-9])(st|nd|rd|th)$/i,"$1"),parseInt(e,10)},n.normalize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return"day"===(e=(e=(e=(e=e.toLowerCase().trim()).replace(/ies$/,"y")).replace(/s$/,"")).replace(/-/g,""))||"days"===e?"date":"min"===e||"mins"===e?"minute":e},n.getEpoch=function(e){return"number"==typeof e?e:n.isDate(e)?e.getTime():e.epoch?e.epoch:null},n.beADate=function(e,t){return!1===n.isObject(e)?t.clone().set(e):e},n.formatTimezone=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=e>0?"+":"-",a=Math.abs(e),o=n.zeroPad(parseInt(""+a,10)),i=n.zeroPad(a%1*60);return"".concat(r).concat(o).concat(t).concat(i)}}));Y.isLeapYear,Y.isDate,Y.isArray,Y.isObject,Y.isBoolean,Y.zeroPad,Y.titleCase,Y.ordinal,Y.toCardinal,Y.normalize,Y.getEpoch,Y.beADate,Y.formatTimezone;var L=Y.isLeapYear,B=function(e){if(!0!==x.hasOwnProperty(e.month))return!1;if(1===e.month)return!!(L(e.year)&&e.date<=29)||e.date<=28;var n=x[e.month]||0;return e.date<=n},F=T(),Z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,t=parseInt(e.trim(),10);return!t&&n&&(t=n.year),t=t||(new Date).getFullYear()},H=[{reg:/^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i,parse:function(e,n,t,r){var a=parseInt(n[2],10)-1,o={year:n[1],month:a,date:n[3]};return!1===B(o)?(e.epoch=null,e):(N(e,n[5]),M(e,o),e=$(e,n[4]))}},{reg:/^([0-9]{4})[\-\/.]([0-9]{1,2})[\-\/.]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t={year:n[1],month:parseInt(n[2],10)-1,date:parseInt(n[3],10)};return t.month>=12&&(t.date=parseInt(n[2],10),t.month=parseInt(n[3],10)-1),!1===B(t)?(e.epoch=null,e):(M(e,t),e=$(e,n[4]))}},{reg:/^([0-9]{1,2})[\-\/.]([0-9]{1,2})[\-\/.]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t=parseInt(n[1],10)-1,r=parseInt(n[2],10);(e.british||t>=12)&&(r=parseInt(n[1],10),t=parseInt(n[2],10)-1);var a={year:Z(n[3],e._today)||(new Date).getFullYear(),month:t,date:r};return!1===B(a)?(e.epoch=null,e):(M(e,a),e=$(e,n[4]))}},{reg:/^([0-9]{4})[\-\/]([0-9]{2})$/i,parse:function(e,n,t,r){var a=parseInt(n[2],10)-1,o={year:n[1],month:a,date:1};return!1===B(o)?(e.epoch=null,e):(N(e,n[5]),M(e,o),e=$(e,n[4]))}},{reg:/^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i,parse:function(e,n){var t=F[n[2].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[1]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+)[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[2]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[2]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[2],e._today),month:t,date:e._today.date||1};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t=F[n[2].toLowerCase()];if(!t)return null;var r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[1])};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^(q[0-9])( of)?( [0-9]{4})?/i,parse:function(e,n){var t=n[1]||"";e=e.quarter(t);var r=n[3]||"";return r&&(r=r.trim(),e=e.year(r)),e}},{reg:/^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,parse:function(e,n){var t=n[1]||"";e=e.season(t);var r=n[3]||"";return r&&(r=r.trim(),e=e.year(r)),e}},{reg:/^[0-9,]+ ?b\.?c\.?$/i,parse:function(e,n){var t=n[0]||"";t=(t=t.replace(/^([0-9,]+) ?b\.?c\.?$/i,"-$1")).replace(/,/g,"");var r=parseInt(t.trim(),10),a=new Date,o={year:r,month:a.getMonth(),date:a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}},{reg:/^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i,parse:function(e,n){var t=n[0]||"";t=t.replace(/,/g,"");var r=parseInt(t.trim(),10),a=new Date,o={year:r,month:a.getMonth(),date:a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}},{reg:/^[0-9]{4}( ?a\.?d\.?)?$/i,parse:function(e,n){var t=e._today,r=Z(n[0],t),a=new Date;t.month&&!t.date&&(t.date=1);var o={year:r,month:t.month||a.getMonth(),date:t.date||a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}}],Q=function(e){return e.epoch=Date.now(),Object.keys(e._today||{}).forEach((function(n){"function"==typeof e[n]&&(e=e[n](e._today[n]))})),e},G={now:function(e){return Q(e)},today:function(e){return Q(e)},tonight:function(e){return e=(e=Q(e)).hour(18)},tomorrow:function(e){return e=(e=(e=Q(e)).add(1,"day")).startOf("day")},yesterday:function(e){return e=(e=(e=Q(e)).subtract(1,"day")).startOf("day")},christmas:function(e){var n=Q(e).year();return e=e.set([n,11,25,18,0,0])},"new years":function(e){var n=Q(e).year();return e=e.set([n,11,31,18,0,0])}};G["new years eve"]=G["new years"];var U=G,V={year:(new Date).getFullYear(),month:0,date:1},W=function(e,n,t){if(0===Object.keys(n).length)return e;n=Object.assign({},V,t,n);for(var r=Object.keys(n),a=0;a0&&n<25e8&&!1===e.silent&&(console.warn(" - Warning: You are setting the date to January 1970."),console.warn(" - did input seconds instead of milliseconds?")),e.epoch=n,e;if(e.epoch=Date.now(),e._today&&Y.isObject(e._today)&&Object.keys(e._today).length>0){var a=W(e,r,V);a.isValid()&&(e.epoch=a.epoch)}if(null==n||""===n)return e;if(!0===Y.isDate(n))return e.epoch=n.getTime(),e;if(!0===Y.isArray(n))return e=function(e,n,t){if(0===n.length)return e;for(var r=["year","month","date","hour","minute","second","millisecond"],a=0;a0?n:(n=Math.abs(n),n+" BC")},"year-short":function(e){var n=e.year();return n>0?"'".concat(String(e.year()).substr(2,4)):(n=Math.abs(n))+" BC"},"iso-year":function(e){var n=e.year(),t=n<0,r=Y.zeroPad(Math.abs(n),4);return t&&(r="-"+(r=Y.zeroPad(r,6))),r},time:function(e){return e.time()},"time-24":function(e){return"".concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))},hour:function(e){return e.hour12()},"hour-pad":function(e){return Y.zeroPad(e.hour12())},"hour-24":function(e){return e.hour24()},"hour-24-pad":function(e){return Y.zeroPad(e.hour24())},minute:function(e){return e.minute()},"minute-pad":function(e){return Y.zeroPad(e.minute())},second:function(e){return e.second()},"second-pad":function(e){return Y.zeroPad(e.second())},ampm:function(e){return e.ampm()},quarter:function(e){return"Q"+e.quarter()},season:function(e){return e.season()},era:function(e){return e.era()},json:function(e){return e.json()},timezone:function(e){return e.timezone().name},offset:function(e){return re(e)},numeric:function(e){return"".concat(e.year(),"/").concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()))},"numeric-us":function(e){return"".concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()),"/").concat(e.year())},"numeric-uk":function(e){return"".concat(Y.zeroPad(e.date()),"/").concat(Y.zeroPad(e.month()+1),"/").concat(e.year())},"mm/dd":function(e){return"".concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()))},iso:function(e){var n=e.format("iso-year"),t=Y.zeroPad(e.month()+1),r=Y.zeroPad(e.date()),a=Y.zeroPad(e.h24()),o=Y.zeroPad(e.minute()),i=Y.zeroPad(e.second()),u=Y.zeroPad(e.millisecond(),3),s=re(e);return"".concat(n,"-").concat(t,"-").concat(r,"T").concat(a,":").concat(o,":").concat(i,".").concat(u).concat(s)},"iso-short":function(e){var n=Y.zeroPad(e.month()+1),t=Y.zeroPad(e.date());return"".concat(e.year(),"-").concat(n,"-").concat(t)},"iso-utc":function(e){return new Date(e.epoch).toISOString()},nice:function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.time())},"nice-24":function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))},"nice-year":function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.year())},"nice-day":function(e){return"".concat(X.short()[e.day()]," ").concat(ae(C()[e.month()])," ").concat(Y.ordinal(e.date()))},"nice-full":function(e){return"".concat(e.dayName()," ").concat(ae(e.monthName())," ").concat(Y.ordinal(e.date()),", ").concat(e.time())},"nice-full-24":function(e){return"".concat(e.dayName()," ").concat(ae(e.monthName())," ").concat(Y.ordinal(e.date()),", ").concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))}},ie={"day-name":"day","month-name":"month","iso 8601":"iso","time-h24":"time-24","time-12":"time","time-h12":"time",tz:"timezone","day-num":"day-number","month-num":"month-number","month-iso":"iso-month","year-iso":"iso-year","nice-short":"nice","nice-short-24":"nice-24",mdy:"numeric-us",dmy:"numeric-uk",ymd:"numeric","yyyy/mm/dd":"numeric","mm/dd/yyyy":"numeric-us","dd/mm/yyyy":"numeric-us","little-endian":"numeric-uk","big-endian":"numeric","day-nice":"nice-day"};Object.keys(ie).forEach((function(e){return oe[e]=oe[ie[e]]}));var ue=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!0!==e.isValid())return"";if(oe.hasOwnProperty(n)){var t=oe[n](e)||"";return"json"!==n&&(t=String(t),"ampm"!==n&&(t=ae(t))),t}if(-1!==n.indexOf("{")){var r=/\{(.+?)\}/g;return n=n.replace(r,(function(n,t){if(t=t.toLowerCase().trim(),oe.hasOwnProperty(t)){var r=String(oe[t](e));return"ampm"!==t?ae(r):r}return""}))}return e.format("iso-short")},se=Y.zeroPad,ce=Y.formatTimezone,le={G:function(e){return e.era()},GG:function(e){return e.era()},GGG:function(e){return e.era()},GGGG:function(e){return"AD"===e.era()?"Anno Domini":"Before Christ"},y:function(e){return e.year()},yy:function(e){return parseInt(String(e.year()).substr(2,4),10)},yyy:function(e){return e.year()},yyyy:function(e){return e.year()},yyyyy:function(e){return"0"+e.year()},Q:function(e){return e.quarter()},QQ:function(e){return e.quarter()},QQQ:function(e){return e.quarter()},QQQQ:function(e){return e.quarter()},M:function(e){return e.month()+1},MM:function(e){return se(e.month()+1)},MMM:function(e){return e.format("month-short")},MMMM:function(e){return e.format("month")},w:function(e){return e.week()},ww:function(e){return se(e.week())},d:function(e){return e.date()},dd:function(e){return se(e.date())},D:function(e){return e.dayOfYear()},DD:function(e){return se(e.dayOfYear())},DDD:function(e){return se(e.dayOfYear(),3)},E:function(e){return e.format("day-short")},EE:function(e){return e.format("day-short")},EEE:function(e){return e.format("day-short")},EEEE:function(e){return e.format("day")},EEEEE:function(e){return e.format("day")[0]},e:function(e){return e.day()},ee:function(e){return e.day()},eee:function(e){return e.format("day-short")},eeee:function(e){return e.format("day")},eeeee:function(e){return e.format("day")[0]},a:function(e){return e.ampm().toUpperCase()},aa:function(e){return e.ampm().toUpperCase()},aaa:function(e){return e.ampm().toUpperCase()},aaaa:function(e){return e.ampm().toUpperCase()},h:function(e){return e.h12()},hh:function(e){return se(e.h12())},H:function(e){return e.hour()},HH:function(e){return se(e.hour())},m:function(e){return e.minute()},mm:function(e){return se(e.minute())},s:function(e){return e.second()},ss:function(e){return se(e.second())},A:function(e){return e.epoch-e.startOf("day").epoch},z:function(e){return e.timezone().name},zz:function(e){return e.timezone().name},zzz:function(e){return e.timezone().name},zzzz:function(e){return e.timezone().name},Z:function(e){return ce(e.timezone().current.offset)},ZZ:function(e){return ce(e.timezone().current.offset)},ZZZ:function(e){return ce(e.timezone().current.offset)},ZZZZ:function(e){return ce(e.timezone().current.offset,":")}},he=function(e,n,t){for(var r=e,a=n,o=0;o.5&&(e=e.add(1,n)),e=e.startOf(n)):!1===e.silent&&console.warn("no known unit '"+n+"'"),e},ve=function(e,n,t){var r=0;for(e=e.clone();e.isBefore(n);)e=e.add(1,t),r+=1;return e.isAfter(n,t)&&(r-=1),r},ge=function(e,n,t){return e.isBefore(n)?ve(e,n,t):-1*ve(n,e,t)},be=function(e,n){var t=n.epoch-e.epoch,r={milliseconds:t,seconds:parseInt(t/1e3,10)};r.minutes=parseInt(r.seconds/60,10),r.hours=parseInt(r.minutes/60,10);var a=e.clone();return r.years=function(e,n){var t=n.year()-e.year();return(e=e.year(n.year())).isAfter(n)&&(t-=1),t}(a,n),a=e.add(r.years,"year"),r.months=12*r.years,a=e.add(r.months,"month"),r.months+=ge(a,n,"month"),r.weeks=52*r.years,a=e.add(r.weeks,"week"),r.weeks+=ge(a,n,"week"),r.days=7*r.weeks,a=e.add(r.days,"day"),r.days+=ge(a,n,"day"),r},we=function(e,n,t){n=Y.beADate(n,e);var r=!1;if(e.isAfter(n)){var a=e;e=n,n=a,r=!0}var o=be(e,n);return r&&(o=function(e){return Object.keys(e).forEach((function(n){e[n]*=-1})),e}(o)),t?(t=Y.normalize(t),!0!==/s$/.test(t)&&(t+="s"),"dates"===t&&(t="days"),o[t]):o},ke={months:{almost:10,over:4},days:{almost:25,over:10},hours:{almost:20,over:8},minutes:{almost:50,over:20},seconds:{almost:50,over:20}};function _e(e,n){return 1===e&&(n=n.slice(0,-1)),e+" "+n}var ze=function(e,n){var t,r,a,o=function(e,n){var t=e.isBefore(n),r=t?n:e,a=t?e:n;a=a.clone();var o={years:0,months:0,days:0,hours:0,minutes:0,seconds:0};return Object.keys(o).forEach((function(e){if(!a.isSame(r,e)){var n=a.diff(r,e);a=a.add(n,e),o[e]=n}})),t&&Object.keys(o).forEach((function(e){0!==o[e]&&(o[e]*=-1)})),o}(e,n=Y.beADate(n,e));if(!0===Object.keys(o).every((function(e){return!o[e]})))return{diff:o,rounded:"now",qualified:"now",precise:"now"};var i=[];return Object.keys(o).forEach((function(e,n,a){var u=Math.abs(o[e]);if(0!==u){var s=_e(u,e);if(i.push(s),!t){if(t=r=s,n>4)return;var c=a[n+1],l=Math.abs(o[c]);l>ke[c].almost?(t=_e(u+1,e),r="almost "+t):l>ke[c].over&&(r="over "+s)}}})),a=i.splice(0,2).join(", "),!0===e.isAfter(n)?(t+=" ago",r+=" ago",a+=" ago"):(t="in "+t,r="in "+r,a="in "+a),{diff:o,rounded:t,qualified:r,precise:a}},je={north:[["spring",2,1],["summer",5,1],["fall",8,1],["autumn",8,1],["winter",11,1]],south:[["fall",2,1],["autumn",2,1],["winter",5,1],["spring",8,1],["summer",11,1]]},Oe=[null,[0,1],[3,1],[6,1],[9,1]],De={minute:function(e){return M(e,{second:0,millisecond:0}),e},quarterhour:function(e){var n=e.minutes();return e=n>=45?e.minutes(45):n>=30?e.minutes(30):n>=15?e.minutes(15):e.minutes(0),M(e,{second:0,millisecond:0}),e},hour:function(e){return M(e,{minute:0,second:0,millisecond:0}),e},day:function(e){return M(e,{hour:0,minute:0,second:0,millisecond:0}),e},week:function(e){var n=e.clone();return(e=e.day(e._weekStart)).isAfter(n)&&(e=e.subtract(1,"week")),M(e,{hour:0,minute:0,second:0,millisecond:0}),e},month:function(e){return M(e,{date:1,hour:0,minute:0,second:0,millisecond:0}),e},quarter:function(e){var n=e.quarter();return Oe[n]&&M(e,{month:Oe[n][0],date:Oe[n][1],hour:0,minute:0,second:0,millisecond:0}),e},season:function(e){var n=e.season(),t="north";"South"===e.hemisphere()&&(t="south");for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;if(!n||!t)return[];if(n=Y.normalize(n),t=e.clone().set(t),e.isAfter(t)){var r=e;e=t,t=r}var a=e.clone();Me(n)?(a=a.next(n),n="week"):a=a.next(n);for(var o=[];a.isBefore(t);)o.push(a),a=a.add(1,n);return o},Ie=function(e){var n=e.timezones,t=e.tz;if(!1===n.hasOwnProperty(t)&&(t=j(e.tz,n)),null===t)return!1===e.silent&&console.warn("Warn: could not find given or local timezone - '"+e.tz+"'"),{current:{epochShift:0}};var r,a,o=n[t],u={name:(r=t,r=(r=(r=r[0].toUpperCase()+r.substr(1)).replace(/\/gmt/,"/GMT")).replace(/[\/_]([a-z])/gi,(function(e){return e.toUpperCase()}))),hasDst:Boolean(o.dst),default_offset:o.offset,hemisphere:"s"===o.hem?"South":"North",current:{}};if(u.hasDst){var s=(a=o.dst)?a.split("->"):[];u.change={start:s[0],back:s[1]}}var c=o.offset,l=c;return!0===u.hasDst&&(l="North"===u.hemisphere?c-1:o.offset+1),!1===u.hasDst?(u.current.offset=c,u.current.isDST=!1):!0===i(e.epoch,u.change.start,u.change.back,c,l)?(u.current.offset=c,u.current.isDST="North"===u.hemisphere):(u.current.offset=l,u.current.isDST="South"===u.hemisphere),u},Ce=["century","decade","year","month","date","day","hour","minute","second","millisecond"],Ee={set:function(e,n){var t=this.clone();return t=J(t,e,null),n&&(this.tz=j(n)),t},timezone:function(){return Ie(this)},isDST:function(){return Ie(this).current.isDST},hasDST:function(){return Ie(this).hasDst},offset:function(){return 60*Ie(this).current.offset},hemisphere:function(){return Ie(this).hemisphere},format:function(e){return ue(this,e)},unixFmt:function(e){return fe(this,e)},startOf:function(e){return Pe(this,e)},endOf:function(e){return Se(this,e)},leapYear:function(){var e=this.year();return Y.isLeapYear(e)},progress:function(e){return pe(this,e)},nearest:function(e){return ye(this,e)},diff:function(e,n){return we(this,e,n)},since:function(e){return e||(e=this.clone().set()),ze(this,e)},next:function(e){return this.add(1,e).startOf(e)},last:function(e){return this.subtract(1,e).startOf(e)},isValid:function(){return!(!this.epoch&&0!==this.epoch)&&!isNaN(this.d.getTime())},goto:function(e){var n=this.clone();return n.tz=j(e,n.timezones),n},every:function(e,n){if("object"===t(e)&&"string"==typeof n){var r=n;n=e,e=r}return qe(this,e,n)},isAwake:function(){var e=this.hour();return!(e<8||e>22)},isAsleep:function(){return!this.isAwake()},log:function(){return console.log(""),console.log(ue(this,"nice-short")),this},logYear:function(){return console.log(""),console.log(ue(this,"full-short")),this},json:function(){var e=this;return Ce.reduce((function(n,t){return n[t]=e[t](),n}),{})},debug:function(){var e=this.timezone(),n=this.format("MM")+" "+this.format("date-ordinal")+" "+this.year();return n+="\n - "+this.format("time"),console.log("\n\n",n+"\n - "+e.name+" ("+e.current.offset+")"),this},from:function(e){return(e=this.clone().set(e)).since(this)},fromNow:function(){return this.clone().set(Date.now()).since(this)},weekStart:function(e){if("number"==typeof e)return this._weekStart=e,this;if("string"==typeof e){e=e.toLowerCase().trim();var n=X.short().indexOf(e);-1===n&&(n=X.long().indexOf(e)),-1===n&&(n=1),this._weekStart=n}else console.warn("Spacetime Error: Cannot understand .weekStart() input:",e);return this}};Ee.inDST=Ee.isDST,Ee.round=Ee.nearest,Ee.each=Ee.every;var Te=Ee,Ae=Y.isLeapYear,Ne=function(e){return"string"==typeof e&&(e=parseInt(e,10)),e},$e=["year","month","date","hour","minute","second","millisecond"],xe=function(e,n,t){for(var r=$e.indexOf(t),a=$e.slice(r,$e.length),o=0;o=24?n=24:n<0&&(n=0);var t=e.clone(),r=e.hour()-n,a=r*D.hour;return e.epoch-=a,e.date()!==t.date()&&(e=t.clone(),r>1&&(r-=1),r<1&&(r+=1),a=r*D.hour,e.epoch-=a),M(e,{hour:n}),xe(e,t,"minute"),e.epoch},Ze=function(e,n){var t=n.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);if(!t){if(!(t=n.match(/([0-9]{1,2}) ?(am|pm)/)))return e.epoch;t.splice(2,0,"0"),t.splice(3,0,"")}var r=!1,a=parseInt(t[1],10),o=parseInt(t[2],10);a>12&&(r=!0),!1===r&&("am"===t[4]&&12===a&&(a=0),"pm"===t[4]&&a<12&&(a+=12)),t[3]=t[3]||"",t[3]=t[3].replace(/:/,"");var i=parseInt(t[3],10)||0;return(e=(e=(e=(e=e.hour(a)).minute(o)).second(i)).millisecond(0)).epoch},He=function(e,n){if((n=Ne(n))>28){var t=e.month(),r=x[t];1===t&&29===n&&Ae(e.year())&&(r=29),n>r&&(n=r)}return n<=0&&(n=1),M(e,{date:n}),e.epoch},Qe=function(e,n){"string"==typeof n&&(n=T()[n.toLowerCase()]),(n=Ne(n))>=12&&(n=11),n<=0&&(n=0);var t=e.date();return t>x[n]&&(t=x[n]),M(e,{month:n,date:t}),e.epoch},Ge=function(e,n){return"string"==typeof n&&/^'[0-9]{2}$/.test(n)&&(n=n.replace(/'/,"").trim(),n=(n=Number(n))>30?1900+n:2e3+n),n=Ne(n),M(e,{year:n}),e.epoch},Ue=function(e,n){n=Ne(n);var t=e.clone();return(n-=1)<=0?n=0:n>=365&&(n=364),e=(e=e.startOf("year")).add(n,"day"),xe(e,t,"hour"),e.epoch},Ve={millisecond:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ye(n,e),n}return this.d.getMilliseconds()},second:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Le(n,e),n}return this.d.getSeconds()},minute:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Be(n,e),n}return this.d.getMinutes()},hour:function(e){var n=this.d;if(void 0!==e){var t=this.clone();return t.epoch=Fe(t,e),t}return n.getHours()},hourFloat:function(e){if(void 0!==e){var n=this.clone(),t=e%1;t*=60;var r=parseInt(e,10);return n.epoch=Fe(n,r),n.epoch=Be(n,t),n}var a=this.d,o=a.getHours(),i=a.getMinutes();return o+(i/=60)},hour12:function(e){var n=this.d;if(void 0!==e){var t=this.clone(),r=(e=""+e).match(/^([0-9]+)(am|pm)$/);if(r){var a=parseInt(r[1],10);"pm"===r[2]&&(a+=12),t.epoch=Fe(t,a)}return t}var o=n.getHours();return o>12&&(o-=12),0===o&&(o=12),o},time:function(e){if(void 0!==e){var n=this.clone();return e=e.toLowerCase().trim(),n.epoch=Ze(n,e),n}return"".concat(this.h12(),":").concat(Y.zeroPad(this.minute())).concat(this.ampm())},ampm:function(e){var n="am",t=this.hour();if(t>=12&&(n="pm"),"string"!=typeof e)return n;var r=this.clone();return e=e.toLowerCase().trim(),t>=12&&"am"===e?(t-=12,r.hour(t)):t<12&&"pm"===e?(t+=12,r.hour(t)):r},dayTime:function(e){if(void 0!==e){var n={morning:"7:00am",breakfast:"7:00am",noon:"12:00am",lunch:"12:00pm",afternoon:"2:00pm",evening:"6:00pm",dinner:"6:00pm",night:"11:00pm",midnight:"23:59pm"},t=this.clone();return e=(e=e||"").toLowerCase(),!0===n.hasOwnProperty(e)&&(t=t.time(n[e])),t}var r=this.hour();return r<6?"night":r<12?"morning":r<17?"afternoon":r<22?"evening":"night"},iso:function(e){return void 0!==e?this.set(e):this.format("iso")}},We={date:function(e){if(void 0!==e){var n=this.clone();return(e=parseInt(e,10))&&(n.epoch=He(n,e)),n}return this.d.getDate()},day:function(e){if(void 0===e)return this.d.getDay();var n=this.clone(),t=e;"string"==typeof e&&(e=e.toLowerCase(),X.aliases.hasOwnProperty(e)?t=X.aliases[e]:-1===(t=X.short().indexOf(e))&&(t=X.long().indexOf(e)));var r=this.d.getDay(),a=r-t,o=this.subtract(a,"days");return M(o,{hour:n.hour(),minute:n.minute(),second:n.second()}),o},dayName:function(e){if(void 0===e)return X.long()[this.day()];var n=this.clone();return n=n.day(e)},month:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Qe(n,e),n}return this.d.getMonth()}},Je=function(e){return e=(e=(e=e.minute(0)).second(0)).millisecond(1)},Ke={dayOfYear:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ue(n,e),n}for(var t,r=0,a=this.d.getMonth(),o=1;o<=a;o++)(t=new Date).setDate(1),t.setFullYear(this.d.getFullYear()),t.setHours(1),t.setMinutes(1),t.setMonth(o),t.setHours(-2),r+=t.getDate();return r+this.d.getDate()},week:function(e){if(void 0!==e){var n=this.clone();return n=(n=(n=n.month(0)).date(1)).day("monday"),"december"===(n=Je(n)).monthName()&&n.date()>=28&&(n=n.add(1,"week")),e-=1,n=n.add(e,"weeks")}var t=this.clone();t=(t=t.month(0)).date(1),"december"===(t=(t=Je(t)).day("monday")).monthName()&&t.date()>=28&&(t=t.add(1,"week"));var r=1;1===t.date()&&(r=0),t=t.minus(1,"second");var a=this.epoch;if(t.epoch>a)return 1;var o=0,i=4*this.month();for(t.epoch+=D.week*i,o+=i;o<=52;o++){if(t.epoch>a)return o+r;t=t.add(1,"week")}return 52},monthName:function(e){if(void 0===e)return E()[this.month()];var n=this.clone();return n=n.month(e)},quarter:function(e){if(void 0!==e&&("string"==typeof e&&(e=e.replace(/^q/i,""),e=parseInt(e,10)),Oe[e])){var n=this.clone(),t=Oe[e][0];return n=(n=(n=n.month(t)).date(1)).startOf("day")}for(var r=this.d.getMonth(),a=1;a=je[n][o][1]&&a0&&(n.epoch=Ge(n,-1*t)),"ad"===e&&t<0&&(n.epoch=Ge(n,-1*t)),n}return this.d.getFullYear()<0?"BC":"AD"},decade:function(e){if(void 0!==e){if(!(e=(e=(e=String(e)).replace(/([0-9])'?s$/,"$1")).replace(/([0-9])(th|rd|st|nd)/,"$1")))return console.warn("Spacetime: Invalid decade input"),this;2===e.length&&/[0-9][0-9]/.test(e)&&(e="19"+e);var n=Number(e);return isNaN(n)?this:(n=10*Math.floor(n/10),this.year(n))}return this.startOf("decade").year()},century:function(e){if(void 0!==e){"string"==typeof e&&(e=(e=(e=e.replace(/([0-9])(th|rd|st|nd)/,"$1")).replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i,(function(e,n,t){return t.match(/b\.?c\.?/i)&&(n="-"+n),n}))).replace(/c$/,""));var n=Number(e);return isNaN(e)?(console.warn("Spacetime: Invalid century input"),this):(0===n&&(n=1),n=n>=0?100*(n-1):100*(n+1),this.year(n))}var t=this.startOf("century").year();return(t=Math.floor(t/100))<0?t-1:t+1},millenium:function(e){if(void 0!==e){if("string"==typeof e&&(e=e.replace(/([0-9])(th|rd|st|nd)/,"$1"),e=Number(e),isNaN(e)))return console.warn("Spacetime: Invalid millenium input"),this;e>0&&(e-=1);var n=1e3*e;return 0===n&&(n=1),this.year(n)}var t=Math.floor(this.year()/1e3);return t>=0&&(t+=1),t}},Re=Object.assign({},Ve,We,Ke);Re.milliseconds=Re.millisecond,Re.seconds=Re.second,Re.minutes=Re.minute,Re.hours=Re.hour,Re.hour24=Re.hour,Re.h12=Re.hour12,Re.h24=Re.hour24,Re.days=Re.day;var Xe=function(e){Object.keys(Re).forEach((function(n){e.prototype[n]=Re[n]}))},en=Y.isLeapYear,nn=function(e,n){return 1===e&&en(n)?29:x[e]},tn=function(e,n){if(e.month>0){var t=parseInt(e.month/12,10);e.year=n.year()+t,e.month=e.month%12}else if(e.month<0){var r=Math.floor(Math.abs(e.month)/13,10);r=Math.abs(r)+1,e.year=n.year()-r,e.month=e.month%12,e.month=e.month+12,12===e.month&&(e.month=0)}return e},rn=function(e,n,t){for(var r=n.year(),a=n.month(),o=nn(a,r);t>o;)t-=o,(a+=1)>=12&&(a-=12,r+=1),o=nn(a,r);return e.month=a,e.date=t,e},an=function(e,n,t){e.year=n.year(),e.month=n.month();var r=n.date();for(e.date=r-Math.abs(t);e.date<1;){e.month-=1,e.month<0&&(e.month=11,e.year-=1);var a=nn(e.month,e.year);e.date+=a}return e},on=["millisecond","second","minute","hour","date","month"],un={second:on.slice(0,1),minute:on.slice(0,2),quarterhour:on.slice(0,2),hour:on.slice(0,3),date:on.slice(0,4),month:on.slice(0,4),quarter:on.slice(0,4),season:on.slice(0,4),year:on,decade:on,century:on};un.week=un.hour,un.season=un.date,un.quarter=un.date;var sn={year:!0,quarter:!0,season:!0,month:!0,week:!0,day:!0},cn={month:!0,quarter:!0,season:!0,year:!0},ln=function(e){e.prototype.add=function(e,n){var t=this.clone();if(!n||0===e)return t;var r=this.clone();if("millisecond"===(n=Y.normalize(n)))return t.epoch+=e,t;"fortnight"===n&&(e*=2,n="week"),D[n]?t.epoch+=D[n]*e:"week"===n?t.epoch+=D.day*(7*e):"quarter"===n||"season"===n?t.epoch+=D.month*(3*e):"quarterhour"===n&&(t.epoch+=15*D.minute*e);var a={};if(un[n]&&un[n].forEach((function(e){a[e]=r[e]()})),sn[n]){var o=r.timezone().current.offset-t.timezone().current.offset;t.epoch+=3600*o*1e3}if("month"===n&&(a.month=r.month()+e,a=tn(a,r)),"week"===n){var i=r.date()+7*e;i<=28&&i>1&&(a.date=i)}else if("date"===n){if(e<0)a=an(a,r,e);else{var u=r.date()+e;a=rn(a,r,u)}0!==e&&r.isSame(t,"day")&&(a.date=r.date()+e)}else if("quarter"===n){if(a.month=r.month()+3*e,a.year=r.year(),a.month<0){var s=Math.floor(a.month/12),c=a.month+12*Math.abs(s);a.month=c,a.year+=s}else if(a.month>=12){var l=Math.floor(a.month/12);a.month=a.month%12,a.year+=l}a.date=r.date()}else if("year"===n){var h=r.year()+e,f=t.year();(fh)&&(t.epoch+=D.day)}else"decade"===n?a.year=t.year()+10:"century"===n&&(a.year=t.year()+100);if(cn[n]){var d=x[a.month];a.date=r.date(),a.date>d&&(a.date=d)}return Object.keys(a).length>1&&M(t,a),t},e.prototype.subtract=function(e,n){return this.clone().add(-1*e,n)},e.prototype.minus=e.prototype.subtract,e.prototype.plus=e.prototype.add},hn={millisecond:function(e){return e.epoch},second:function(e){return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second()].join("-")},minute:function(e){return[e.year(),e.month(),e.date(),e.hour(),e.minute()].join("-")},hour:function(e){return[e.year(),e.month(),e.date(),e.hour()].join("-")},day:function(e){return[e.year(),e.month(),e.date()].join("-")},week:function(e){return[e.year(),e.week()].join("-")},month:function(e){return[e.year(),e.month()].join("-")},quarter:function(e){return[e.year(),e.quarter()].join("-")},year:function(e){return e.year()}};hn.date=hn.day;var fn=function(e){e.prototype.isSame=function(n,r){var a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=this;if(!r)return null;if("string"==typeof n&&"object"===t(r)){var i=n;n=r,r=i}return"string"!=typeof n&&"number"!=typeof n||(n=new e(n,this.timezone.name)),r=r.replace(/s$/,""),!0===a&&o.tz!==n.tz&&((n=n.clone()).tz=o.tz),hn[r]?hn[r](o)===hn[r](n):null}},dn=function(e){var n={isAfter:function(e){e=Y.beADate(e,this);var n=Y.getEpoch(e);return null===n?null:this.epoch>n},isBefore:function(e){e=Y.beADate(e,this);var n=Y.getEpoch(e);return null===n?null:this.epoch2&&void 0!==arguments[2]&&arguments[2];e=Y.beADate(e,this),n=Y.beADate(n,this);var r=Y.getEpoch(e);if(null===r)return null;var a=Y.getEpoch(n);return null===a?null:t?this.isBetween(e,n)||this.isEqual(e)||this.isEqual(n):r2&&void 0!==arguments[2]?arguments[2]:{};this.epoch=null,this.tz=j(n,pn),this.silent=t.silent||!0,this.british=t.dmy||t.british,this._weekStart=1,void 0!==t.weekStart&&(this._weekStart=t.weekStart),this._today={},void 0!==t.today&&(this._today=t.today),Object.defineProperty(this,"d",{get:function(){var e=u(this),n=(new Date(this.epoch).getTimezoneOffset()||0)+60*e;n=60*n*1e3;var t=this.epoch+n;return new Date(t)}}),Object.defineProperty(this,"timezones",{get:function(){return pn},set:function(e){return pn=e,e}});var r=J(this,e,n);this.epoch=r.epoch};Object.keys(Te).forEach((function(e){yn.prototype[e]=Te[e]})),yn.prototype.clone=function(){return new yn(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart,today:this._today})},yn.prototype.toLocalDate=function(){return new Date(this.epoch)},Xe(yn),ln(yn),fn(yn),dn(yn),mn(yn);var vn=yn,gn=function(e,n){var t=new vn(null),r=new vn(null);t=t.time(e),r=n?r.time(n):t.add(59,"minutes");var a=t.hour(),o=r.hour();return Object.keys(t.timezones).filter((function(e){if(-1===e.indexOf("/"))return!1;var n=new vn(null,e),i=n.hour();return i>=a&&i<=o&&(!(i===a&&n.minute()r.minute()))}))},bn=function(e,n,t){return new vn(e,n,t)},wn=function(e){var n=e._today||{};return Object.keys(n).forEach((function(t){e=e[t](n[t])})),e};bn.now=function(e,n){var t=new vn((new Date).getTime(),e,n);return t=wn(t)},bn.today=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).startOf("day")},bn.tomorrow=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).add(1,"day").startOf("day")},bn.yesterday=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).subtract(1,"day").startOf("day")},bn.extend=function(e){return Object.keys(e).forEach((function(n){vn.prototype[n]=e[n]})),this},bn.timezones=function(){return(new vn).timezones},bn.max=function(e,n){var t=new vn(null,e,n);return t.epoch=864e13,t},bn.min=function(e,n){var t=new vn(null,e,n);return t.epoch=-864e13,t},bn.whereIts=gn,bn.version="6.14.0",bn.plugin=bn.extend;var kn=bn;var _n=function(e){return e&&e.default||e}(Object.freeze({__proto__:null,default:kn}));var zn=function(e){let n=e.sentence();if(!n)return null;let t=n.text()||"",r=t.match(/\(.*\)/);if(!r||!r[0])return null;t=r[0]||"",t=t.trim(),t=t.replace(/^\(/,""),t=t.replace(/\)$/,"");let a=t.split(/ – /);if(a=a.filter((e=>e)),a[0]&&a[1]&&2===a.length)return{birth:a[0],death:a[1]};if(a[0]){let e=a[0].replace(/^(born|ne) (c\.)?/,"");if(_n(e).isValid())return{birth:e}}return null};var jn=function(e){let n=e.categories();for(let e=0;e1e3)return e}}return null};var On=function(e){if(!e)return null;if((e=(e=e.replace(/\(.*\)/,"")).trim()).match(/^[0-9]{4}$/))return{year:parseInt(e,10)};let n=_n(e);return{year:n.year(),month:n.month(),date:n.date()}};var Dn=function(e){let t=n(e,"birth_date");if(t)return On(t);if(t=zn(e),t&&t.birth)return On(t.birth);let r=jn(e);return r?{year:r}:null};var Pn=function(e){let t=n(e,"birth_place");return t||null};const Sn={"Living people":!0,"Year of birth missing (living people)":!0,"Date of birth missing (living people)":!0,"Place of birth missing (living people)":!0,"Active politicians":!0,"Biography articles of living people":!0},Mn={"Dead people":!0,"Date of death missing":!0,"Date of death unknown":!0,"Place of death missing":!0,"Place of death unknown":!0,"Year of death missing":!0,"Year of death unknown":!0,"Year of death uncertain":!0,"Recent deaths":!0,"People declared dead in absentia":!0,"Politicians elected posthumously":!0,"People who died in office":!0,"Assassinated heads of state‎ ":!0,"Assassinated heads of government":!0,"Assassinated mayors":!0,"People who died in Nazi concentration camps":!0,"People executed in Nazi concentration camps":!0,"Politicians who died in Nazi concentration camps":!0,"People who have received posthumous pardons":!0,"People lost at sea‎":!0,"Deaths due to shipwreck":!0,"People who died at sea":!0,"Unsolved deaths‎":!0,"Deaths by horse-riding accident‎":!0,"Deaths from falls‎":!0,"Deaths by poisoning‎‎":!0,"Deaths from cerebrovascular disease‎":!0,"Deaths from asphyxiation‎":!0,"Deaths from sepsis‎":!0,"Deaths from pneumonia‎":!0,"Deaths from dysentery‎‎":!0,"Deaths by drowning‎":!0};var qn=function(e){let n=e.categories();return!!n.find((e=>Sn.hasOwnProperty(e)))||!n.find((e=>Mn.hasOwnProperty(e)))&&null};const In={blp:!0,"blp unsourced":!0,"blp unsourced section":!0,"blp primary sources":!0,"blp self-published":!0,"blp sources":!0,"blp sources section":!0,"blp imdb-only refimprove":!0,"blp imdb refimprove":!0,"blp no footnotes":!0,"blp more footnotes":!0,"blp one source":!0,"active politician":!0,activepol:!0,"current person":!0},Cn={"recent death":!0,"recent death presumed":!0,"recent death confirmed":!0,obituary:!0,elegy:!0,eulogy:!0,panegyric:!0,memorial:!0};var En=function(e){let n=e.templates().map((e=>e.json()));for(let e=0;e1e3)return e}}return null};var $n=function(e){let t=n(e,"death_date");if(t)return On(t);if(t=zn(e),t&&t.death)return On(t.death);let r=Nn(e);return r?{year:r}:null};var xn=function(e){let t=n(e,"death_place");return t||null};var Yn=function(e){let t=n(e,"nationality");return t||null};return function(e){e.Doc.prototype.birthDate=function(){return Dn(this)},e.Doc.prototype.birthPlace=function(){return Pn(this)},e.Doc.prototype.isAlive=function(){return An(this)},e.Doc.prototype.deathDate=function(){return $n(this)},e.Doc.prototype.deathPlace=function(){return xn(this)},e.Doc.prototype.nationality=function(){return Yn(this)}}})); diff --git a/plugins/person/builds/wtf-plugin-person.mjs b/plugins/person/builds/wtf-plugin-person.mjs index d2a66a22..e8fb51b5 100644 --- a/plugins/person/builds/wtf-plugin-person.mjs +++ b/plugins/person/builds/wtf-plugin-person.mjs @@ -1,4 +1,4 @@ -/* wtf-plugin-person 0.1.0 MIT */ +/* wtf-plugin-person 0.2.0 MIT */ // from ./plugins/classify/infobox, April 15 2020 // https://en.wikipedia.org/wiki/Category:People_and_person_infobox_templates var _infoboxes = { @@ -4816,7 +4816,7 @@ const isDead = { }; const byTemplate = function (doc) { - let templates = doc.templates(); + let templates = doc.templates().map(tmpl => tmpl.json()); for (let i = 0; i < templates.length; i++) { let title = templates[i].template || ''; @@ -4835,7 +4835,8 @@ const byTemplate = function (doc) { let bio = doc.template('WikiProject Biography'); if (bio) { - //living blp BLP + bio = bio.json(); //living blp BLP + if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') { return true; } diff --git a/plugins/person/package.json b/plugins/person/package.json index ef106ce6..f68cef70 100644 --- a/plugins/person/package.json +++ b/plugins/person/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-person", "description": "person-details plugin for wtf_wikipedia", - "version": "0.1.0", + "version": "0.2.0", "main": "./builds/wtf-plugin-person.js", "unpkg": "./builds/wtf-plugin-person.min.js", "module": "./builds/wtf-plugin-person.mjs", diff --git a/plugins/summary/builds/wtf-plugin-summary.js b/plugins/summary/builds/wtf-plugin-summary.js index 2e8c1762..ad3fede3 100644 --- a/plugins/summary/builds/wtf-plugin-summary.js +++ b/plugins/summary/builds/wtf-plugin-summary.js @@ -1,4 +1,4 @@ -/* wtf-plugin-summary 0.2.0 MIT */ +/* wtf-plugin-summary 0.3.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -14871,15 +14871,12 @@ 'default': src$1 }); - const isObject = function (obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - const fromTemplate = function (doc) { let tmpl = doc.template('short description'); - if (tmpl && isObject(tmpl) && tmpl.description) { - return tmpl.description; + if (tmpl) { + let json = tmpl.json() || {}; + return json.description || ''; } return null; diff --git a/plugins/summary/builds/wtf-plugin-summary.js.map b/plugins/summary/builds/wtf-plugin-summary.js.map index 272ee85a..024321cc 100644 --- a/plugins/summary/builds/wtf-plugin-summary.js.map +++ b/plugins/summary/builds/wtf-plugin-summary.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-summary.js","sources":["../node_modules/compromise/builds/compromise.mjs","../src/template/index.js","../src/sentence/00-preProcess.js","../src/sentence/01-pivot.js","../src/sentence/02-byClause.js","../src/sentence/03-safeCuts.js","../src/sentence/04-hardCuts.js","../src/sentence/05-lastTry.js","../src/sentence/_isGood.js","../src/sentence/index.js","../src/category/regs.js","../src/category/01-choose.js","../src/category/02-change.js","../src/category/index.js","../src/index.js"],"sourcesContent":["/* compromise 13.10.5 MIT */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\n//this is a not-well-thought-out way to reduce our dependence on `object===object` stuff\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term\n\nfunction makeId(str) {\n str = str || '_';\n var text = str + '-';\n\n for (var i = 0; i < 7; i++) {\n text += chars[Math.floor(Math.random() * chars.length)];\n }\n\n return text;\n}\n\nvar _id = makeId;\n\n//a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii.\n//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n//http://en.wikipedia.org/wiki/List_of_Unicode_characters\n//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\nvar compact = {\n '!': '¡',\n '?': '¿Ɂ',\n '\"': '“”\"❝❞',\n \"'\": '‘‛❛❜',\n '-': '—–',\n a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ',\n b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ',\n d: 'ÐĎďĐđƉƊȡƋƌǷ',\n e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ',\n f: 'ƑƒϜϝӺӻҒғſ',\n g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n I: 'ÌÍÎÏ',\n i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії',\n j: 'ĴĵǰȷɈɉϳЈј',\n k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n m: 'ΜϺϻМмӍӎ',\n n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ',\n p: 'ƤƿΡρϷϸϼРрҎҏÞ',\n q: 'Ɋɋ',\n r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ',\n v: 'νѴѵѶѷ',\n w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ'\n}; //decompress data into two hashes\n\nvar unicode = {};\nObject.keys(compact).forEach(function (k) {\n compact[k].split('').forEach(function (s) {\n unicode[s] = k;\n });\n});\n\nvar killUnicode = function killUnicode(str) {\n var chars = str.split('');\n chars.forEach(function (s, i) {\n if (unicode[s]) {\n chars[i] = unicode[s];\n }\n });\n return chars.join('');\n};\n\nvar unicode_1 = killUnicode; // console.log(killUnicode('bjŏȒk—Ɏó'));\n\nvar periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/;\nvar oneLetterAcronym$1 = /^[A-Z]\\.,?$/;\nvar noPeriodAcronym = /[A-Z]{2,}('s|,)?$/;\nvar lowerCaseAcronym = /([a-z]\\.)+[a-z]\\.?$/;\n\nvar isAcronym$2 = function isAcronym(str) {\n //like N.D.A\n if (periodAcronym.test(str) === true) {\n return true;\n } //like c.e.o\n\n\n if (lowerCaseAcronym.test(str) === true) {\n return true;\n } //like 'F.'\n\n\n if (oneLetterAcronym$1.test(str) === true) {\n return true;\n } //like NDA\n\n\n if (noPeriodAcronym.test(str) === true) {\n return true;\n }\n\n return false;\n};\n\nvar isAcronym_1$1 = isAcronym$2;\n\nvar hasSlash$1 = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/;\n/** some basic operations on a string to reduce noise */\n\nvar clean = function clean(str) {\n str = str || '';\n str = str.toLowerCase();\n str = str.trim();\n var original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork\n\n str = unicode_1(str); //rough handling of slashes - 'see/saw'\n\n if (hasSlash$1.test(str) === true) {\n str = str.replace(/\\/.*/, '');\n } //#tags, @mentions\n\n\n str = str.replace(/^[#@]/, ''); //punctuation\n\n str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes\n\n str = str.replace(/[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]+/g, \"'\"); // coerce double curly quotes\n\n str = str.replace(/[\\u0022\\u00AB\\u00BB\\u201C\\u201D\\u201E\\u201F\\u2033\\u2034\\u2036\\u2037\\u2E42\\u301D\\u301E\\u301F\\uFF02]+/g, '\"'); //coerce Unicode ellipses\n\n str = str.replace(/\\u2026/g, '...'); //en-dash\n\n str = str.replace(/\\u2013/g, '-'); //lookin'->looking (make it easier for conjugation)\n\n str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment\n\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n str = str.replace('-', '');\n } //compact acronyms\n\n\n if (isAcronym_1$1(str)) {\n str = str.replace(/\\./g, '');\n } //strip leading & trailing grammatical punctuation\n\n\n if (/^[:;]/.test(str) === false) {\n str = str.replace(/\\.{3,}$/g, '');\n str = str.replace(/[\",\\.!:;\\?\\)]+$/g, '');\n str = str.replace(/^['\"\\(]+/g, '');\n } // remove zero-width characters\n\n\n str = str.replace(/[\\u200B-\\u200D\\uFEFF]/g, ''); //do this again..\n\n str = str.trim(); //oh shucks,\n\n if (str === '') {\n str = original;\n } //nice-numbers\n\n\n str = str.replace(/([0-9]),([0-9])/g, '$1$2');\n return str;\n};\n\nvar clean_1 = clean; // console.log(normalize('Dr. V Cooper'));\n\n/** reduced is one step further than clean */\nvar reduced = function reduced(str) {\n // remove apostrophes\n str = str.replace(/['’]s$/, '');\n str = str.replace(/s['’]$/, 's');\n return str;\n};\n\nvar reduce = reduced;\n\n//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n//we have slightly different rules for start/end - like #hashtags.\n\nvar startings = /^[ \\n\\t\\.\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u0027\\u201C\\u201F\\u201B\\u201E\\u2E42\\u201A\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/;\nvar endings = /[ \\n\\t\\.'\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u201D\\u00B4\\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\n\nvar hasSlash = /\\//;\nvar hasApostrophe = /['’]/;\nvar hasAcronym = /^[a-z]\\.([a-z]\\.)+/i;\nvar minusNumber = /^[-+\\.][0-9]/;\nvar shortYear = /^'[0-9]{2}/;\n/** turn given text into a parsed-up object\n * seperate the 'meat' of the word from the whitespace+punctuation\n */\n\nvar parseTerm = function parseTerm(str) {\n var original = str;\n var pre = '';\n var post = '';\n str = str.replace(startings, function (found) {\n pre = found; // support '-40'\n\n if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) {\n pre = '';\n return found;\n } // support years like '97\n\n\n if (pre === \"'\" && shortYear.test(str)) {\n pre = '';\n return found;\n }\n\n return '';\n });\n str = str.replace(endings, function (found) {\n post = found; // keep s-apostrophe - \"flanders'\" or \"chillin'\"\n\n if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) {\n post = post.replace(hasApostrophe, '');\n return \"'\";\n } //keep end-period in acronym\n\n\n if (hasAcronym.test(str) === true) {\n post = post.replace(/\\./, '');\n return '.';\n }\n\n return '';\n }); //we went too far..\n\n if (str === '') {\n // do a very mild parse, and hope for the best.\n original = original.replace(/ *$/, function (after) {\n post = after || '';\n return '';\n });\n str = original;\n pre = '';\n post = post;\n } // create the various forms of our text,\n\n\n var clean = clean_1(str);\n var parsed = {\n text: str,\n clean: clean,\n reduced: reduce(clean),\n pre: pre,\n post: post\n }; // support aliases for slashes\n\n if (hasSlash.test(str)) {\n str.split(hasSlash).forEach(function (word) {\n parsed.alias = parsed.alias || {};\n parsed.alias[word.trim()] = true;\n });\n }\n\n return parsed;\n};\n\nvar parse$2 = parseTerm;\n\nfunction createCommonjsModule(fn) {\n var module = { exports: {} };\n\treturn fn(module, module.exports), module.exports;\n}\n\nvar _01Case = createCommonjsModule(function (module, exports) {\n var titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\n var upperCase = /^[A-Z]+s?$/;\n /** convert all text to uppercase */\n\n exports.toUpperCase = function () {\n this.text = this.text.toUpperCase();\n return this;\n };\n /** convert all text to lowercase */\n\n\n exports.toLowerCase = function () {\n this.text = this.text.toLowerCase();\n return this;\n };\n /** only set the first letter to uppercase\n * leave any existing uppercase alone\n */\n\n\n exports.toTitleCase = function () {\n this.text = this.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, function (x) {\n return x.toUpperCase();\n }); //support unicode?\n\n return this;\n };\n /** if all letters are uppercase */\n\n\n exports.isUpperCase = function () {\n return upperCase.test(this.text);\n };\n /** if the first letter is uppercase, and the rest are lowercase */\n\n\n exports.isTitleCase = function () {\n return titleCase.test(this.text);\n };\n\n exports.titleCase = exports.isTitleCase;\n});\n\nvar _02Punctuation$1 = createCommonjsModule(function (module, exports) {\n // these methods are called with '@hasComma' in the match syntax\n // various unicode quotation-mark formats\n var startQuote = /(\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F)/;\n var endQuote = /(\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E)/;\n /** search the term's 'post' punctuation */\n\n exports.hasPost = function (punct) {\n return this.post.indexOf(punct) !== -1;\n };\n /** search the term's 'pre' punctuation */\n\n\n exports.hasPre = function (punct) {\n return this.pre.indexOf(punct) !== -1;\n };\n /** does it have a quotation symbol? */\n\n\n exports.hasQuote = function () {\n return startQuote.test(this.pre) || endQuote.test(this.post);\n };\n\n exports.hasQuotation = exports.hasQuote;\n /** does it have a comma? */\n\n exports.hasComma = function () {\n return this.hasPost(',');\n };\n /** does it end in a period? */\n\n\n exports.hasPeriod = function () {\n return this.hasPost('.') === true && this.hasPost('...') === false;\n };\n /** does it end in an exclamation */\n\n\n exports.hasExclamation = function () {\n return this.hasPost('!');\n };\n /** does it end with a question mark? */\n\n\n exports.hasQuestionMark = function () {\n return this.hasPost('?') || this.hasPost('¿');\n };\n /** is there a ... at the end? */\n\n\n exports.hasEllipses = function () {\n return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…');\n };\n /** is there a semicolon after this word? */\n\n\n exports.hasSemicolon = function () {\n return this.hasPost(';');\n };\n /** is there a slash '/' in this word? */\n\n\n exports.hasSlash = function () {\n return /\\//.test(this.text);\n };\n /** a hyphen connects two words like-this */\n\n\n exports.hasHyphen = function () {\n var hyphen = /^(-|–|—)$/;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** a dash separates words - like that */\n\n\n exports.hasDash = function () {\n var hyphen = / (-|–|—) /;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** is it multiple words combinded */\n\n\n exports.hasContraction = function () {\n return Boolean(this.implicit);\n };\n /** try to sensibly put this punctuation mark into the term */\n\n\n exports.addPunctuation = function (punct) {\n // dont add doubles\n if (punct === ',' || punct === ';') {\n this.post = this.post.replace(punct, '');\n }\n\n this.post = punct + this.post;\n return this;\n };\n});\n\n// fuzzy-match (damerau-levenshtein)\n// Based on tad-lispy /node-damerau-levenshtein\n// https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js\n// count steps (insertions, deletions, substitutions, or transpositions)\nvar editDistance = function editDistance(strA, strB) {\n var aLength = strA.length,\n bLength = strB.length; // fail-fast\n\n if (aLength === 0) {\n return bLength;\n }\n\n if (bLength === 0) {\n return aLength;\n } // If the limit is not defined it will be calculate from this and that args.\n\n\n var limit = (bLength > aLength ? bLength : aLength) + 1;\n\n if (Math.abs(aLength - bLength) > (limit || 100)) {\n return limit || 100;\n } // init the array\n\n\n var matrix = [];\n\n for (var i = 0; i < limit; i++) {\n matrix[i] = [i];\n matrix[i].length = limit;\n }\n\n for (var _i = 0; _i < limit; _i++) {\n matrix[0][_i] = _i;\n } // Calculate matrix.\n\n\n var j, a_index, b_index, cost, min, t;\n\n for (var _i2 = 1; _i2 <= aLength; ++_i2) {\n a_index = strA[_i2 - 1];\n\n for (j = 1; j <= bLength; ++j) {\n // Check the jagged distance total so far\n if (_i2 === j && matrix[_i2][j] > 4) {\n return aLength;\n }\n\n b_index = strB[j - 1];\n cost = a_index === b_index ? 0 : 1; // Step 5\n // Calculate the minimum (much faster than Math.min(...)).\n\n min = matrix[_i2 - 1][j] + 1; // Deletion.\n\n if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion.\n\n if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution.\n // Update matrix.\n\n var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min;\n\n if (shouldUpdate) {\n matrix[_i2][j] = t;\n } else {\n matrix[_i2][j] = min;\n }\n }\n } // return number of steps\n\n\n return matrix[aLength][bLength];\n}; // score similarity by from 0-1 (steps/length)\n\n\nvar fuzzyMatch = function fuzzyMatch(strA, strB) {\n var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n\n if (strA === strB) {\n return 1;\n } //don't even bother on tiny strings\n\n\n if (strA.length < minLength || strB.length < minLength) {\n return 0;\n }\n\n var steps = editDistance(strA, strB);\n var length = Math.max(strA.length, strB.length);\n var relative = length === 0 ? 0 : steps / length;\n var similarity = 1 - relative;\n return similarity;\n};\n\nvar _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match\n\nvar wrapMatch = function wrapMatch() {};\n/** ignore optional/greedy logic, straight-up term match*/\n\n\nvar doesMatch = function doesMatch(t, reg, index, length) {\n // support id matches\n if (reg.id === t.id) {\n return true;\n } // support '.'\n\n\n if (reg.anything === true) {\n return true;\n } // support '^' (in parentheses)\n\n\n if (reg.start === true && index !== 0) {\n return false;\n } // support '$' (in parentheses)\n\n\n if (reg.end === true && index !== length - 1) {\n return false;\n } //support a text match\n\n\n if (reg.word !== undefined) {\n //match contractions\n if (t.implicit !== null && t.implicit === reg.word) {\n return true;\n } // term aliases for slashes and things\n\n\n if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) {\n return true;\n } // support ~ match\n\n\n if (reg.soft === true && reg.word === t.root) {\n return true;\n } // support fuzzy match param\n\n\n if (reg.fuzzy !== undefined) {\n var score = _fuzzy(reg.word, t.reduced);\n\n if (score > reg.fuzzy) {\n return true;\n } // support fuzzy + soft match\n\n\n if (reg.soft === true) {\n score = _fuzzy(reg.word, t.root);\n\n if (score > reg.fuzzy) {\n return true;\n }\n }\n } //match either .clean or .text\n\n\n return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced;\n } //support #Tag\n\n\n if (reg.tag !== undefined) {\n return t.tags[reg.tag] === true;\n } //support @method\n\n\n if (reg.method !== undefined) {\n if (typeof t[reg.method] === 'function' && t[reg.method]() === true) {\n return true;\n }\n\n return false;\n } //support /reg/\n\n\n if (reg.regex !== undefined) {\n return reg.regex.test(t.clean);\n } // support optimized (one|two)\n\n\n if (reg.fastOr !== undefined) {\n if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) {\n return true;\n }\n\n return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text);\n } //support slower (one|two)\n\n\n if (reg.choices !== undefined) {\n // try to support && operator\n if (reg.operator === 'and') {\n // must match them all\n return reg.choices.every(function (r) {\n return wrapMatch(t, r, index, length);\n });\n } // or must match one\n\n\n return reg.choices.some(function (r) {\n return wrapMatch(t, r, index, length);\n });\n }\n\n return false;\n}; // wrap result for !negative match logic\n\n\nwrapMatch = function wrapMatch(t, reg, index, length) {\n var result = doesMatch(t, reg, index, length);\n\n if (reg.negative === true) {\n return !result;\n }\n\n return result;\n};\n\nvar _doesMatch = wrapMatch;\n\nvar boring = {};\n/** check a match object against this term */\n\nvar doesMatch_1 = function doesMatch_1(reg, index, length) {\n return _doesMatch(this, reg, index, length);\n};\n/** does this term look like an acronym? */\n\n\nvar isAcronym_1 = function isAcronym_1() {\n return isAcronym_1$1(this.text);\n};\n/** is this term implied by a contraction? */\n\n\nvar isImplicit = function isImplicit() {\n return this.text === '' && Boolean(this.implicit);\n};\n/** does the term have at least one good tag? */\n\n\nvar isKnown = function isKnown() {\n return Object.keys(this.tags).some(function (t) {\n return boring[t] !== true;\n });\n};\n/** cache the root property of the term */\n\n\nvar setRoot = function setRoot(world) {\n var transform = world.transforms;\n var str = this.implicit || this.clean;\n\n if (this.tags.Plural) {\n str = transform.toSingular(str, world);\n }\n\n if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) {\n var tense = null;\n\n if (this.tags.PastTense) {\n tense = 'PastTense';\n } else if (this.tags.Gerund) {\n tense = 'Gerund';\n } else if (this.tags.PresentTense) {\n tense = 'PresentTense';\n } else if (this.tags.Participle) {\n tense = 'Participle';\n } else if (this.tags.Actor) {\n tense = 'Actor';\n }\n\n str = transform.toInfinitive(str, world, tense);\n }\n\n this.root = str;\n};\n\nvar _03Misc = {\n doesMatch: doesMatch_1,\n isAcronym: isAcronym_1,\n isImplicit: isImplicit,\n isKnown: isKnown,\n setRoot: setRoot\n};\n\nvar hasSpace$1 = /[\\s-]/;\nvar isUpperCase = /^[A-Z-]+$/; // const titleCase = str => {\n// return str.charAt(0).toUpperCase() + str.substr(1)\n// }\n\n/** return various text formats of this term */\n\nvar textOut = function textOut(options, showPre, showPost) {\n options = options || {};\n var word = this.text;\n var before = this.pre;\n var after = this.post; // -word-\n\n if (options.reduced === true) {\n word = this.reduced || '';\n }\n\n if (options.root === true) {\n word = this.root || '';\n }\n\n if (options.implicit === true && this.implicit) {\n word = this.implicit || '';\n }\n\n if (options.normal === true) {\n word = this.clean || this.text || '';\n }\n\n if (options.root === true) {\n word = this.root || this.reduced || '';\n }\n\n if (options.unicode === true) {\n word = unicode_1(word);\n } // cleanup case\n\n\n if (options.titlecase === true) {\n if (this.tags.ProperNoun && !this.titleCase()) ; else if (this.tags.Acronym) {\n word = word.toUpperCase(); //uppercase acronyms\n } else if (isUpperCase.test(word) && !this.tags.Acronym) {\n // lowercase everything else\n word = word.toLowerCase();\n }\n }\n\n if (options.lowercase === true) {\n word = word.toLowerCase();\n } // remove the '.'s from 'F.B.I.' (safely)\n\n\n if (options.acronyms === true && this.tags.Acronym) {\n word = word.replace(/\\./g, '');\n } // -before/after-\n\n\n if (options.whitespace === true || options.root === true) {\n before = '';\n after = ' ';\n\n if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) {\n after = '';\n }\n }\n\n if (options.punctuation === true && !options.root) {\n //normalized end punctuation\n if (this.hasPost('.') === true) {\n after = '.' + after;\n } else if (this.hasPost('?') === true) {\n after = '?' + after;\n } else if (this.hasPost('!') === true) {\n after = '!' + after;\n } else if (this.hasPost(',') === true) {\n after = ',' + after;\n } else if (this.hasEllipses() === true) {\n after = '...' + after;\n }\n }\n\n if (showPre !== true) {\n before = '';\n }\n\n if (showPost !== true) {\n // let keep = after.match(/\\)/) || ''\n after = ''; //keep //after.replace(/[ .?!,]+/, '')\n } // remove the '.' from 'Mrs.' (safely)\n\n\n if (options.abbreviations === true && this.tags.Abbreviation) {\n after = after.replace(/^\\./, '');\n }\n\n return before + word + after;\n};\n\nvar _04Text = {\n textOut: textOut\n};\n\nvar boringTags = {\n Auxiliary: 1,\n Possessive: 1\n};\n/** a subjective ranking of tags kinda tfidf-based */\n\nvar rankTags = function rankTags(term, world) {\n var tags = Object.keys(term.tags);\n var tagSet = world.tags;\n tags = tags.sort(function (a, b) {\n //bury the tags we dont want\n if (boringTags[b] || !tagSet[b]) {\n return -1;\n } // unknown tags are interesting\n\n\n if (!tagSet[b]) {\n return 1;\n }\n\n if (!tagSet[a]) {\n return 0;\n } // then sort by #of parent tags (most-specific tags first)\n\n\n if (tagSet[a].lineage.length > tagSet[b].lineage.length) {\n return 1;\n }\n\n if (tagSet[a].isA.length > tagSet[b].isA.length) {\n return -1;\n }\n\n return 0;\n });\n return tags;\n};\n\nvar _bestTag = rankTags;\n\nvar jsonDefault = {\n text: true,\n tags: true,\n implicit: true,\n whitespace: true,\n clean: false,\n id: false,\n index: false,\n offset: false,\n bestTag: false\n};\n/** return various metadata for this term */\n\nvar json$1 = function json(options, world) {\n options = options || {};\n options = Object.assign({}, jsonDefault, options);\n var result = {}; // default on\n\n if (options.text) {\n result.text = this.text;\n }\n\n if (options.normal) {\n result.normal = this.clean;\n }\n\n if (options.tags) {\n result.tags = Object.keys(this.tags);\n } // default off\n\n\n if (options.clean) {\n result.clean = this.clean;\n }\n\n if (options.id || options.offset) {\n result.id = this.id;\n }\n\n if (options.implicit && this.implicit !== null) {\n result.implicit = this.implicit;\n }\n\n if (options.whitespace) {\n result.pre = this.pre;\n result.post = this.post;\n }\n\n if (options.bestTag) {\n result.bestTag = _bestTag(this, world)[0];\n }\n\n return result;\n};\n\nvar _05Json$1 = {\n json: json$1\n};\n\nvar methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1);\n\nfunction isClientSide() {\n return typeof window !== 'undefined' && window.document;\n}\n/** add spaces at the end */\n\n\nvar padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n};\n/** output for verbose-mode */\n\n\nvar logTag = function logTag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 15) + '\\x1b[0m + \\x1b[32m' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason + '';\n }\n\n console.log(log);\n};\n/** output for verbose mode */\n\n\nvar logUntag = function logUntag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 3) + ' \\x1b[31m - #' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason;\n }\n\n console.log(log);\n};\n\nvar isArray$3 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n\nvar titleCase$4 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar fns$1 = {\n logTag: logTag,\n logUntag: logUntag,\n isArray: isArray$3,\n titleCase: titleCase$4\n};\n\n/** add a tag, and its descendents, to a term */\n\nvar addTag = function addTag(t, tag, reason, world) {\n var tagset = world.tags; //support '.' or '-' notation for skipping the tag\n\n if (tag === '' || tag === '.' || tag === '-') {\n return;\n }\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n }\n\n tag = fns$1.titleCase(tag); //if we already got this one\n\n if (t.tags[tag] === true) {\n return;\n } // log it?\n\n\n var isVerbose = world.isVerbose();\n\n if (isVerbose === true) {\n fns$1.logTag(t, tag, reason);\n } //add tag\n\n\n t.tags[tag] = true; //whee!\n //check tagset for any additional things to do...\n\n if (tagset.hasOwnProperty(tag) === true) {\n //add parent Tags\n tagset[tag].isA.forEach(function (down) {\n t.tags[down] = true;\n\n if (isVerbose === true) {\n fns$1.logTag(t, '→ ' + down);\n }\n }); //remove any contrary tags\n\n t.unTag(tagset[tag].notA, '←', world);\n }\n};\n/** support an array of tags */\n\n\nvar addTags = function addTags(term, tags, reason, world) {\n if (typeof tags !== 'string') {\n for (var i = 0; i < tags.length; i++) {\n addTag(term, tags[i], reason, world);\n } // tags.forEach(tag => addTag(term, tag, reason, world))\n\n } else {\n addTag(term, tags, reason, world);\n }\n};\n\nvar add = addTags;\n\nvar lowerCase = /^[a-z]/;\n\nvar titleCase$3 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** remove this tag, and its descentents from the term */\n\n\nvar unTag$1 = function unTag(t, tag, reason, world) {\n var isVerbose = world.isVerbose(); //support '*' for removing all tags\n\n if (tag === '*') {\n t.tags = {};\n return t;\n }\n\n tag = tag.replace(/^#/, '');\n\n if (lowerCase.test(tag) === true) {\n tag = titleCase$3(tag);\n } // remove the tag\n\n\n if (t.tags[tag] === true) {\n delete t.tags[tag]; //log in verbose-mode\n\n if (isVerbose === true) {\n fns$1.logUntag(t, tag, reason);\n }\n } //delete downstream tags too\n\n\n var tagset = world.tags;\n\n if (tagset[tag]) {\n var lineage = tagset[tag].lineage;\n\n for (var i = 0; i < lineage.length; i++) {\n if (t.tags[lineage[i]] === true) {\n delete t.tags[lineage[i]];\n\n if (isVerbose === true) {\n fns$1.logUntag(t, ' - ' + lineage[i]);\n }\n }\n }\n }\n\n return t;\n}; //handle an array of tags\n\n\nvar untagAll = function untagAll(term, tags, reason, world) {\n if (typeof tags !== 'string' && tags) {\n for (var i = 0; i < tags.length; i++) {\n unTag$1(term, tags[i], reason, world);\n }\n\n return;\n }\n\n unTag$1(term, tags, reason, world);\n};\n\nvar unTag_1$1 = untagAll;\n\nvar canBe$2 = function canBe(term, tag, world) {\n var tagset = world.tags; // cleanup tag\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n } //fail-fast\n\n\n if (tagset[tag] === undefined) {\n return true;\n } //loop through tag's contradictory tags\n\n\n var enemies = tagset[tag].notA || [];\n\n for (var i = 0; i < enemies.length; i++) {\n if (term.tags[enemies[i]] === true) {\n return false;\n }\n }\n\n if (tagset[tag].isA !== undefined) {\n return canBe(term, tagset[tag].isA, world); //recursive\n }\n\n return true;\n};\n\nvar canBe_1$1 = canBe$2;\n\n/** add a tag or tags, and their descendents to this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\nvar tag_1 = function tag_1(tags, reason, world) {\n add(this, tags, reason, world);\n return this;\n};\n/** only tag this term if it's consistent with it's current tags */\n\n\nvar tagSafe$1 = function tagSafe(tags, reason, world) {\n if (canBe_1$1(this, tags, world)) {\n add(this, tags, reason, world);\n }\n\n return this;\n};\n/** remove a tag or tags, and their descendents from this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\n\nvar unTag_1 = function unTag_1(tags, reason, world) {\n unTag_1$1(this, tags, reason, world);\n return this;\n};\n/** is this tag consistent with the word's current tags?\n * @param {string | string[]} tags - a tag or tags\n * @returns {boolean}\n */\n\n\nvar canBe_1 = function canBe_1(tags, world) {\n return canBe_1$1(this, tags, world);\n};\n\nvar tag$1 = {\n tag: tag_1,\n tagSafe: tagSafe$1,\n unTag: unTag_1,\n canBe: canBe_1\n};\n\nvar Term = /*#__PURE__*/function () {\n function Term() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n _classCallCheck(this, Term);\n\n text = String(text);\n var obj = parse$2(text); // the various forms of our text\n\n this.text = obj.text || '';\n this.clean = obj.clean;\n this.reduced = obj.reduced;\n this.root = null;\n this.implicit = null;\n this.pre = obj.pre || '';\n this.post = obj.post || '';\n this.tags = {};\n this.prev = null;\n this.next = null;\n this.id = _id(obj.clean);\n this.isA = 'Term'; // easier than .constructor...\n // support alternative matches\n\n if (obj.alias) {\n this.alias = obj.alias;\n }\n }\n /** set the text of the Term to something else*/\n\n\n _createClass(Term, [{\n key: \"set\",\n value: function set(str) {\n var obj = parse$2(str);\n this.text = obj.text;\n this.clean = obj.clean;\n return this;\n }\n }]);\n\n return Term;\n}();\n/** create a deep-copy of this term */\n\n\nTerm.prototype.clone = function () {\n var term = new Term(this.text);\n term.pre = this.pre;\n term.post = this.post;\n term.clean = this.clean;\n term.reduced = this.reduced;\n term.root = this.root;\n term.implicit = this.implicit;\n term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc)\n // term.id = this.id\n\n return term;\n};\n\nObject.assign(Term.prototype, methods$8);\nObject.assign(Term.prototype, tag$1);\nvar Term_1 = Term;\n\n/** return a flat array of Term objects */\nvar terms = function terms(n) {\n if (this.length === 0) {\n return [];\n } // use cache, if it exists\n\n\n if (this.cache.terms) {\n if (n !== undefined) {\n return this.cache.terms[n];\n }\n\n return this.cache.terms;\n }\n\n var terms = [this.pool.get(this.start)];\n\n for (var i = 0; i < this.length - 1; i += 1) {\n var id = terms[terms.length - 1].next;\n\n if (id === null) {\n // throw new Error('linked-list broken')\n console.error(\"Compromise error: Linked list broken in phrase '\" + this.start + \"'\");\n break;\n }\n\n var term = this.pool.get(id);\n terms.push(term); //return this one?\n\n if (n !== undefined && n === i) {\n return terms[n];\n }\n }\n\n if (n === undefined) {\n this.cache.terms = terms;\n }\n\n if (n !== undefined) {\n return terms[n];\n }\n\n return terms;\n};\n/** return a shallow or deep copy of this phrase */\n\n\nvar clone$1 = function clone(isShallow) {\n var _this = this;\n\n if (isShallow) {\n var p = this.buildFrom(this.start, this.length);\n p.cache = this.cache;\n return p;\n } //how do we clone part of the pool?\n\n\n var terms = this.terms();\n var newTerms = terms.map(function (t) {\n return t.clone();\n }); // console.log(newTerms)\n //connect these new ids up\n\n newTerms.forEach(function (t, i) {\n //add it to the pool..\n _this.pool.add(t);\n\n if (newTerms[i + 1]) {\n t.next = newTerms[i + 1].id;\n }\n\n if (newTerms[i - 1]) {\n t.prev = newTerms[i - 1].id;\n }\n });\n return this.buildFrom(newTerms[0].id, newTerms.length);\n};\n/** return last term object */\n\n\nvar lastTerm = function lastTerm() {\n var terms = this.terms();\n return terms[terms.length - 1];\n};\n/** quick lookup for a term id */\n\n\nvar hasId = function hasId(wantId) {\n if (this.length === 0 || !wantId) {\n return false;\n }\n\n if (this.start === wantId) {\n return true;\n } // use cache, if available\n\n\n if (this.cache.terms) {\n var _terms = this.cache.terms;\n\n for (var i = 0; i < _terms.length; i++) {\n if (_terms[i].id === wantId) {\n return true;\n }\n }\n\n return false;\n } // otherwise, go through each term\n\n\n var lastId = this.start;\n\n for (var _i = 0; _i < this.length - 1; _i += 1) {\n var term = this.pool.get(lastId);\n\n if (term === undefined) {\n console.error(\"Compromise error: Linked list broken. Missing term '\".concat(lastId, \"' in phrase '\").concat(this.start, \"'\\n\")); // throw new Error('linked List error')\n\n return false;\n }\n\n if (term.next === wantId) {\n return true;\n }\n\n lastId = term.next;\n }\n\n return false;\n};\n/** how many seperate, non-empty words is it? */\n\n\nvar wordCount = function wordCount() {\n return this.terms().filter(function (t) {\n return t.text !== '';\n }).length;\n};\n/** get the full-sentence this phrase belongs to */\n\n\nvar fullSentence = function fullSentence() {\n var t = this.terms(0); //find first term in sentence\n\n while (t.prev) {\n t = this.pool.get(t.prev);\n }\n\n var start = t.id;\n var len = 1; //go to end of sentence\n\n while (t.next) {\n t = this.pool.get(t.next);\n len += 1;\n }\n\n return this.buildFrom(start, len);\n};\n\nvar _01Utils$1 = {\n terms: terms,\n clone: clone$1,\n lastTerm: lastTerm,\n hasId: hasId,\n wordCount: wordCount,\n fullSentence: fullSentence\n};\n\nvar trimEnd = function trimEnd(str) {\n return str.replace(/ +$/, '');\n};\n/** produce output in the given format */\n\n\nvar text$1 = function text() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var isFirst = arguments.length > 1 ? arguments[1] : undefined;\n var isLast = arguments.length > 2 ? arguments[2] : undefined;\n\n if (typeof options === 'string') {\n if (options === 'normal') {\n options = {\n whitespace: true,\n unicode: true,\n lowercase: true,\n punctuation: true,\n acronyms: true,\n abbreviations: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'clean') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'reduced') {\n options = {\n punctuation: false,\n //Hmm: is this reversed?\n titlecase: false,\n lowercase: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: true\n };\n } else if (options === 'implicit') {\n options = {\n punctuation: true,\n implicit: true,\n whitespace: true,\n trim: true\n };\n } else if (options === 'root') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n root: true\n };\n } else {\n options = {};\n }\n }\n\n var terms = this.terms(); //this this phrase a complete sentence?\n\n var isFull = false;\n\n if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) {\n isFull = true;\n }\n\n var text = terms.reduce(function (str, t, i) {\n // don't output intro space for a contraction-match i'm good => \"[am] good\"\n if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) {\n return str;\n }\n\n options.last = isLast && i === terms.length - 1;\n var showPre = true;\n var showPost = true;\n\n if (isFull === false) {\n // dont show beginning whitespace\n if (i === 0 && isFirst) {\n showPre = false;\n } // dont show end-whitespace\n\n\n if (i === terms.length - 1 && isLast) {\n showPost = false;\n }\n }\n\n var txt = t.textOut(options, showPre, showPost); // console.log(terms)\n // if (options.titlecase && i === 0) {\n // txt = titleCase(txt)\n // }\n\n return str + txt;\n }, ''); //full-phrases show punctuation, but not whitespace\n\n if (isFull === true && isLast) {\n text = trimEnd(text);\n }\n\n if (options.trim === true) {\n text = text.trim();\n }\n\n return text;\n};\n\nvar _02Text = {\n text: text$1\n};\n\n/** remove start and end whitespace */\nvar trim = function trim() {\n var terms = this.terms();\n\n if (terms.length > 0) {\n //trim starting\n terms[0].pre = terms[0].pre.replace(/^\\s+/, ''); //trim ending\n\n var lastTerm = terms[terms.length - 1];\n lastTerm.post = lastTerm.post.replace(/\\s+$/, '');\n }\n\n return this;\n};\n\nvar _03Change = {\n trim: trim\n};\n\nvar endOfSentence = /[.?!]\\s*$/; // replacing a 'word.' with a 'word!'\n\nvar combinePost = function combinePost(before, after) {\n //only transfer the whitespace\n if (endOfSentence.test(after)) {\n var whitespace = before.match(/\\s*$/);\n return after + whitespace;\n }\n\n return before;\n}; //add whitespace to the start of the second bit\n\n\nvar addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) {\n // add any existing pre-whitespace to beginning\n newTerms[0].pre = beforeTerms[0].pre;\n var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms\n\n var newTerm = newTerms[newTerms.length - 1];\n newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation\n\n lastTerm.post = ''; //before ←[space] - after\n\n if (lastTerm.post === '') {\n lastTerm.post += ' ';\n }\n}; //insert this segment into the linked-list\n\n\nvar stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) {\n var lastBefore = beforeTerms[beforeTerms.length - 1];\n var lastNew = newTerms[newTerms.length - 1];\n var afterId = lastBefore.next; //connect ours in (main → newPhrase)\n\n lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after)\n\n lastNew.next = afterId; //do it backwards, too\n\n if (afterId) {\n // newPhrase ← after\n var afterTerm = pool.get(afterId);\n afterTerm.prev = lastNew.id;\n } // before ← newPhrase\n\n\n var beforeId = beforeTerms[0].id;\n\n if (beforeId) {\n var newTerm = newTerms[0];\n newTerm.prev = beforeId;\n }\n}; // avoid stretching a phrase twice.\n\n\nvar unique$5 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another.\n\n\nvar appendPhrase = function appendPhrase(before, newPhrase, doc) {\n var beforeTerms = before.terms();\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list\n\n stitchIn$1(beforeTerms, newTerms, before.pool); // stretch!\n // make each effected phrase longer\n\n var toStretch = [before];\n var hasId = before.start;\n var docs = [doc];\n docs = docs.concat(doc.parents()); // find them all!\n\n docs.forEach(function (parent) {\n // only the phrases that should change\n var shouldChange = parent.list.filter(function (p) {\n return p.hasId(hasId);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count a phrase\n\n toStretch = unique$5(toStretch);\n toStretch.forEach(function (p) {\n p.length += newPhrase.length;\n });\n before.cache = {};\n return before;\n};\n\nvar append = appendPhrase;\n\nvar hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one\n// '[new] [◻old]' -or- '[old] [◻new] [old]'\n\nvar addWhitespace = function addWhitespace(newTerms) {\n //add a space before our new text?\n // add a space after our text\n var lastTerm = newTerms[newTerms.length - 1];\n\n if (hasSpace.test(lastTerm.post) === false) {\n lastTerm.post += ' ';\n }\n\n return;\n}; //insert this segment into the linked-list\n\n\nvar stitchIn = function stitchIn(main, newPhrase, newTerms) {\n // [newPhrase] → [main]\n var lastTerm = newTerms[newTerms.length - 1];\n lastTerm.next = main.start; // [before] → [main]\n\n var pool = main.pool;\n var start = pool.get(main.start);\n\n if (start.prev) {\n var before = pool.get(start.prev);\n before.next = newPhrase.start;\n } //do it backwards, too\n // before ← newPhrase\n\n\n newTerms[0].prev = main.terms(0).prev; // newPhrase ← main\n\n main.terms(0).prev = lastTerm.id;\n};\n\nvar unique$4 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another\n\n\nvar joinPhrase = function joinPhrase(original, newPhrase, doc) {\n var starterId = original.start;\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace(newTerms); //insert this segment into the linked-list\n\n stitchIn(original, newPhrase, newTerms); //increase the length of our phrases\n\n var toStretch = [original];\n var docs = [doc];\n docs = docs.concat(doc.parents());\n docs.forEach(function (d) {\n // only the phrases that should change\n var shouldChange = d.list.filter(function (p) {\n return p.hasId(starterId) || p.hasId(newPhrase.start);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count\n\n toStretch = unique$4(toStretch); // stretch these phrases\n\n toStretch.forEach(function (p) {\n p.length += newPhrase.length; // change the start too, if necessary\n\n if (p.start === starterId) {\n p.start = newPhrase.start;\n }\n\n p.cache = {};\n });\n return original;\n};\n\nvar prepend = joinPhrase;\n\n//recursively decrease the length of all the parent phrases\nvar shrinkAll = function shrinkAll(doc, id, deleteLength, after) {\n var arr = doc.parents();\n arr.push(doc);\n arr.forEach(function (d) {\n //find our phrase to shrink\n var phrase = d.list.find(function (p) {\n return p.hasId(id);\n });\n\n if (!phrase) {\n return;\n }\n\n phrase.length -= deleteLength; // does it start with this soon-removed word?\n\n if (phrase.start === id) {\n phrase.start = after.id;\n }\n\n phrase.cache = {};\n }); // cleanup empty phrase objects\n\n doc.list = doc.list.filter(function (p) {\n if (!p.start || !p.length) {\n return false;\n }\n\n return true;\n });\n};\n/** wrap the linked-list around these terms\n * so they don't appear any more\n */\n\n\nvar deletePhrase = function deletePhrase(phrase, doc) {\n var pool = doc.pool();\n var terms = phrase.terms(); //grab both sides of the chain,\n\n var prev = pool.get(terms[0].prev) || {};\n var after = pool.get(terms[terms.length - 1].next) || {};\n\n if (terms[0].implicit && prev.implicit) {\n prev.set(prev.implicit);\n prev.post += ' ';\n } // //first, change phrase lengths\n\n\n shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after]\n\n if (prev) {\n prev.next = after.id;\n } // connect [prev]<-[after]\n\n\n if (after) {\n after.prev = prev.id;\n } // lastly, actually delete the terms from the pool?\n // for (let i = 0; i < terms.length; i++) {\n // pool.remove(terms[i].id)\n // }\n\n};\n\nvar _delete$1 = deletePhrase;\n\n/** put this text at the end */\n\nvar append_1 = function append_1(newPhrase, doc) {\n append(this, newPhrase, doc);\n return this;\n};\n/** add this text to the beginning */\n\n\nvar prepend_1 = function prepend_1(newPhrase, doc) {\n prepend(this, newPhrase, doc);\n return this;\n};\n\nvar _delete = function _delete(doc) {\n _delete$1(this, doc);\n return this;\n}; // stich-in newPhrase, stretch 'doc' + parents\n\n\nvar replace$1 = function replace(newPhrase, doc) {\n //add it do the end\n var firstLength = this.length;\n append(this, newPhrase, doc); //delete original terms\n\n var tmp = this.buildFrom(this.start, this.length);\n tmp.length = firstLength;\n _delete$1(tmp, doc);\n};\n/**\n * Turn this phrase object into 3 phrase objects\n */\n\n\nvar splitOn = function splitOn(p) {\n var terms = this.terms();\n var result = {\n before: null,\n match: null,\n after: null\n };\n var index = terms.findIndex(function (t) {\n return t.id === p.start;\n });\n\n if (index === -1) {\n return result;\n } //make all three sections into phrase-objects\n\n\n var start = terms.slice(0, index);\n\n if (start.length > 0) {\n result.before = this.buildFrom(start[0].id, start.length);\n }\n\n var match = terms.slice(index, index + p.length);\n\n if (match.length > 0) {\n result.match = this.buildFrom(match[0].id, match.length);\n }\n\n var end = terms.slice(index + p.length, terms.length);\n\n if (end.length > 0) {\n result.after = this.buildFrom(end[0].id, end.length, this.pool);\n }\n\n return result;\n};\n\nvar _04Insert = {\n append: append_1,\n prepend: prepend_1,\n \"delete\": _delete,\n replace: replace$1,\n splitOn: splitOn\n};\n\n/** return json metadata for this phrase */\nvar json = function json() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var res = {}; // text data\n\n if (options.text) {\n res.text = this.text();\n }\n\n if (options.normal) {\n res.normal = this.text('normal');\n }\n\n if (options.clean) {\n res.clean = this.text('clean');\n }\n\n if (options.reduced) {\n res.reduced = this.text('reduced');\n }\n\n if (options.implicit) {\n res.implicit = this.text('implicit');\n }\n\n if (options.root) {\n res.root = this.text('root');\n }\n\n if (options.trim) {\n if (res.text) {\n res.text = res.text.trim();\n }\n\n if (res.normal) {\n res.normal = res.normal.trim();\n }\n\n if (res.reduced) {\n res.reduced = res.reduced.trim();\n }\n } // terms data\n\n\n if (options.terms) {\n if (options.terms === true) {\n options.terms = {};\n }\n\n res.terms = this.terms().map(function (t) {\n return t.json(options.terms, world);\n });\n }\n\n return res;\n};\n\nvar _05Json = {\n json: json\n};\n\n/** match any terms after this phrase */\nvar lookAhead = function lookAhead(regs) {\n // if empty match string, return everything after\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getAfter = function getAfter(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getAfter(term.next); //recursion\n }\n };\n\n var all = this.terms();\n var lastTerm = all[all.length - 1];\n getAfter(lastTerm.next);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[0].id, terms.length);\n return p.match(regs);\n};\n/** match any terms before this phrase */\n\n\nvar lookBehind = function lookBehind(regs) {\n // if empty match string, return everything before\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getBefore = function getBefore(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getBefore(term.prev); //recursion\n }\n };\n\n var term = pool.get(this.start);\n getBefore(term.prev);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[terms.length - 1].id, terms.length);\n return p.match(regs);\n};\n\nvar _06Lookahead = {\n lookAhead: lookAhead,\n lookBehind: lookBehind\n};\n\nvar methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead);\n\n// try to avoid doing the match\nvar failFast$1 = function failFast(p, regs) {\n if (regs.length === 0) {\n return true;\n }\n\n for (var i = 0; i < regs.length; i += 1) {\n var reg = regs[i]; //logical quick-ones\n\n if (reg.optional !== true && reg.negative !== true) {\n //start/end impossibilites\n if (reg.start === true && i > 0) {\n return true;\n }\n } //this is not possible\n\n\n if (reg.anything === true && reg.negative === true) {\n return true;\n }\n }\n\n return false;\n};\n\nvar _02FailFast = failFast$1;\n\nvar _matchLogic = createCommonjsModule(function (module, exports) {\n //found a match? it's greedy? keep going!\n exports.getGreedy = function (state, endReg) {\n // for greedy checking, we no longer care about the reg.start\n // value, and leaving it can cause failures for anchored greedy\n // matches. ditto for end-greedy matches: we need an earlier non-\n // ending match to succceed until we get to the actual end.\n var reg = Object.assign({}, state.regs[state.r], {\n start: false,\n end: false\n });\n var start = state.t;\n\n for (; state.t < state.terms.length; state.t += 1) {\n //stop for next-reg match\n if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) {\n return state.t;\n }\n\n var count = state.t - start + 1; // is it max-length now?\n\n if (reg.max !== undefined && count === reg.max) {\n return state.t;\n } //stop here\n\n\n if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null;\n }\n\n return state.t;\n }\n }\n\n return state.t;\n }; //'unspecific greedy' is a weird situation.\n\n\n exports.greedyTo = function (state, nextReg) {\n var t = state.t; //if there's no next one, just go off the end!\n\n if (!nextReg) {\n return state.terms.length;\n } //otherwise, we're looking for the next one\n\n\n for (; t < state.terms.length; t += 1) {\n if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) {\n return t;\n }\n } //guess it doesn't exist, then.\n\n\n return null;\n }; //we have a special case where an end-anchored greedy match may need to\n //start matching before the actual end; we do this by (temporarily!)\n //removing the \"end\" property from the matching token... since this is\n //very situation-specific, we *only* do this when we really need to.\n\n\n exports.isEndGreedy = function (reg, state) {\n if (reg.end === true && reg.greedy === true) {\n if (state.start_i + state.t < state.phrase_length - 1) {\n var tmpReg = Object.assign({}, reg, {\n end: false\n });\n\n if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) {\n return true;\n }\n }\n }\n\n return false;\n }; // match complex OR cases like (a|b|foo bar)\n\n\n exports.doOrBlock = function (state) {\n var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var block = state.regs[state.r];\n var wasFound = false; // do each multiword sequence\n\n for (var c = 0; c < block.choices.length; c += 1) {\n // try to match this list of tokens\n var regs = block.choices[c];\n wasFound = regs.every(function (cr, w_index) {\n var extra = 0;\n var t = state.t + w_index + skipN + extra;\n\n if (state.terms[t] === undefined) {\n return false;\n }\n\n var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)'\n\n if (foundBlock === true && cr.greedy === true) {\n for (var i = 1; i < state.terms.length; i += 1) {\n var term = state.terms[t + i];\n\n if (term) {\n var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length);\n\n if (keepGoing === true) {\n extra += 1;\n } else {\n break;\n }\n }\n }\n }\n\n skipN += extra;\n return foundBlock;\n });\n\n if (wasFound) {\n skipN += regs.length;\n break;\n }\n } // we found a match - is it greedy though?\n\n\n if (wasFound && block.greedy === true) {\n return exports.doOrBlock(state, skipN); // try it again!\n }\n\n return skipN;\n }; // match AND cases like (#Noun && foo)\n\n\n exports.doAndBlock = function (state) {\n var longest = 0; // all blocks must match, and we return the greediest match\n\n var reg = state.regs[state.r];\n var allDidMatch = reg.choices.every(function (block) {\n // for multi-word blocks, all must match\n var allWords = block.every(function (cr, w_index) {\n var tryTerm = state.t + w_index;\n\n if (state.terms[tryTerm] === undefined) {\n return false;\n }\n\n return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length);\n });\n\n if (allWords === true && block.length > longest) {\n longest = block.length;\n }\n\n return allWords;\n });\n\n if (allDidMatch === true) {\n return longest;\n }\n\n return false;\n }; // get or create named group\n\n\n exports.getGroup = function (state, term_index, name) {\n if (state.groups[state.groupId]) {\n return state.groups[state.groupId];\n }\n\n var termId = state.terms[term_index].id;\n state.groups[state.groupId] = {\n group: String(name),\n start: termId,\n length: 0\n };\n return state.groups[state.groupId];\n };\n});\n\n/** tries to match a sequence of terms, starting from here */\n\nvar tryHere = function tryHere(terms, regs, start_i, phrase_length) {\n // all the variables that matter\n var state = {\n t: 0,\n //the term index we're on\n terms: terms,\n //the working slice of term objects\n r: 0,\n // the reg index we're on\n regs: regs,\n //our match conditions\n groups: {},\n //all named-group matches\n start_i: start_i,\n // term index we're starting from\n phrase_length: phrase_length,\n // # of terms in the sentence\n hasGroup: false,\n groupId: null,\n previousGroup: null\n }; // we must satisfy each rule in 'regs'\n\n for (; state.r < regs.length; state.r += 1) {\n var reg = regs[state.r]; // Check if this reg has a named capture group\n\n state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same\n\n if (state.hasGroup === true) {\n var prev = regs[state.r - 1];\n\n if (prev && prev.named === reg.named && state.previousGroup) {\n state.groupId = state.previousGroup;\n } else {\n state.groupId = _id(reg.named);\n state.previousGroup = state.groupId;\n }\n } //have we run-out of terms?\n\n\n if (!state.terms[state.t]) {\n //are all remaining regs optional or negative?\n var haveNeeds = regs.slice(state.r).some(function (remain) {\n return !remain.optional;\n });\n\n if (haveNeeds === false) {\n break; //done!\n }\n\n return null; // die\n } //support 'unspecific greedy' .* properly\n\n\n if (reg.anything === true && reg.greedy === true) {\n var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough\n\n if (reg.min !== undefined && skipto - state.t < reg.min) {\n return null;\n } // reduce it back, if it's too long\n\n\n if (reg.max !== undefined && skipto - state.t > reg.max) {\n state.t = state.t + reg.max;\n continue;\n }\n\n if (skipto === null) {\n return null; //couldn't find it\n } // is it really this easy?....\n\n\n if (state.hasGroup === true) {\n var g = _matchLogic.getGroup(state, state.t, reg.named);\n g.length = skipto - state.t;\n }\n\n state.t = skipto;\n continue;\n } // support multi-word OR (a|b|foo bar)\n\n\n if (reg.choices !== undefined && reg.operator === 'or') {\n var skipNum = _matchLogic.doOrBlock(state);\n\n if (skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g.length += skipNum;\n }\n\n state.t += skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // support AND (#Noun && foo) blocks\n\n\n if (reg.choices !== undefined && reg.operator === 'and') {\n var _skipNum = _matchLogic.doAndBlock(state);\n\n if (_skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g2 = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g2.length += _skipNum;\n }\n\n state.t += _skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // ok, finally test the term/reg\n\n\n var term = state.terms[state.t];\n var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length);\n\n if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) {\n var startAt = state.t; // if it's a negative optional match... :0\n\n if (reg.optional && regs[state.r + 1] && reg.negative) {\n continue;\n } // okay, it was a match, but if it's optional too,\n // we should check the next reg too, to skip it?\n\n\n if (reg.optional && regs[state.r + 1]) {\n // does the next reg match it too?\n var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length);\n\n if (reg.negative || nextRegMatched) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n var nextTerm = state.terms[state.t + 1];\n\n if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) {\n state.r += 1;\n }\n }\n } //advance to the next term!\n\n\n state.t += 1; //check any ending '$' flags\n\n if (reg.end === true) {\n //if this isn't the last term, refuse the match\n if (state.t !== state.terms.length && reg.greedy !== true) {\n return null; //die\n }\n } //try keep it going!\n\n\n if (reg.greedy === true) {\n state.t = _matchLogic.getGreedy(state, regs[state.r + 1]);\n\n if (state.t === null) {\n return null; //greedy was too short\n }\n\n if (reg.min && reg.min > state.t) {\n return null; //greedy was too short\n } // if this was also an end-anchor match, check to see we really\n // reached the end\n\n\n if (reg.end === true && state.start_i + state.t !== phrase_length) {\n return null; //greedy didn't reach the end\n }\n }\n\n if (state.hasGroup === true) {\n // Get or create capture group\n var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length\n\n\n if (state.t > 1 && reg.greedy) {\n _g3.length += state.t - startAt;\n } else {\n _g3.length++;\n }\n }\n\n continue;\n } // ok, it doesn't match.\n // did it *actually match* a negative?\n\n\n if (reg.negative) {\n var tmpReg = Object.assign({}, reg);\n tmpReg.negative = false; // try removing it\n\n var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length);\n\n if (foundNeg === true) {\n return null; //bye!\n }\n } //bah, who cares, keep going\n\n\n if (reg.optional === true) {\n continue;\n } // should we skip-over an implicit word?\n\n\n if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) {\n // if the last match was implicit too, we're missing a word.\n if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) {\n return null;\n } // does the next one match?\n\n\n if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) {\n state.t += 2;\n continue;\n }\n }\n\n return null; //die\n } //return our result\n\n\n return {\n match: state.terms.slice(0, state.t),\n groups: state.groups\n };\n};\n\nvar _03TryMatch = tryHere;\n\n// final checks on the validity of our results\nvar postProcess$1 = function postProcess(terms, regs, matches) {\n if (!matches || matches.length === 0) {\n return matches;\n } // ensure end reg has the end term\n\n\n var atEnd = regs.some(function (r) {\n return r.end;\n });\n\n if (atEnd) {\n var lastTerm = terms[terms.length - 1];\n matches = matches.filter(function (_ref) {\n var arr = _ref.match;\n return arr.indexOf(lastTerm) !== -1;\n });\n }\n\n return matches;\n};\n\nvar _04PostProcess = postProcess$1;\n\n// supported suffix-flags:\n// suffixes: ? ] + * $ {2,6} ~\n// [\\?\\]\\+\\*\\$~]*\n// prefixes: ! [ ^\n// [\\!\\[\\^]*\n// match 'foo /yes/' and not 'foo/no/bar'\nvar bySlashes = /(?:^|\\s)([\\!\\[\\^]*(?:<[^<]*>)?\\/.*?[^\\\\\\/]\\/[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // match '(yes) but not foo(no)bar'\n\nvar byParentheses = /([\\!\\[\\^]*(?:<[^<]*>)?\\([^\\)]+[^\\\\\\)]\\)[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // okay\n\nvar byWord = / /g;\n\nvar isBlock = function isBlock(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\(/.test(str) && /\\)[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar isReg = function isReg(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\//.test(str) && /\\/[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar cleanUp = function cleanUp(arr) {\n arr = arr.map(function (str) {\n return str.trim();\n });\n arr = arr.filter(function (str) {\n return str;\n });\n return arr;\n};\n\nvar parseBlocks = function parseBlocks(txt) {\n // parse by /regex/ first\n var arr = txt.split(bySlashes);\n var res = []; // parse by (blocks), next\n\n arr.forEach(function (str) {\n if (isReg(str)) {\n res.push(str);\n return;\n }\n\n res = res.concat(str.split(byParentheses));\n });\n res = cleanUp(res); // split by spaces, now\n\n var _final = [];\n res.forEach(function (str) {\n if (isBlock(str)) {\n _final.push(str);\n } else if (isReg(str)) {\n _final.push(str);\n } else {\n _final = _final.concat(str.split(byWord));\n }\n });\n _final = cleanUp(_final);\n return _final;\n};\n\nvar _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses))\n\n/* break-down a match expression into this:\n{\n word:'',\n tag:'',\n regex:'',\n\n start:false,\n end:false,\n negative:false,\n anything:false,\n greedy:false,\n optional:false,\n\n named:'',\n choices:[],\n}\n*/\nvar hasMinMax = /\\{([0-9]+,?[0-9]*)\\}/;\nvar andSign = /&&/;\nvar captureName = new RegExp(/^<\\s*?(\\S+)\\s*?>/);\n\nvar titleCase$2 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar end = function end(str) {\n return str[str.length - 1];\n};\n\nvar start = function start(str) {\n return str[0];\n};\n\nvar stripStart = function stripStart(str) {\n return str.substr(1);\n};\n\nvar stripEnd = function stripEnd(str) {\n return str.substr(0, str.length - 1);\n};\n\nvar stripBoth = function stripBoth(str) {\n str = stripStart(str);\n str = stripEnd(str);\n return str;\n}; //\n\n\nvar parseToken = function parseToken(w) {\n var obj = {}; //collect any flags (do it twice)\n\n for (var i = 0; i < 2; i += 1) {\n //end-flag\n if (end(w) === '$') {\n obj.end = true;\n w = stripEnd(w);\n } //front-flag\n\n\n if (start(w) === '^') {\n obj.start = true;\n w = stripStart(w);\n } //capture group (this one can span multiple-terms)\n\n\n if (start(w) === '[' || end(w) === ']') {\n obj.named = true;\n\n if (start(w) === '[') {\n obj.groupType = end(w) === ']' ? 'single' : 'start';\n } else {\n obj.groupType = 'end';\n }\n\n w = w.replace(/^\\[/, '');\n w = w.replace(/\\]$/, ''); // Use capture group name\n\n if (start(w) === '<') {\n var res = captureName.exec(w);\n\n if (res.length >= 2) {\n obj.named = res[1];\n w = w.replace(res[0], '');\n }\n }\n } //back-flags\n\n\n if (end(w) === '+') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (end(w) === '?') {\n obj.optional = true;\n w = stripEnd(w);\n }\n\n if (start(w) === '!') {\n obj.negative = true; // obj.optional = true\n\n w = stripStart(w);\n } //wrapped-flags\n\n\n if (start(w) === '(' && end(w) === ')') {\n // support (one && two)\n if (andSign.test(w)) {\n obj.choices = w.split(andSign);\n obj.operator = 'and';\n } else {\n obj.choices = w.split('|');\n obj.operator = 'or';\n } //remove '(' and ')'\n\n\n obj.choices[0] = stripStart(obj.choices[0]);\n var last = obj.choices.length - 1;\n obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results\n\n obj.choices = obj.choices.map(function (s) {\n return s.trim();\n });\n obj.choices = obj.choices.filter(function (s) {\n return s;\n }); //recursion alert!\n\n obj.choices = obj.choices.map(function (str) {\n return str.split(/ /g).map(parseToken);\n });\n w = '';\n } //regex\n\n\n if (start(w) === '/' && end(w) === '/') {\n w = stripBoth(w);\n obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp\n\n return obj;\n } //soft-match\n\n\n if (start(w) === '~' && end(w) === '~') {\n w = stripBoth(w);\n obj.soft = true;\n obj.word = w;\n return obj;\n }\n } // support #Tag{1,9}\n\n\n if (hasMinMax.test(w) === true) {\n w = w.replace(hasMinMax, function (a, b) {\n var arr = b.split(/,/g);\n\n if (arr.length === 1) {\n // '{3}'\tExactly three times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[0]);\n } else {\n // '{2,4}' Two to four times\n // '{3,}' Three or more times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[1] || 999);\n } // use same method as '+'\n\n\n obj.greedy = true; // 0 as min means the same as '?'\n\n obj.optional = true;\n return '';\n });\n } //do the actual token content\n\n\n if (start(w) === '#') {\n obj.tag = stripStart(w);\n obj.tag = titleCase$2(obj.tag);\n return obj;\n } //dynamic function on a term object\n\n\n if (start(w) === '@') {\n obj.method = stripStart(w);\n return obj;\n }\n\n if (w === '.') {\n obj.anything = true;\n return obj;\n } //support alone-astrix\n\n\n if (w === '*') {\n obj.anything = true;\n obj.greedy = true;\n obj.optional = true;\n return obj;\n }\n\n if (w) {\n //somehow handle encoded-chars?\n w = w.replace('\\\\*', '*');\n w = w.replace('\\\\.', '.');\n obj.word = w.toLowerCase();\n }\n\n return obj;\n};\n\nvar _02ParseToken = parseToken;\n\n// name any [unnamed] capture-groups with a number\nvar nameGroups = function nameGroups(tokens) {\n var convert = false;\n var index = -1;\n var current; //'fill in' capture groups between start-end\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]; // Give name to un-named single tokens\n\n if (token.groupType === 'single' && token.named === true) {\n index += 1;\n token.named = index;\n continue;\n } // Start converting tokens\n\n\n if (token.groupType === 'start') {\n convert = true;\n\n if (typeof token.named === 'string' || typeof token.named === 'number') {\n current = token.named;\n } else {\n index += 1;\n current = index;\n }\n } // Ensure this token has the right name\n\n\n if (convert) {\n token.named = current;\n } // Stop converting tokens\n\n\n if (token.groupType === 'end') {\n convert = false;\n }\n }\n\n return tokens;\n}; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word\n\n\nvar doFastOrMode = function doFastOrMode(tokens) {\n return tokens.map(function (token) {\n if (token.choices !== undefined) {\n // are they all straight-up words? then optimize them.\n var shouldPack = token.choices.every(function (block) {\n if (block.length !== 1) {\n return false;\n }\n\n var reg = block[0];\n\n if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) {\n return true; //reg is simple-enough\n }\n\n return false;\n });\n\n if (shouldPack === true) {\n var oneOf = {};\n token.choices.forEach(function (block) {\n oneOf[block[0].word] = true;\n });\n token.fastOr = oneOf;\n delete token.choices;\n }\n }\n\n return token;\n });\n}; // allow multiword OR (foo|one two)\n// const doMultiWord = function (tokens) {\n// return tokens.map(token => {\n// if (token.choices !== undefined) {\n// let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false\n// if (isMulti !== false) {\n// token.multiword = true\n// // turn all choices into arrays\n// token.choices = token.choices.map(choice => {\n// if (choice.word) {\n// choice.sequence = choice.word.split(hasASpace)\n// delete choice.word\n// }\n// return choice\n// })\n// }\n// }\n// return token\n// })\n// }\n// const doBlockMode = function (tokens) {\n// return tokens.map(token => {\n// // we've already setup fastOr mode\n// if (token.choices !== undefined) {\n// // console.log(token)\n// }\n// return token\n// })\n// }\n\n\nvar postProcess = function postProcess(tokens) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // ensure all capture groups are filled between start and end\n // give all capture groups names\n var count = tokens.filter(function (t) {\n return t.groupType;\n }).length;\n\n if (count > 0) {\n tokens = nameGroups(tokens);\n } // convert 'choices' format to 'fastOr' format\n\n\n if (!opts.fuzzy) {\n tokens = doFastOrMode(tokens);\n } // support multiword OR (foo bar|baz)\n // tokens = doMultiWord(tokens)\n // support (one two three)\n // tokens = doBlockMode(tokens)\n\n\n return tokens;\n};\n\nvar _03PostProcess = postProcess;\n\nvar isArray$2 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn an array into a 'choices' list\n\n\nvar byArray = function byArray(arr) {\n var blocks = arr.map(function (s) {\n return [{\n word: s\n }];\n });\n return [{\n choices: blocks,\n operator: 'or'\n }];\n}; // turn a Doc object into a reg of ids to lookup\n\n\nvar fromDoc = function fromDoc(doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return [];\n }\n\n var regs = [];\n doc.list.forEach(function (p) {\n var ids = [];\n p.terms().forEach(function (t) {\n ids.push(t.id);\n });\n regs.push(ids);\n });\n return [{\n idBlocks: regs\n }];\n}; // add fuzziness etc to each reg\n\n\nvar addOptions = function addOptions(tokens, opts) {\n // add default fuzzy-search limit\n if (opts.fuzzy === true) {\n opts.fuzzy = 0.85;\n }\n\n if (typeof opts.fuzzy === 'number') {\n tokens = tokens.map(function (reg) {\n // add a fuzzy-match on 'word' tokens\n if (opts.fuzzy > 0 && reg.word) {\n reg.fuzzy = opts.fuzzy;\n } //add it to or|and choices too\n\n\n if (reg.choices) {\n reg.choices.forEach(function (block) {\n block.forEach(function (r) {\n r.fuzzy = opts.fuzzy;\n });\n });\n }\n\n return reg;\n });\n }\n\n return tokens;\n};\n/** parse a match-syntax string into json */\n\n\nvar syntax = function syntax(input) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // fail-fast\n if (input === null || input === undefined || input === '') {\n return [];\n } //try to support a ton of different formats:\n\n\n if (_typeof(input) === 'object') {\n if (isArray$2(input)) {\n if (input.length === 0 || !input[0]) {\n return [];\n } //is it a pre-parsed reg-list?\n\n\n if (_typeof(input[0]) === 'object') {\n return input;\n } //support a flat array of normalized words\n\n\n if (typeof input[0] === 'string') {\n return byArray(input);\n }\n } //support passing-in a compromise object as a match\n\n\n if (input && input.isA === 'Doc') {\n return fromDoc(input);\n }\n\n return [];\n }\n\n if (typeof input === 'number') {\n input = String(input); //go for it?\n }\n\n var tokens = _01ParseBlocks(input); //turn them into objects\n\n tokens = tokens.map(function (str) {\n return _02ParseToken(str);\n }); //clean up anything weird\n\n tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc\n\n tokens = addOptions(tokens, opts); // console.log(tokens)\n\n return tokens;\n};\n\nvar matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)'))\n\n// match an explicit sequence of term ids\n// take a phrase and find any of the idBlocks in it\nvar idLookup = function idLookup(terms, regs) {\n var matches = [];\n var blocklist = regs[0].idBlocks;\n\n var _loop = function _loop(_t) {\n blocklist.forEach(function (block) {\n if (block.length === 0) {\n t = _t;\n return;\n }\n\n var foundAll = block.every(function (id, i) {\n t = _t;\n return terms[_t + i].id === id;\n });\n\n if (foundAll) {\n matches.push({\n match: terms.slice(_t, _t + block.length)\n }); // skip top-loop forward\n\n _t += block.length - 1;\n }\n });\n t = _t;\n };\n\n for (var t = 0; t < terms.length; t += 1) {\n _loop(t);\n }\n\n return matches;\n};\n\nvar idLookup_1 = idLookup;\n\n/** returns a simple array of arrays */\n\nvar matchAll = function matchAll(p, regs) {\n var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n //if we forgot to parse it..\n if (typeof regs === 'string') {\n regs = matchSyntax(regs);\n } //try to dismiss it, at-once\n\n\n if (_02FailFast(p, regs) === true) {\n return [];\n } //any match needs to be this long, at least\n\n\n var minLength = regs.filter(function (r) {\n return r.optional !== true && r.negative !== true;\n }).length;\n var terms = p.terms();\n var matches = []; // these id-lookups can be super-fast\n\n if (regs[0].idBlocks) {\n var res = idLookup_1(terms, regs);\n\n if (res && res.length > 0) {\n return _04PostProcess(terms, regs, res);\n }\n } //optimisation for '^' start logic\n\n\n if (regs[0].start === true) {\n var _res = _03TryMatch(terms, regs, 0, terms.length);\n\n if (_res && _res.match && _res.match.length > 0) {\n _res.match = _res.match.filter(function (m) {\n return m;\n });\n matches.push(_res);\n }\n\n return _04PostProcess(terms, regs, matches);\n } //try starting, from every term\n\n\n for (var i = 0; i < terms.length; i += 1) {\n // slice may be too short\n if (i + minLength > terms.length) {\n break;\n } //try it!\n\n\n var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length);\n\n if (_res2 && _res2.match && _res2.match.length > 0) {\n //zoom forward!\n i += _res2.match.length - 1; //[capture-groups] return some null responses\n\n _res2.match = _res2.match.filter(function (m) {\n return m;\n });\n matches.push(_res2); //ok, maybe that's enough?\n\n if (matchOne === true) {\n return _04PostProcess(terms, regs, matches);\n }\n }\n }\n\n return _04PostProcess(terms, regs, matches);\n};\n\nvar _01MatchAll = matchAll;\n\n/** return anything that doesn't match.\n * returns a simple array of arrays\n */\n\nvar notMatch = function notMatch(p, regs) {\n var found = {};\n var arr = _01MatchAll(p, regs);\n arr.forEach(function (_ref) {\n var ts = _ref.match;\n ts.forEach(function (t) {\n found[t.id] = true;\n });\n }); //return anything not found\n\n var terms = p.terms();\n var result = [];\n var current = [];\n terms.forEach(function (t) {\n if (found[t.id] === true) {\n if (current.length > 0) {\n result.push(current);\n current = [];\n }\n\n return;\n }\n\n current.push(t);\n });\n\n if (current.length > 0) {\n result.push(current);\n }\n\n return result;\n};\n\nvar not$1 = notMatch;\n\n/** return an array of matching phrases */\n\nvar match_1 = function match_1(regs) {\n var _this = this;\n\n var justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var matches = _01MatchAll(this, regs, justOne); //make them phrase objects\n\n matches = matches.map(function (_ref) {\n var match = _ref.match,\n groups = _ref.groups;\n\n var p = _this.buildFrom(match[0].id, match.length, groups);\n\n p.cache.terms = match;\n return p;\n });\n return matches;\n};\n/** return boolean if one match is found */\n\n\nvar has = function has(regs) {\n var matches = _01MatchAll(this, regs, true);\n return matches.length > 0;\n};\n/** remove all matches from the result */\n\n\nvar not = function not(regs) {\n var _this2 = this;\n\n var matches = not$1(this, regs); //make them phrase objects\n\n matches = matches.map(function (list) {\n return _this2.buildFrom(list[0].id, list.length);\n });\n return matches;\n};\n/** return a list of phrases that can have this tag */\n\n\nvar canBe$1 = function canBe(tag, world) {\n var _this3 = this;\n\n var results = [];\n var terms = this.terms();\n var previous = false;\n\n for (var i = 0; i < terms.length; i += 1) {\n var can = terms[i].canBe(tag, world);\n\n if (can === true) {\n if (previous === true) {\n //add it to the end\n results[results.length - 1].push(terms[i]);\n } else {\n results.push([terms[i]]); //make a new one\n }\n\n previous = can;\n }\n } //turn them into Phrase objects\n\n\n results = results.filter(function (a) {\n return a.length > 0;\n }).map(function (arr) {\n return _this3.buildFrom(arr[0].id, arr.length);\n });\n return results;\n};\n\nvar match = {\n match: match_1,\n has: has,\n not: not,\n canBe: canBe$1\n};\n\nvar Phrase = function Phrase(id, length, pool) {\n _classCallCheck(this, Phrase);\n\n this.start = id;\n this.length = length;\n this.isA = 'Phrase'; // easier than .constructor...\n\n Object.defineProperty(this, 'pool', {\n enumerable: false,\n writable: true,\n value: pool\n });\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, 'groups', {\n enumerable: false,\n writable: true,\n value: {}\n });\n};\n/** create a new Phrase object from an id and length */\n\n\nPhrase.prototype.buildFrom = function (id, length, groups) {\n var p = new Phrase(id, length, this.pool); //copy-over or replace capture-groups too\n\n if (groups && Object.keys(groups).length > 0) {\n p.groups = groups;\n } else {\n p.groups = this.groups;\n }\n\n return p;\n}; //apply methods\n\n\nObject.assign(Phrase.prototype, match);\nObject.assign(Phrase.prototype, methods$7); //apply aliases\n\nvar aliases$1 = {\n term: 'terms'\n};\nObject.keys(aliases$1).forEach(function (k) {\n return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]];\n});\nvar Phrase_1 = Phrase;\n\n/** a key-value store of all terms in our Document */\nvar Pool = /*#__PURE__*/function () {\n function Pool() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Pool);\n\n //quiet this property in console.logs\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: words\n });\n }\n /** throw a new term object in */\n\n\n _createClass(Pool, [{\n key: \"add\",\n value: function add(term) {\n this.words[term.id] = term;\n return this;\n }\n /** find a term by it's id */\n\n }, {\n key: \"get\",\n value: function get(id) {\n return this.words[id];\n }\n /** find a term by it's id */\n\n }, {\n key: \"remove\",\n value: function remove(id) {\n delete this.words[id];\n }\n }, {\n key: \"merge\",\n value: function merge(pool) {\n Object.assign(this.words, pool.words);\n return this;\n }\n /** helper method */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length\n };\n }\n }]);\n\n return Pool;\n}();\n/** make a deep-copy of all terms */\n\n\nPool.prototype.clone = function () {\n var _this = this;\n\n var keys = Object.keys(this.words);\n var words = keys.reduce(function (h, k) {\n var t = _this.words[k].clone();\n\n h[t.id] = t;\n return h;\n }, {});\n return new Pool(words);\n};\n\nvar Pool_1 = Pool;\n\n//add forward/backward 'linked-list' prev/next ids\nvar linkTerms = function linkTerms(terms) {\n terms.forEach(function (term, i) {\n if (i > 0) {\n term.prev = terms[i - 1].id;\n }\n\n if (terms[i + 1]) {\n term.next = terms[i + 1].id;\n }\n });\n};\n\nvar _linkTerms = linkTerms;\n\n//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.\n// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n// @spencermountain 2017 MIT\n//proper nouns with exclamation marks\n// const blacklist = {\n// yahoo: true,\n// joomla: true,\n// jeopardy: true,\n// }\n//regs-\nvar initSplit = /(\\S.+?[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049])(?=\\s+|$)/g;\nvar hasSomething = /\\S/;\nvar isAcronym$1 = /[ .][A-Z]\\.? *$/i;\nvar hasEllipse = /(?:\\u2026|\\.{2,}) *$/;\nvar newLine = /((?:\\r?\\n|\\r)+)/; // Match different new-line formats\n\nvar hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i;\nvar startWhitespace = /^\\s+/; // Start with a regex:\n\nvar naiive_split = function naiive_split(text) {\n var all = []; //first, split by newline\n\n var lines = text.split(newLine);\n\n for (var i = 0; i < lines.length; i++) {\n //split by period, question-mark, and exclamation-mark\n var arr = lines[i].split(initSplit);\n\n for (var o = 0; o < arr.length; o++) {\n all.push(arr[o]);\n }\n }\n\n return all;\n};\n/** does this look like a sentence? */\n\n\nvar isSentence = function isSentence(str, abbrevs) {\n // check for 'F.B.I.'\n if (isAcronym$1.test(str) === true) {\n return false;\n } //check for '...'\n\n\n if (hasEllipse.test(str) === true) {\n return false;\n } // must have a letter\n\n\n if (hasLetter.test(str) === false) {\n return false;\n }\n\n var txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '');\n var words = txt.split(' ');\n var lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.'\n\n if (abbrevs.hasOwnProperty(lastWord)) {\n return false;\n } // //check for jeopardy!\n // if (blacklist.hasOwnProperty(lastWord)) {\n // return false\n // }\n\n\n return true;\n};\n\nvar splitSentences = function splitSentences(text, world) {\n var abbrevs = world.cache.abbreviations;\n text = text || '';\n text = String(text);\n var sentences = []; // First do a greedy-split..\n\n var chunks = []; // Ensure it 'smells like' a sentence\n\n if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n return sentences;\n } // cleanup unicode-spaces\n\n\n text = text.replace('\\xa0', ' '); // Start somewhere:\n\n var splits = naiive_split(text); // Filter-out the crap ones\n\n for (var i = 0; i < splits.length; i++) {\n var s = splits[i];\n\n if (s === undefined || s === '') {\n continue;\n } //this is meaningful whitespace\n\n\n if (hasSomething.test(s) === false) {\n //add it to the last one\n if (chunks[chunks.length - 1]) {\n chunks[chunks.length - 1] += s;\n continue;\n } else if (splits[i + 1]) {\n //add it to the next one\n splits[i + 1] = s + splits[i + 1];\n continue;\n }\n } //else, only whitespace, no terms, no sentence\n\n\n chunks.push(s);\n } //detection of non-sentence chunks:\n //loop through these chunks, and join the non-sentence chunks back together..\n\n\n for (var _i = 0; _i < chunks.length; _i++) {\n var c = chunks[_i]; //should this chunk be combined with the next one?\n\n if (chunks[_i + 1] && isSentence(c, abbrevs) === false) {\n chunks[_i + 1] = c + (chunks[_i + 1] || '');\n } else if (c && c.length > 0) {\n //&& hasLetter.test(c)\n //this chunk is a proper sentence..\n sentences.push(c);\n chunks[_i] = '';\n }\n } //if we never got a sentence, return the given text\n\n\n if (sentences.length === 0) {\n return [text];\n } //move whitespace to the ends of sentences, when possible\n //['hello',' world'] -> ['hello ','world']\n\n\n for (var _i2 = 1; _i2 < sentences.length; _i2 += 1) {\n var ws = sentences[_i2].match(startWhitespace);\n\n if (ws !== null) {\n sentences[_i2 - 1] += ws[0];\n sentences[_i2] = sentences[_i2].replace(startWhitespace, '');\n }\n }\n\n return sentences;\n};\n\nvar _01Sentences = splitSentences; // console.log(sentence_parser('john f. kennedy'));\n\nvar wordlike = /\\S/;\nvar isBoundary = /^[!?.]+$/;\nvar naiiveSplit = /(\\S+)/;\nvar isSlash = /[a-z] ?\\/ ?[a-z]*$/;\nvar notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '\"', \"'\", '`'];\nnotWord = notWord.reduce(function (h, c) {\n h[c] = true;\n return h;\n}, {});\n\nvar hasHyphen = function hasHyphen(str) {\n //dont split 're-do'\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n return false;\n } //letter-number 'aug-20'\n\n\n var reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)(-|–|—)([a-z0-9\\u00C0-\\u00FF].*)/i;\n\n if (reg.test(str) === true) {\n return true;\n } //number-letter '20-aug'\n\n\n var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\\u00C0-\\u00FF`\"'/-]+$)/i;\n\n if (reg2.test(str) === true) {\n return true;\n } //support weird number-emdash combo '2010–2011'\n // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i\n // if (reg2.test(str)) {\n // return true\n // }\n\n\n return false;\n}; // 'he / she' should be one word\n\n\nvar combineSlashes = function combineSlashes(arr) {\n for (var i = 1; i < arr.length - 1; i++) {\n if (isSlash.test(arr[i])) {\n arr[i - 1] += arr[i] + arr[i + 1];\n arr[i] = null;\n arr[i + 1] = null;\n }\n }\n\n return arr;\n};\n\nvar splitHyphens = function splitHyphens(word) {\n var arr = []; //support multiple-hyphenated-terms\n\n var hyphens = word.split(/[-–—]/);\n var whichDash = '-';\n var found = word.match(/[-–—]/);\n\n if (found && found[0]) {\n whichDash = found;\n }\n\n for (var o = 0; o < hyphens.length; o++) {\n if (o === hyphens.length - 1) {\n arr.push(hyphens[o]);\n } else {\n arr.push(hyphens[o] + whichDash);\n }\n }\n\n return arr;\n};\n\nvar isArray$1 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn a string into an array of strings (naiive for now, lumped later)\n\n\nvar splitWords = function splitWords(str) {\n var result = [];\n var arr = []; //start with a naiive split\n\n str = str || '';\n\n if (typeof str === 'number') {\n str = String(str);\n }\n\n if (isArray$1(str)) {\n return str;\n }\n\n var words = str.split(naiiveSplit);\n\n for (var i = 0; i < words.length; i++) {\n //split 'one-two'\n if (hasHyphen(words[i]) === true) {\n arr = arr.concat(splitHyphens(words[i]));\n continue;\n }\n\n arr.push(words[i]);\n } //greedy merge whitespace+arr to the right\n\n\n var carry = '';\n\n for (var _i = 0; _i < arr.length; _i++) {\n var word = arr[_i]; //if it's more than a whitespace\n\n if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n //put whitespace on end of previous term, if possible\n if (result.length > 0) {\n result[result.length - 1] += carry;\n result.push(word);\n } else {\n //otherwise, but whitespace before\n result.push(carry + word);\n }\n\n carry = '';\n } else {\n carry += word;\n }\n } //handle last one\n\n\n if (carry) {\n if (result.length === 0) {\n result[0] = '';\n }\n\n result[result.length - 1] += carry; //put it on the end\n } // combine 'one / two'\n\n\n result = combineSlashes(result); // remove empty results\n\n result = result.filter(function (s) {\n return s;\n });\n return result;\n};\n\nvar _02Words = splitWords;\n\nvar isArray = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n/** turn a string into an array of Phrase objects */\n\n\nvar fromText = function fromText() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var pool = arguments.length > 2 ? arguments[2] : undefined;\n var sentences = null; //a bit of validation, first\n\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text);\n } else if (isArray(text)) {\n sentences = text;\n }\n } //tokenize into words\n\n\n sentences = sentences || _01Sentences(text, world);\n sentences = sentences.map(function (str) {\n return _02Words(str);\n }); //turn them into proper objects\n\n pool = pool || new Pool_1();\n var phrases = sentences.map(function (terms) {\n terms = terms.map(function (str) {\n var term = new Term_1(str);\n pool.add(term);\n return term;\n }); //add next/previous ids\n\n _linkTerms(terms); //return phrase objects\n\n var p = new Phrase_1(terms[0].id, terms.length, pool);\n p.cache.terms = terms;\n return p;\n }); //return them ready for a Document object\n\n return phrases;\n};\n\nvar _01Tokenizer = fromText;\n\nvar fromJSON = function fromJSON(json, world) {\n var pool = new Pool_1();\n var phrases = json.map(function (p, k) {\n var terms = p.terms.map(function (o, i) {\n var term = new Term_1(o.text);\n term.pre = o.pre !== undefined ? o.pre : '';\n\n if (o.post === undefined) {\n o.post = ' '; //no given space for very last term\n\n if (i >= p.terms.length - 1) {\n o.post = '. ';\n\n if (k >= p.terms.length - 1) {\n o.post = '.';\n }\n }\n }\n\n term.post = o.post !== undefined ? o.post : ' ';\n\n if (o.tags) {\n o.tags.forEach(function (tag) {\n return term.tag(tag, '', world);\n });\n }\n\n pool.add(term);\n return term;\n }); //add prev/next links\n\n _linkTerms(terms); // return a proper Phrase object\n\n return new Phrase_1(terms[0].id, terms.length, pool);\n });\n return phrases;\n};\n\nvar fromJSON_1 = fromJSON;\n\nvar _version = '13.10.5';\n\nvar entity = ['Person', 'Place', 'Organization'];\nvar nouns$1 = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural'\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun'\n },\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization', 'Date']\n },\n FirstName: {\n isA: 'Person'\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName']\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName']\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName']\n },\n NickName: {\n isA: 'Person',\n notA: ['FirstName', 'LastName']\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName', 'Value']\n },\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization']\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City']\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country']\n },\n Region: {\n isA: ['Place', 'ProperNoun']\n },\n Address: {\n isA: 'Place'\n },\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place']\n },\n SportsTeam: {\n isA: 'Organization'\n },\n School: {\n isA: 'Organization'\n },\n Company: {\n isA: 'Organization'\n },\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular']\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun'\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place']\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity\n },\n //`john's`\n Possessive: {\n isA: 'Noun' // notA: 'Pronoun',\n\n }\n};\n\nvar verbs$1 = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value']\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'FutureTense']\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund']\n },\n //close the door!\n Imperative: {\n isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'],\n\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense']\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense']\n },\n // will walk\n FutureTense: {\n isA: 'Verb'\n },\n // is\n Copula: {\n isA: 'Verb'\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive']\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund'\n },\n Pluperfect: {\n isA: 'Verb'\n },\n // shown\n Participle: {\n isA: 'PastTense'\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb'\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb'\n },\n //this can be an adverb\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value']\n }\n};\n\nvar values = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal']\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal']\n },\n Fraction: {\n isA: 'Value',\n notA: ['Noun']\n },\n RomanNumeral: {\n isA: 'Cardinal',\n //can be a person, too\n notA: ['Ordinal', 'TextValue']\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue']\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue']\n },\n Money: {\n isA: 'Cardinal'\n },\n Percent: {\n isA: 'Value'\n }\n};\n\nvar anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord'];\nvar misc$1 = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value']\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective']\n },\n // better\n Comparative: {\n isA: ['Adjective']\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative']\n },\n NumberRange: {\n isA: ['Contraction']\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value']\n },\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Adverb', 'Preposition', 'Adjective']\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time']\n },\n WeekDay: {\n isA: ['Date', 'Noun']\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n notA: ['Adjective', 'ProperNoun']\n },\n // '9:20pm'\n Time: {\n isA: ['Date'],\n notA: ['AtMention']\n },\n //glue\n Determiner: {\n notA: anything\n },\n Conjunction: {\n notA: anything\n },\n Preposition: {\n notA: anything\n },\n // what, who, why\n QuestionWord: {\n notA: ['Determiner']\n },\n // peso, euro\n Currency: {\n isA: ['Noun']\n },\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb']\n },\n // dr.\n Abbreviation: {},\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email']\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n //non-exclusive\n Acronym: {\n notA: ['Plural', 'RomanNumeral']\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value']\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value']\n }\n};\n\n// i just made these up\nvar colorMap = {\n Noun: 'blue',\n Verb: 'green',\n Negative: 'green',\n Date: 'red',\n Value: 'red',\n Adjective: 'magenta',\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan'\n};\n/** add a debug color to some tags */\n\nvar addColors = function addColors(tags) {\n Object.keys(tags).forEach(function (k) {\n // assigned from plugin, for example\n if (tags[k].color) {\n tags[k].color = tags[k].color;\n return;\n } // defined above\n\n\n if (colorMap[k]) {\n tags[k].color = colorMap[k];\n return;\n }\n\n tags[k].isA.some(function (t) {\n if (colorMap[t]) {\n tags[k].color = colorMap[t];\n return true;\n }\n\n return false;\n });\n });\n return tags;\n};\n\nvar _color = addColors;\n\nvar unique$3 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; //add 'downward' tags (that immediately depend on this one)\n\n\nvar inferIsA = function inferIsA(tags) {\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k];\n var len = tag.isA.length;\n\n for (var i = 0; i < len; i++) {\n var down = tag.isA[i];\n\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA);\n }\n } // clean it up\n\n\n tag.isA = unique$3(tag.isA);\n });\n return tags;\n};\n\nvar _isA = inferIsA;\n\nvar unique$2 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; // crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\n\n\nvar inferNotA = function inferNotA(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.notA = tag.notA || [];\n tag.isA.forEach(function (down) {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n var notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || [];\n tag.notA = tag.notA.concat(notA);\n }\n }); // any tag that lists us as a conflict, we conflict it back.\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key);\n }\n } // clean it up\n\n\n tag.notA = unique$2(tag.notA);\n });\n return tags;\n};\n\nvar _notA = inferNotA;\n\n// a lineage is all 'incoming' tags that have this as 'isA'\nvar inferLineage = function inferLineage(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.lineage = []; // find all tags with it in their 'isA' set\n\n for (var i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i]);\n }\n }\n });\n return tags;\n};\n\nvar _lineage = inferLineage;\n\nvar validate = function validate(tags) {\n // cleanup format\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k]; // ensure isA is an array\n\n tag.isA = tag.isA || [];\n\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA];\n } // ensure notA is an array\n\n\n tag.notA = tag.notA || [];\n\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA];\n }\n });\n return tags;\n}; // build-out the tag-graph structure\n\n\nvar inferTags = function inferTags(tags) {\n // validate data\n tags = validate(tags); // build its 'down tags'\n\n tags = _isA(tags); // infer the conflicts\n\n tags = _notA(tags); // debug tag color\n\n tags = _color(tags); // find incoming links\n\n tags = _lineage(tags);\n return tags;\n};\n\nvar inference = inferTags;\n\nvar addIn = function addIn(obj, tags) {\n Object.keys(obj).forEach(function (k) {\n tags[k] = obj[k];\n });\n};\n\nvar build = function build() {\n var tags = {};\n addIn(nouns$1, tags);\n addIn(verbs$1, tags);\n addIn(values, tags);\n addIn(misc$1, tags); // do the graph-stuff\n\n tags = inference(tags);\n return tags;\n};\n\nvar tags = build();\n\nvar _data = {\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc\",\n \"Copula\": \"true¦a1is,w0;as,ere;m,re\",\n \"PastTense\": \"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan\",\n \"Condition\": \"true¦if,lest,unless\",\n \"Preposition\": \"true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Gerund\": \"true¦accord0be0develop0go0result0stain0;ing\",\n \"Negative\": \"true¦n0;ever,o0;!n,t\",\n \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n \"Plural\": \"true¦records\",\n \"Conjunction\": \"true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Abbreviation\": \"true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:15;1:12;2:18;a15b0Sc0Jd0Ce09f04gZhViUjel0kitty,lSmOnNoMpHquestionGrEs9t6u4w3;ay,om02;nc0Zs 3;doll0Kst0M; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoMt3uper bowl,yst14;ep4ri2u3;de0Xff;faSmoS;st1ze;al0i2o3;om,se;! mark;a6i1la5r4u3;dPrpoH;eroga00ie0Gobl0U;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em\",\n \"FemaleName\": \"true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt\",\n \"Honorific\": \"true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al\",\n \"SportsTeam\": \"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls\",\n \"Uncountable\": \"true¦0:1I;1:16;2:1X;a1Rb1Jc1Ad17e10f0Ug0Nh0Ii0Ej0Dknowled1Ql08mYnews,oXpTrOsDt8vi7w3;a5ea0Bi4oo3;d,l;ldlife,ne;rmth,t0;neg17ol0Ctae;e6h5oothpaste,r3una;affTou3;ble,sers,t;ermod1Mund0;a,nnis;aBcene0Aeri1hAil9kittl1now,o8p6t4u3;g10nshi0Q;ati1Le3;am,el;ace1Ee3;ci1ed;ap,cc0;k,v0;eep,ingl1;d0Dfe18l3nd,tish;m11t;a6e4ic3;e,ke0M;c3laxa0Isearch;ogni0Hrea0H;bi1in;aPe5hys2last9o3ress04;l3rk,w0;it2yA;a12trZ;bstetr2il,xygen;aAe8ilk,o5u3;mps,s3;ic;n3o0I;ey,o3;gamy;a3chan2;sl1t;chine3il,themat2; learn0Bry;aught0e5i4ogi0Su3;ck,g0I;ce,ghtn08ngui0QteratN;a3isM;th0;ewelAusti0L;ce,mp3nformaUtself;a3ortan0J;ti3;en0H;a6isto5o3;ck3mework,n3spitali0B;ey;ry;ir,libut,ppiD;ene6o4r3um,ymna0D;aCound;l3ssip;d,f; 3t2;editQpo3;ol;i7lour,o4urnit3;ure;od,rgive3uri0wl;ne3;ss;c9sh;conom2duca8lectr7n5quip6th2very3;body,o3thH;ne;joy3tertain3;ment;iciPon2;tiI;ar4iabet1raugh4;es;ts;aAelcius,h6iv2l5o3urrency;al,ld w3nfusiDttD;ar;ass2oth5;aos,e3;e4w3;ing;se;r7sh;a7eef,i4lood,owls,read,utt0;er;lliar4s3;on;ds;g3ss;ga3;ge;c8dvi7ero5ir4mnes3rt,thlet2;ty;craft;b2d3naut2;ynam2;ce;id,ou3;st2;ics\",\n \"Infinitive\": \"true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s\",\n \"Organization\": \"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c\",\n \"Demonym\": \"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n \"Possessive\": \"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne\",\n \"Currency\": \"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s\",\n \"City\": \"true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",\n \"Country\": \"true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an\",\n \"Region\": \"true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma\",\n \"Place\": \"true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s\",\n \"MaleName\": \"true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:B6;7:CW;8:C8;9:DK;A:DL;B:A6;C:C2;aCObBLcAJd9He8Nf85g7Ih6Ui6Ej5Ek52l4Dm35n2To2Np2Fqu2Dr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Tkaria,n5W;hEkD;!aCM;ar5WeCL;aLoFuD;sDu2KvBY;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBMssX;avi3ho4;aMeKiFoDyaC2;jcie8Clfgang,odrow,utD;!er;lDnst1;bFey,frD1lD;aBDiD;am,e,s;e9Fur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5C;avAWeDist0oy,um0;ntAOv5Zy;bGdFmDny;!as,mDoharu;aCTie,y;!d;iBy;mDt5;!my,othy;adFeoEia8GomD;!as;!do8P;!de5;dGrD;en9LrD;an9KeDy;ll,n9J;!dy;dgh,ha,iDnn3req,tsu4T;cB5ka;aTcotRePhLiJoHpenc3tDur1Vylve9Kzym1;anFeDua8D;f0phBTvDwa8C;e62ie;!islaw,l8;lom1nBFuD;leyma7ta;dDlBm1yabonga;!dhart7Bn8;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y7;aDbasti0k2Al4Rrg4Oth,ymoAU;m5n;!tD;!ie,y;lEmDnti2Eq5Bul;!ke5MmCu4;ik,vato7X;aYeUheAAiQoHuEyD;an,ou;b7NdEf5pe7SssD;!elBZ;ol3Fy;an,bKcJdIel,geHh0landBQmGnFry,sEyD;!ce;coe,s;!aAHnC;an,eo;l47r;e5Og3n8olfo,ri7A;co,ky;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on\",\n \"LastName\": \"true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta\",\n \"WeekDay\": \"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",\n \"Month\": \"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il\",\n \"Date\": \"true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w\",\n \"FirstName\": \"true¦aKblair,cGdevFgabrieEhinaDjBk8l7m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is\",\n \"Person\": \"true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er\",\n \"Verb\": \"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en\",\n \"PhrasalVerb\": \"true¦0:7E;1:72;2:7Q;3:7G;4:6V;5:7T;6:7I;7:6O;8:71;9:6P;A:5T;B:7C;C:7J;D:6Q;E:7L;F:7D;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietDr1Ms0FtVuTvacuum 1wLyammerBzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r7s7;eel Fip G;aJiIn2L;gh 0Crd0;n Fr 3S;it 60k7lk6rm 6Bsh 7Lt6Ov53;rgeBsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleDp G;ckDde 02;neDp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov8up;aIe 4Vll52;m 1r 01;ckBke Jlk I;ov8u53;aIba4d2in,o3Fup;ba4ft8p58w3;a0Nc0Me0Gh0Ci09l05m04n03o02pXquare WtOuMwI;earKiI;ngJtch I;aw3ba4o75; by;ck Iit 1m 1ss0;in,up;aNe10iMoKrIucH;aigh1ZiI;ke 6En3C;p Irm22;by,in,oC;nHr 1tc3V;cHmp0nd Ir6Xve6y 1;ba4d2up;d2oCup;arHeLiKlJrIurB;ingBuc7;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row F;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v8;gn 4WngJt Iz7;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v7;aTeQiPoLuI;b 4Sle0n Istl7;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arEin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleBess JiLoI;p 1;ah1Ron;iIp 5Fr3XurDwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leBn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt F;arrowDerd0oI;d6teD;aQeNiMoKuI;ddl7lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur7lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft8ba4d2forw2Jin45ov8uI;nd8p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arEd2;av1Mt 36velI; o3T;c7p 1sh ItchBugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic7mpA;ke30tD;c39zz 1;aUePiMoJuI;nkerDrry 1s0Z;lIneArse2W;d Ie 1;ba4d2fast,o05up;de Jt I;ba4on,up;aw3o5;aIlp0;d Kl 2Ar It 1;fIof;rom;in,oXu1H;cHm 1nJve Iz25;it,to;d Ig 2EkerK;d2in,o5;aWeQive Oloss 22oKrJunI; f0Q;in3Gow 2A; Iof 0Y;aJb1Dit,oIrEt0Su18;ff,n,v8;bo5ft8hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrEup;ff,n,ut,v8;cJhIl1WrEt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownBy 1;aw3oC;eIshe1N; 1z7;lKol I;aIwi1G;bo5rE;d 9low 1;aJeIip0;sh0;g 9ke0mIrI;e G;gPlNnLrJsIzzle0;h G;e Im 1;aw3ba4up;d0isI;h 1;e Il 19;aw3fN;ht ba4ure0;eNnJsI;s 1;cKd I;fIoC;or;e F;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v8;a4ehi20;e J;at0dge0nd Iy7;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl7;aYhVlean 9oIross Fut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd8;ogeth8;ut,v8;th,wI;ard;a4y;pIrEw3;art;eIipA;ck FeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Ft6;ry JvI;e 01;aw3o18;l ImD;aIba4d2o16up;rEw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t F;in,o5up;e I;ov8;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrEw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgDil 9n7oLssKttlJunce Ix F;aw3ba4;e 9; arE;k Ft 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov8up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h F;ainBe F;g FkB; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arEo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt\",\n \"Comparable\": \"true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd\",\n \"TextOrdinal\": \"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th\",\n \"Cardinal\": \"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s\",\n \"Expression\": \"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la\",\n \"Adverb\": \"true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Determiner\": \"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n};\n\nvar seq = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n cache$1 = seq.split(\"\").reduce(function (n, o, e) {\n return n[o] = e, n;\n}, {}),\n toAlphaCode = function toAlphaCode(n) {\n if (void 0 !== seq[n]) return seq[n];\n var o = 1,\n e = 36,\n t = \"\";\n\n for (; n >= e; n -= e, o++, e *= 36) {\n }\n\n for (; o--;) {\n var _o = n % 36;\n\n t = String.fromCharCode((_o < 10 ? 48 : 55) + _o) + t, n = (n - _o) / 36;\n }\n\n return t;\n},\n fromAlphaCode = function fromAlphaCode(n) {\n if (void 0 !== cache$1[n]) return cache$1[n];\n var o = 0,\n e = 1,\n t = 36,\n r = 1;\n\n for (; e < n.length; o += t, e++, t *= 36) {\n }\n\n for (var _e = n.length - 1; _e >= 0; _e--, r *= 36) {\n var _t = n.charCodeAt(_e) - 48;\n\n _t > 10 && (_t -= 7), o += _t * r;\n }\n\n return o;\n};\n\nvar encoding = {\n toAlphaCode: toAlphaCode,\n fromAlphaCode: fromAlphaCode\n},\n symbols = function symbols(n) {\n var o = new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");\n\n for (var e = 0; e < n.nodes.length; e++) {\n var t = o.exec(n.nodes[e]);\n\n if (!t) {\n n.symCount = e;\n break;\n }\n\n n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]);\n }\n\n n.nodes = n.nodes.slice(n.symCount, n.nodes.length);\n};\n\nvar indexFromRef = function indexFromRef(n, o, e) {\n var t = encoding.fromAlphaCode(o);\n return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount;\n},\n toArray = function toArray(n) {\n var o = [],\n e = function e(t, r) {\n var s = n.nodes[t];\n \"!\" === s[0] && (o.push(r), s = s.slice(1));\n var c = s.split(/([A-Z0-9,]+)/g);\n\n for (var _s = 0; _s < c.length; _s += 2) {\n var u = c[_s],\n i = c[_s + 1];\n if (!u) continue;\n var l = r + u;\n\n if (\",\" === i || void 0 === i) {\n o.push(l);\n continue;\n }\n\n var f = indexFromRef(n, i, t);\n e(f, l);\n }\n };\n\n return e(0, \"\"), o;\n},\n unpack = function unpack(n) {\n var o = {\n nodes: n.split(\";\"),\n syms: [],\n symCount: 0\n };\n return n.match(\":\") && symbols(o), toArray(o);\n};\n\nvar unpack_1$1 = unpack,\n unpack_1$1$1 = function unpack_1$1$1(n) {\n var o = n.split(\"|\").reduce(function (n, o) {\n var e = o.split(\"¦\");\n return n[e[0]] = e[1], n;\n }, {}),\n e = {};\n return Object.keys(o).forEach(function (n) {\n var t = unpack_1$1(o[n]);\n \"true\" === n && (n = !0);\n\n for (var _o2 = 0; _o2 < t.length; _o2++) {\n var r = t[_o2];\n !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n;\n }\n }), e;\n};\n\nvar efrtUnpack_min = unpack_1$1$1;\n\n//words that can't be compressed, for whatever reason\nvar misc = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n 'motel 6': 'Organization',\n g8: 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date',\n her: ['Possessive', 'Pronoun'],\n his: ['Possessive', 'Pronoun'],\n their: ['Possessive', 'Pronoun'],\n themselves: ['Possessive', 'Pronoun'],\n your: ['Possessive', 'Pronoun'],\n our: ['Possessive', 'Pronoun'],\n my: ['Possessive', 'Pronoun'],\n its: ['Possessive', 'Pronoun']\n};\n\nvar fancy = {\n Unit: function Unit(lex, w) {\n lex[w] = ['Abbreviation', 'Unit'];\n },\n Cardinal: function Cardinal(lex, w) {\n lex[w] = ['TextValue', 'Cardinal'];\n },\n TextOrdinal: function TextOrdinal(lex, w) {\n lex[w] = ['Ordinal', 'TextValue'];\n lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths'\n },\n // add plural/singular forms\n Singular: function Singular(lex, w, world) {\n lex[w] = 'Singular';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || 'Plural';\n },\n // conjugate these verbs\n Infinitive: function Infinitive(lex, w, world) {\n lex[w] = 'Infinitive';\n var conj = world.transforms.conjugate(w, world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]];\n lex[str] = lex[str] || tags[i]; // only if it's safe\n }\n },\n // conjugate other Adjectival forms\n Comparable: function Comparable(lex, w, world) {\n lex[w] = 'Comparable';\n var conj = world.transforms.adjectives(w);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var word = conj[tags[i]];\n lex[word] = lex[word] || tags[i]; // only if it's safe\n }\n },\n //conjugate phrasal-verbs\n PhrasalVerb: function PhrasalVerb(lex, w, world) {\n // whole thing\n lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form\n\n var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive'\n // //conjugate first word\n\n var conj = world.transforms.conjugate(words[0], world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]] + ' ' + words[1];\n lex[str] = lex[str] || ['PhrasalVerb', tags[i]];\n world.hasCompound[conj[tags[i]]] = true;\n }\n },\n // inflect our demonyms - 'germans'\n Demonym: function Demonym(lex, w, world) {\n lex[w] = 'Demonym';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe\n }\n}; // let a user explode their lexicon, too\n\nvar addWords = function addWords(wordsObj, lex, world) {\n Object.keys(wordsObj).forEach(function (word) {\n var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer\n\n if (tag === 'Abbreviation' || tag === 'Unit') {\n world.cache.abbreviations[word] = true;\n } // cache multi-words\n\n\n var multi = word.split(' ');\n\n if (multi.length > 1) {\n world.hasCompound[multi[0]] = true;\n } // do some ad-hoc work before adding it\n\n\n if (fancy[tag] !== undefined) {\n fancy[tag](lex, word, world);\n return;\n } //set it in our lexicon, basic\n\n\n if (lex[word] === undefined) {\n lex[word] = tag;\n return;\n } // if we already have that word\n\n\n if (typeof lex[word] === 'string') {\n lex[word] = [lex[word]];\n }\n\n if (typeof tag === 'string') {\n lex[word].push(tag);\n } else {\n lex[word] = lex[word].concat(tag);\n }\n });\n}; // we do some ad-hoc stuff here, building-up our word-list\n\n\nvar buildOut = function buildOut(world) {\n //our bag of words\n var lexicon = Object.assign({}, misc); // start adding words to the lex\n\n Object.keys(_data).forEach(function (tag) {\n var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks\n\n Object.keys(wordsObj).forEach(function (w) {\n wordsObj[w] = tag;\n });\n addWords(wordsObj, lexicon, world);\n }); // console.log(Object.keys(lexicon).length)\n\n return lexicon;\n};\n\nvar unpack_1 = {\n buildOut: buildOut,\n addWords: addWords\n};\n\n// add words from plurals and conjugations data\nvar addIrregulars = function addIrregulars(world) {\n //add irregular plural nouns\n var nouns = world.irregulars.nouns;\n var words = Object.keys(nouns);\n\n for (var i = 0; i < words.length; i++) {\n var w = words[i];\n world.words[w] = 'Singular';\n world.words[nouns[w]] = 'Plural';\n } // add irregular verb conjugations\n\n\n var verbs = world.irregulars.verbs;\n var keys = Object.keys(verbs);\n\n var _loop = function _loop(_i) {\n var inf = keys[_i]; //add only if it it's safe...\n\n world.words[inf] = world.words[inf] || 'Infinitive';\n var forms = world.transforms.conjugate(inf, world);\n forms = Object.assign(forms, verbs[inf]); //add the others\n\n Object.keys(forms).forEach(function (tag) {\n world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle\n\n if (world.words[forms[tag]] === 'Participle') {\n world.words[forms[tag]] = tag;\n }\n });\n };\n\n for (var _i = 0; _i < keys.length; _i++) {\n _loop(_i);\n }\n};\n\nvar addIrregulars_1 = addIrregulars;\n\n//nouns with irregular plural/singular forms\n//used in noun.inflect, and also in the lexicon.\nvar plurals = {\n addendum: 'addenda',\n alga: 'algae',\n alumna: 'alumnae',\n alumnus: 'alumni',\n analysis: 'analyses',\n antenna: 'antennae',\n appendix: 'appendices',\n avocado: 'avocados',\n axis: 'axes',\n bacillus: 'bacilli',\n barracks: 'barracks',\n beau: 'beaux',\n bus: 'buses',\n cactus: 'cacti',\n chateau: 'chateaux',\n child: 'children',\n circus: 'circuses',\n clothes: 'clothes',\n corpus: 'corpora',\n criterion: 'criteria',\n curriculum: 'curricula',\n database: 'databases',\n deer: 'deer',\n diagnosis: 'diagnoses',\n echo: 'echoes',\n embargo: 'embargoes',\n epoch: 'epochs',\n foot: 'feet',\n formula: 'formulae',\n fungus: 'fungi',\n genus: 'genera',\n goose: 'geese',\n halo: 'halos',\n hippopotamus: 'hippopotami',\n index: 'indices',\n larva: 'larvae',\n leaf: 'leaves',\n libretto: 'libretti',\n loaf: 'loaves',\n man: 'men',\n matrix: 'matrices',\n memorandum: 'memoranda',\n modulus: 'moduli',\n mosquito: 'mosquitoes',\n mouse: 'mice',\n // move: 'moves',\n nebula: 'nebulae',\n nucleus: 'nuclei',\n octopus: 'octopi',\n opus: 'opera',\n ovum: 'ova',\n ox: 'oxen',\n parenthesis: 'parentheses',\n person: 'people',\n phenomenon: 'phenomena',\n prognosis: 'prognoses',\n quiz: 'quizzes',\n radius: 'radii',\n referendum: 'referenda',\n rodeo: 'rodeos',\n sex: 'sexes',\n shoe: 'shoes',\n sombrero: 'sombreros',\n stimulus: 'stimuli',\n stomach: 'stomachs',\n syllabus: 'syllabi',\n synopsis: 'synopses',\n tableau: 'tableaux',\n thesis: 'theses',\n thief: 'thieves',\n tooth: 'teeth',\n tornado: 'tornados',\n tuxedo: 'tuxedos',\n vertebra: 'vertebrae' // virus: 'viri',\n // zero: 'zeros',\n\n};\n\n// a list of irregular verb conjugations\n// used in verbs().conjugate()\n// but also added to our lexicon\n//use shorter key-names\nvar mapping$1 = {\n g: 'Gerund',\n prt: 'Participle',\n perf: 'PerfectTense',\n pst: 'PastTense',\n fut: 'FuturePerfect',\n pres: 'PresentTense',\n pluperf: 'Pluperfect',\n a: 'Actor'\n}; // '_' in conjugations is the infinitive form\n// (order matters, to the lexicon)\n\nvar conjugations = {\n act: {\n a: '_or'\n },\n ache: {\n pst: 'ached',\n g: 'aching'\n },\n age: {\n g: 'ageing',\n pst: 'aged',\n pres: 'ages'\n },\n aim: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n arise: {\n prt: '_n',\n pst: 'arose'\n },\n babysit: {\n a: '_ter',\n pst: 'babysat'\n },\n ban: {\n a: '',\n g: '_ning',\n pst: '_ned'\n },\n be: {\n a: '',\n g: 'am',\n prt: 'been',\n pst: 'was',\n pres: 'is'\n },\n beat: {\n a: '_er',\n g: '_ing',\n prt: '_en'\n },\n become: {\n prt: '_'\n },\n begin: {\n g: '_ning',\n prt: 'begun',\n pst: 'began'\n },\n being: {\n g: 'are',\n pst: 'were',\n pres: 'are'\n },\n bend: {\n prt: 'bent'\n },\n bet: {\n a: '_ter',\n prt: '_'\n },\n bind: {\n pst: 'bound'\n },\n bite: {\n g: 'biting',\n prt: 'bitten',\n pst: 'bit'\n },\n bleed: {\n pst: 'bled',\n prt: 'bled'\n },\n blow: {\n prt: '_n',\n pst: 'blew'\n },\n boil: {\n a: '_er'\n },\n brake: {\n prt: 'broken'\n },\n \"break\": {\n pst: 'broke'\n },\n breed: {\n pst: 'bred'\n },\n bring: {\n pst: 'brought',\n prt: 'brought'\n },\n broadcast: {\n pst: '_'\n },\n budget: {\n pst: '_ed'\n },\n build: {\n pst: 'built',\n prt: 'built'\n },\n burn: {\n prt: '_ed'\n },\n burst: {\n prt: '_'\n },\n buy: {\n pst: 'bought',\n prt: 'bought'\n },\n can: {\n a: '',\n fut: '_',\n g: '',\n pst: 'could',\n perf: 'could',\n pluperf: 'could',\n pres: '_'\n },\n \"catch\": {\n pst: 'caught'\n },\n choose: {\n g: 'choosing',\n prt: 'chosen',\n pst: 'chose'\n },\n cling: {\n prt: 'clung'\n },\n come: {\n prt: '_',\n pst: 'came',\n g: 'coming'\n },\n compete: {\n a: 'competitor',\n g: 'competing',\n pst: '_d'\n },\n cost: {\n pst: '_'\n },\n creep: {\n prt: 'crept'\n },\n cut: {\n prt: '_'\n },\n deal: {\n pst: '_t',\n prt: '_t'\n },\n develop: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n die: {\n g: 'dying',\n pst: '_d'\n },\n dig: {\n g: '_ging',\n pst: 'dug',\n prt: 'dug'\n },\n dive: {\n prt: '_d'\n },\n \"do\": {\n pst: 'did',\n pres: '_es'\n },\n draw: {\n prt: '_n',\n pst: 'drew'\n },\n dream: {\n prt: '_t'\n },\n drink: {\n prt: 'drunk',\n pst: 'drank'\n },\n drive: {\n g: 'driving',\n prt: '_n',\n pst: 'drove'\n },\n drop: {\n g: '_ping',\n pst: '_ped'\n },\n eat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n pst: 'ate'\n },\n edit: {\n pst: '_ed',\n g: '_ing'\n },\n egg: {\n pst: '_ed'\n },\n fall: {\n prt: '_en',\n pst: 'fell'\n },\n feed: {\n prt: 'fed',\n pst: 'fed'\n },\n feel: {\n a: '_er',\n pst: 'felt'\n },\n fight: {\n pst: 'fought',\n prt: 'fought'\n },\n find: {\n pst: 'found'\n },\n flee: {\n g: '_ing',\n prt: 'fled'\n },\n fling: {\n prt: 'flung'\n },\n fly: {\n prt: 'flown',\n pst: 'flew'\n },\n forbid: {\n pst: 'forbade'\n },\n forget: {\n g: '_ing',\n prt: 'forgotten',\n pst: 'forgot'\n },\n forgive: {\n g: 'forgiving',\n prt: '_n',\n pst: 'forgave'\n },\n free: {\n a: '',\n g: '_ing'\n },\n freeze: {\n g: 'freezing',\n prt: 'frozen',\n pst: 'froze'\n },\n get: {\n pst: 'got',\n prt: 'gotten'\n },\n give: {\n g: 'giving',\n prt: '_n',\n pst: 'gave'\n },\n go: {\n prt: '_ne',\n pst: 'went',\n pres: 'goes'\n },\n grow: {\n prt: '_n'\n },\n guide: {\n pst: '_d'\n },\n hang: {\n pst: 'hung',\n prt: 'hung'\n },\n have: {\n g: 'having',\n pst: 'had',\n prt: 'had',\n pres: 'has'\n },\n hear: {\n pst: '_d',\n prt: '_d'\n },\n hide: {\n prt: 'hidden',\n pst: 'hid'\n },\n hit: {\n prt: '_'\n },\n hold: {\n pst: 'held',\n prt: 'held'\n },\n hurt: {\n pst: '_',\n prt: '_'\n },\n ice: {\n g: 'icing',\n pst: '_d'\n },\n imply: {\n pst: 'implied',\n pres: 'implies'\n },\n is: {\n a: '',\n g: 'being',\n pst: 'was',\n pres: '_'\n },\n keep: {\n prt: 'kept'\n },\n kneel: {\n prt: 'knelt'\n },\n know: {\n prt: '_n'\n },\n lay: {\n pst: 'laid',\n prt: 'laid'\n },\n lead: {\n pst: 'led',\n prt: 'led'\n },\n leap: {\n prt: '_t'\n },\n leave: {\n pst: 'left',\n prt: 'left'\n },\n lend: {\n prt: 'lent'\n },\n lie: {\n g: 'lying',\n pst: 'lay'\n },\n light: {\n pst: 'lit',\n prt: 'lit'\n },\n log: {\n g: '_ging',\n pst: '_ged'\n },\n loose: {\n prt: 'lost'\n },\n lose: {\n g: 'losing',\n pst: 'lost'\n },\n make: {\n pst: 'made',\n prt: 'made'\n },\n mean: {\n pst: '_t',\n prt: '_t'\n },\n meet: {\n a: '_er',\n g: '_ing',\n pst: 'met',\n prt: 'met'\n },\n miss: {\n pres: '_'\n },\n name: {\n g: 'naming'\n },\n patrol: {\n g: '_ling',\n pst: '_led'\n },\n pay: {\n pst: 'paid',\n prt: 'paid'\n },\n prove: {\n prt: '_n'\n },\n puke: {\n g: 'puking'\n },\n put: {\n prt: '_'\n },\n quit: {\n prt: '_'\n },\n read: {\n pst: '_',\n prt: '_'\n },\n ride: {\n prt: 'ridden'\n },\n reside: {\n pst: '_d'\n },\n ring: {\n pst: 'rang',\n prt: 'rung'\n },\n rise: {\n fut: 'will have _n',\n g: 'rising',\n prt: '_n',\n pst: 'rose',\n pluperf: 'had _n'\n },\n rub: {\n g: '_bing',\n pst: '_bed'\n },\n run: {\n g: '_ning',\n prt: '_',\n pst: 'ran'\n },\n say: {\n pst: 'said',\n prt: 'said',\n pres: '_s'\n },\n seat: {\n pst: 'sat',\n prt: 'sat'\n },\n see: {\n g: '_ing',\n prt: '_n',\n pst: 'saw'\n },\n seek: {\n prt: 'sought'\n },\n sell: {\n pst: 'sold',\n prt: 'sold'\n },\n send: {\n prt: 'sent'\n },\n set: {\n prt: '_'\n },\n sew: {\n prt: '_n'\n },\n shake: {\n prt: '_n'\n },\n shave: {\n prt: '_d'\n },\n shed: {\n g: '_ding',\n pst: '_',\n pres: '_s'\n },\n shine: {\n pst: 'shone',\n prt: 'shone'\n },\n shoot: {\n pst: 'shot',\n prt: 'shot'\n },\n show: {\n pst: '_ed'\n },\n shut: {\n prt: '_'\n },\n sing: {\n prt: 'sung',\n pst: 'sang'\n },\n sink: {\n pst: 'sank',\n pluperf: 'had sunk'\n },\n sit: {\n pst: 'sat'\n },\n ski: {\n pst: '_ied'\n },\n slay: {\n prt: 'slain'\n },\n sleep: {\n prt: 'slept'\n },\n slide: {\n pst: 'slid',\n prt: 'slid'\n },\n smash: {\n pres: '_es'\n },\n sneak: {\n prt: 'snuck'\n },\n speak: {\n fut: 'will have spoken',\n prt: 'spoken',\n pst: 'spoke',\n perf: 'have spoken',\n pluperf: 'had spoken'\n },\n speed: {\n prt: 'sped'\n },\n spend: {\n prt: 'spent'\n },\n spill: {\n prt: '_ed',\n pst: 'spilt'\n },\n spin: {\n g: '_ning',\n pst: 'spun',\n prt: 'spun'\n },\n spit: {\n prt: 'spat'\n },\n split: {\n prt: '_'\n },\n spread: {\n pst: '_'\n },\n spring: {\n prt: 'sprung'\n },\n stand: {\n pst: 'stood'\n },\n steal: {\n a: '_er',\n pst: 'stole'\n },\n stick: {\n pst: 'stuck'\n },\n sting: {\n pst: 'stung'\n },\n stink: {\n pst: 'stunk',\n prt: 'stunk'\n },\n stream: {\n a: '_er'\n },\n strew: {\n prt: '_n'\n },\n strike: {\n g: 'striking',\n pst: 'struck'\n },\n suit: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n sware: {\n prt: 'sworn'\n },\n swear: {\n pst: 'swore'\n },\n sweep: {\n prt: 'swept'\n },\n swim: {\n g: '_ming',\n pst: 'swam'\n },\n swing: {\n pst: 'swung'\n },\n take: {\n fut: 'will have _n',\n pst: 'took',\n perf: 'have _n',\n pluperf: 'had _n'\n },\n teach: {\n pst: 'taught',\n pres: '_es'\n },\n tear: {\n pst: 'tore'\n },\n tell: {\n pst: 'told'\n },\n think: {\n pst: 'thought'\n },\n thrive: {\n prt: '_d'\n },\n tie: {\n g: 'tying',\n pst: '_d'\n },\n undergo: {\n prt: '_ne'\n },\n understand: {\n pst: 'understood'\n },\n upset: {\n prt: '_'\n },\n wait: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n wake: {\n pst: 'woke'\n },\n wear: {\n pst: 'wore'\n },\n weave: {\n prt: 'woven'\n },\n wed: {\n pst: 'wed'\n },\n weep: {\n prt: 'wept'\n },\n win: {\n g: '_ning',\n pst: 'won'\n },\n wind: {\n prt: 'wound'\n },\n withdraw: {\n pst: 'withdrew'\n },\n wring: {\n prt: 'wrung'\n },\n write: {\n g: 'writing',\n prt: 'written',\n pst: 'wrote'\n }\n}; //uncompress our ad-hoc compression scheme\n\nvar keys = Object.keys(conjugations);\n\nvar _loop = function _loop(i) {\n var inf = keys[i];\n var _final = {};\n Object.keys(conjugations[inf]).forEach(function (key) {\n var str = conjugations[inf][key]; //swap-in infinitives for '_'\n\n str = str.replace('_', inf);\n var full = mapping$1[key];\n _final[full] = str;\n }); //over-write original\n\n conjugations[inf] = _final;\n};\n\nfor (var i = 0; i < keys.length; i++) {\n _loop(i);\n}\n\nvar conjugations_1 = conjugations;\n\nvar endsWith$1 = {\n b: [{\n reg: /([^aeiou][aeiou])b$/i,\n repl: {\n pr: '$1bs',\n pa: '$1bbed',\n gr: '$1bbing'\n }\n }],\n d: [{\n reg: /(end)$/i,\n repl: {\n pr: '$1s',\n pa: 'ent',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(eed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(ed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ded',\n ar: '$1der',\n gr: '$1ding'\n }\n }, {\n reg: /([^aeiou][ou])d$/i,\n repl: {\n pr: '$1ds',\n pa: '$1dded',\n gr: '$1dding'\n }\n }],\n e: [{\n reg: /(eave)$/i,\n repl: {\n pr: '$1s',\n pa: '$1d',\n gr: 'eaving',\n ar: '$1r'\n }\n }, {\n reg: /(ide)$/i,\n repl: {\n pr: '$1s',\n pa: 'ode',\n gr: 'iding',\n ar: 'ider'\n }\n }, {\n //shake\n reg: /(t|sh?)(ake)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1ook',\n gr: '$1aking',\n ar: '$1$2r'\n }\n }, {\n //awake\n reg: /w(ake)$/i,\n repl: {\n pr: 'w$1s',\n pa: 'woke',\n gr: 'waking',\n ar: 'w$1r'\n }\n }, {\n //make\n reg: /m(ake)$/i,\n repl: {\n pr: 'm$1s',\n pa: 'made',\n gr: 'making',\n ar: 'm$1r'\n }\n }, {\n reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing' // prt: '$1en',\n\n }\n }, {\n reg: /([bd]l)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(om)e$/i,\n repl: {\n pr: '$1es',\n pa: 'ame',\n gr: '$1ing'\n }\n }],\n g: [{\n reg: /([^aeiou][ou])g$/i,\n repl: {\n pr: '$1gs',\n pa: '$1gged',\n gr: '$1gging'\n }\n }],\n h: [{\n reg: /(..)([cs]h)$/i,\n repl: {\n pr: '$1$2es',\n pa: '$1$2ed',\n gr: '$1$2ing'\n }\n }],\n k: [{\n reg: /(ink)$/i,\n repl: {\n pr: '$1s',\n pa: 'unk',\n gr: '$1ing',\n ar: '$1er'\n }\n }],\n m: [{\n reg: /([^aeiou][aeiou])m$/i,\n repl: {\n pr: '$1ms',\n pa: '$1mmed',\n gr: '$1mming'\n }\n }],\n n: [{\n reg: /(en)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n p: [{\n reg: /(e)(ep)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1pt',\n gr: '$1$2ing',\n ar: '$1$2er'\n }\n }, {\n reg: /([^aeiou][aeiou])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1pped',\n gr: '$1pping'\n }\n }, {\n reg: /([aeiu])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1p',\n gr: '$1pping'\n }\n }],\n r: [{\n reg: /([td]er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n s: [{\n reg: /(ish|tch|ess)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n t: [{\n reg: /(ion|end|e[nc]t)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(.eat)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /([aeiu])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1t',\n gr: '$1tting'\n }\n }, {\n reg: /([^aeiou][aeiou])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1tted',\n gr: '$1tting'\n }\n }],\n w: [{\n reg: /(.llow)$/i,\n //follow, allow\n repl: {\n pr: '$1s',\n pa: '$1ed'\n }\n }, {\n reg: /(..)(ow)$/i,\n //grow\n repl: {\n pr: '$1$2s',\n pa: '$1ew',\n gr: '$1$2ing',\n prt: '$1$2n'\n }\n }],\n y: [{\n reg: /(i|f|rr)y$/i,\n repl: {\n pr: '$1ies',\n pa: '$1ied',\n gr: '$1ying'\n }\n }],\n z: [{\n reg: /([aeiou]zz)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }]\n};\nvar suffixes$1 = endsWith$1;\n\nvar posMap = {\n pr: 'PresentTense',\n pa: 'PastTense',\n gr: 'Gerund',\n prt: 'Participle',\n ar: 'Actor'\n};\n\nvar doTransform = function doTransform(str, obj) {\n var found = {};\n var keys = Object.keys(obj.repl);\n\n for (var i = 0; i < keys.length; i += 1) {\n var pos = keys[i];\n found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]);\n }\n\n return found;\n}; //look at the end of the word for clues\n\n\nvar checkSuffix = function checkSuffix() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var c = str[str.length - 1];\n\n if (suffixes$1.hasOwnProperty(c) === true) {\n for (var r = 0; r < suffixes$1[c].length; r += 1) {\n var reg = suffixes$1[c][r].reg;\n\n if (reg.test(str) === true) {\n return doTransform(str, suffixes$1[c][r]);\n }\n }\n }\n\n return {};\n};\n\nvar _01Suffixes = checkSuffix;\n\n//non-specifc, 'hail-mary' transforms from infinitive, into other forms\nvar hasY = /[bcdfghjklmnpqrstvwxz]y$/;\nvar generic = {\n Gerund: function Gerund(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf.replace(/e$/, 'ing');\n }\n\n return inf + 'ing';\n },\n PresentTense: function PresentTense(inf) {\n if (inf.charAt(inf.length - 1) === 's') {\n return inf + 'es';\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ies';\n }\n\n return inf + 's';\n },\n PastTense: function PastTense(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf + 'd';\n }\n\n if (inf.substr(-2) === 'ed') {\n return inf;\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ied';\n }\n\n return inf + 'ed';\n }\n};\nvar _02Generic = generic;\n\n//we assume the input word is a proper infinitive\n\nvar conjugate$2 = function conjugate() {\n var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var found = {}; // 1. look at irregulars\n //the lexicon doesn't pass this in\n\n if (world && world.irregulars) {\n if (world.irregulars.verbs.hasOwnProperty(inf) === true) {\n found = Object.assign({}, world.irregulars.verbs[inf]);\n }\n } //2. rule-based regex\n\n\n found = Object.assign({}, _01Suffixes(inf), found); //3. generic transformations\n //'buzzing'\n\n if (found.Gerund === undefined) {\n found.Gerund = _02Generic.Gerund(inf);\n } //'buzzed'\n\n\n if (found.PastTense === undefined) {\n found.PastTense = _02Generic.PastTense(inf);\n } //'buzzes'\n\n\n if (found.PresentTense === undefined) {\n found.PresentTense = _02Generic.PresentTense(inf);\n }\n\n return found;\n};\n\nvar conjugate_1$1 = conjugate$2; // console.log(conjugate('bake'))\n\n//turn 'quick' into 'quickest'\nvar do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/];\nvar dont_rules$1 = [/ary$/];\nvar irregulars$5 = {\n nice: 'nicest',\n late: 'latest',\n hard: 'hardest',\n inner: 'innermost',\n outer: 'outermost',\n far: 'furthest',\n worse: 'worst',\n bad: 'worst',\n good: 'best',\n big: 'biggest',\n large: 'largest'\n};\nvar transforms$2 = [{\n reg: /y$/i,\n repl: 'iest'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1ttest'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1dest'\n}, {\n reg: /nge$/i,\n repl: 'ngest'\n}, {\n reg: /([aeiou])te$/i,\n repl: '$1test'\n}];\n\nvar to_superlative = function to_superlative(str) {\n //irregulars\n if (irregulars$5.hasOwnProperty(str)) {\n return irregulars$5[str];\n } //known transforms\n\n\n for (var i = 0; i < transforms$2.length; i++) {\n if (transforms$2[i].reg.test(str)) {\n return str.replace(transforms$2[i].reg, transforms$2[i].repl);\n }\n } //dont-rules\n\n\n for (var _i = 0; _i < dont_rules$1.length; _i++) {\n if (dont_rules$1[_i].test(str) === true) {\n return null;\n }\n } //do-rules\n\n\n for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) {\n if (do_rules$1[_i2].test(str) === true) {\n if (str.charAt(str.length - 1) === 'e') {\n return str + 'st';\n }\n\n return str + 'est';\n }\n }\n\n return str + 'est';\n};\n\nvar toSuperlative = to_superlative;\n\n//turn 'quick' into 'quickly'\nvar do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/];\nvar dont_rules = [/ary$/, /ous$/];\nvar irregulars$4 = {\n grey: 'greyer',\n gray: 'grayer',\n green: 'greener',\n yellow: 'yellower',\n red: 'redder',\n good: 'better',\n well: 'better',\n bad: 'worse',\n sad: 'sadder',\n big: 'bigger'\n};\nvar transforms$1 = [{\n reg: /y$/i,\n repl: 'ier'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1tter'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1der'\n}, {\n reg: /nge$/i,\n repl: 'nger'\n}];\n\nvar to_comparative = function to_comparative(str) {\n //known-irregulars\n if (irregulars$4.hasOwnProperty(str)) {\n return irregulars$4[str];\n } //known-transforms\n\n\n for (var i = 0; i < transforms$1.length; i++) {\n if (transforms$1[i].reg.test(str) === true) {\n return str.replace(transforms$1[i].reg, transforms$1[i].repl);\n }\n } //dont-patterns\n\n\n for (var _i = 0; _i < dont_rules.length; _i++) {\n if (dont_rules[_i].test(str) === true) {\n return null;\n }\n } //do-patterns\n\n\n for (var _i2 = 0; _i2 < do_rules.length; _i2++) {\n if (do_rules[_i2].test(str) === true) {\n return str + 'er';\n }\n } //easy-one\n\n\n if (/e$/.test(str) === true) {\n return str + 'r';\n }\n\n return str + 'er';\n};\n\nvar toComparative = to_comparative;\n\nvar fns = {\n toSuperlative: toSuperlative,\n toComparative: toComparative\n};\n/** conjugate an adjective into other forms */\n\nvar conjugate$1 = function conjugate(w) {\n var res = {}; // 'greatest'\n\n var sup = fns.toSuperlative(w);\n\n if (sup) {\n res.Superlative = sup;\n } // 'greater'\n\n\n var comp = fns.toComparative(w);\n\n if (comp) {\n res.Comparative = comp;\n }\n\n return res;\n};\n\nvar adjectives$2 = conjugate$1;\n\n/** patterns for turning 'bus' to 'buses'*/\nvar suffixes = {\n a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']],\n e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']],\n f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']],\n i: [[/(octop|vir)i$/i, '$1i']],\n m: [[/([ti])um$/i, '$1a']],\n n: [[/^(oxen)$/i, '$1']],\n o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']],\n s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']],\n x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']],\n y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n z: [[/(quiz)$/i, '$1zes']]\n};\nvar _rules$2 = suffixes;\n\nvar addE = /(x|ch|sh|s|z)$/;\n\nvar trySuffix = function trySuffix(str) {\n var c = str[str.length - 1];\n\n if (_rules$2.hasOwnProperty(c) === true) {\n for (var i = 0; i < _rules$2[c].length; i += 1) {\n var reg = _rules$2[c][i][0];\n\n if (reg.test(str) === true) {\n return str.replace(reg, _rules$2[c][i][1]);\n }\n }\n }\n\n return null;\n};\n/** Turn a singular noun into a plural\n * assume the given string is singular\n */\n\n\nvar pluralize = function pluralize() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var irregulars = world.irregulars.nouns; // check irregulars list\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //we have some rules to try-out\n\n\n var plural = trySuffix(str);\n\n if (plural !== null) {\n return plural;\n } //like 'church'\n\n\n if (addE.test(str)) {\n return str + 'es';\n } // ¯\\_(ツ)_/¯\n\n\n return str + 's';\n};\n\nvar toPlural = pluralize;\n\n//patterns for turning 'dwarves' to 'dwarf'\nvar _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],\n[/(eas)es$/i, '$1e'], //diseases\n[/(..[aeiou]s)es$/i, '$1'], //geniouses\n[/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']];\n\nvar invertObj = function invertObj(obj) {\n return Object.keys(obj).reduce(function (h, k) {\n h[obj[k]] = k;\n return h;\n }, {});\n};\n\nvar toSingular = function toSingular(str, world) {\n var irregulars = world.irregulars.nouns;\n var invert = invertObj(irregulars); //(not very efficient)\n // check irregulars list\n\n if (invert.hasOwnProperty(str)) {\n return invert[str];\n } // go through our regexes\n\n\n for (var i = 0; i < _rules$1.length; i++) {\n if (_rules$1[i][0].test(str) === true) {\n str = str.replace(_rules$1[i][0], _rules$1[i][1]);\n return str;\n }\n }\n\n return str;\n};\n\nvar toSingular_1 = toSingular;\n\n//rules for turning a verb into infinitive form\nvar rules = {\n Participle: [{\n reg: /own$/i,\n to: 'ow'\n }, {\n reg: /(.)un([g|k])$/i,\n to: '$1in$2'\n }],\n Actor: [{\n reg: /(er)er$/i,\n to: '$1'\n }],\n PresentTense: [{\n reg: /(..)(ies)$/i,\n to: '$1y'\n }, {\n reg: /(tch|sh)es$/i,\n to: '$1'\n }, {\n reg: /(ss|zz)es$/i,\n to: '$1'\n }, {\n reg: /([tzlshicgrvdnkmu])es$/i,\n to: '$1e'\n }, {\n reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,\n to: '$1'\n }, {\n reg: /(ow)s$/i,\n to: '$1'\n }, {\n reg: /(op)s$/i,\n to: '$1'\n }, {\n reg: /([eirs])ts$/i,\n to: '$1t'\n }, {\n reg: /(ll)s$/i,\n to: '$1'\n }, {\n reg: /(el)s$/i,\n to: '$1'\n }, {\n reg: /(ip)es$/i,\n to: '$1e'\n }, {\n reg: /ss$/i,\n to: 'ss'\n }, {\n reg: /s$/i,\n to: ''\n }],\n Gerund: [{\n //popping -> pop\n reg: /(..)(p|d|t|g){2}ing$/i,\n to: '$1$2'\n }, {\n //fuzzing -> fuzz\n reg: /(ll|ss|zz)ing$/i,\n to: '$1'\n }, {\n reg: /([^aeiou])ying$/i,\n to: '$1y'\n }, {\n reg: /([^ae]i.)ing$/i,\n to: '$1e'\n }, {\n //eating, reading\n reg: /(ea[dklnrtv])ing$/i,\n to: '$1'\n }, {\n //washing -> wash\n reg: /(ch|sh)ing$/i,\n to: '$1'\n }, //soft-e forms:\n {\n //z : hazing (not buzzing)\n reg: /(z)ing$/i,\n to: '$1e'\n }, {\n //a : baking, undulating\n reg: /(a[gdkvtc])ing$/i,\n to: '$1e'\n }, {\n //u : conjuring, tubing\n reg: /(u[rtcbn])ing$/i,\n to: '$1e'\n }, {\n //o : forboding, poking, hoping, boring (not hooping)\n reg: /([^o]o[bdknprv])ing$/i,\n to: '$1e'\n }, {\n //ling : tingling, wrinkling, circling, scrambling, bustling\n reg: /([tbckg]l)ing$/i,\n //dp\n to: '$1e'\n }, {\n //cing : bouncing, denouncing\n reg: /(c|s)ing$/i,\n //dp\n to: '$1e'\n }, // {\n // //soft-e :\n // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i,\n // to: '$1e',\n // },\n {\n //fallback\n reg: /(..)ing$/i,\n to: '$1'\n }],\n PastTense: [{\n reg: /(ued)$/i,\n to: 'ue'\n }, {\n reg: /a([^aeiouy])ed$/i,\n to: 'a$1e'\n }, {\n reg: /([aeiou]zz)ed$/i,\n to: '$1'\n }, {\n reg: /(e|i)lled$/i,\n to: '$1ll'\n }, {\n reg: /(.)(sh|ch)ed$/i,\n to: '$1$2'\n }, {\n reg: /(tl|gl)ed$/i,\n to: '$1e'\n }, {\n reg: /(um?pt?)ed$/i,\n to: '$1'\n }, {\n reg: /(ss)ed$/i,\n to: '$1'\n }, {\n reg: /pped$/i,\n to: 'p'\n }, {\n reg: /tted$/i,\n to: 't'\n }, {\n reg: /(..)gged$/i,\n to: '$1g'\n }, {\n reg: /(..)lked$/i,\n to: '$1lk'\n }, {\n reg: /([^aeiouy][aeiou])ked$/i,\n to: '$1ke'\n }, {\n reg: /(.[aeiou])led$/i,\n to: '$1l'\n }, {\n reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,\n to: '$1$2'\n }, {\n reg: /(.ut)ed$/i,\n to: '$1e'\n }, {\n reg: /(.pt)ed$/i,\n to: '$1'\n }, {\n reg: /(us)ed$/i,\n to: '$1e'\n }, {\n reg: /(dd)ed$/i,\n to: '$1'\n }, {\n reg: /(..[^aeiouy])ed$/i,\n to: '$1e'\n }, {\n reg: /(..)ied$/i,\n to: '$1y'\n }, {\n reg: /(.o)ed$/i,\n to: '$1o'\n }, {\n reg: /(..i)ed$/i,\n to: '$1'\n }, {\n reg: /(.a[^aeiou])ed$/i,\n to: '$1'\n }, {\n //owed, aced\n reg: /([aeiou][^aeiou])ed$/i,\n to: '$1e'\n }, {\n reg: /([rl])ew$/i,\n to: '$1ow'\n }, {\n reg: /([pl])t$/i,\n to: '$1t'\n }]\n};\nvar _transform = rules;\n\nvar guessVerb = {\n Gerund: ['ing'],\n Actor: ['erer'],\n Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'],\n PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'],\n PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns']\n}; //flip it into a lookup object\n\nguessVerb = Object.keys(guessVerb).reduce(function (h, k) {\n guessVerb[k].forEach(function (a) {\n return h[a] = k;\n });\n return h;\n}, {});\nvar _guess = guessVerb;\n\n/** it helps to know what we're conjugating from */\n\nvar guessTense = function guessTense(str) {\n var three = str.substr(str.length - 3);\n\n if (_guess.hasOwnProperty(three) === true) {\n return _guess[three];\n }\n\n var two = str.substr(str.length - 2);\n\n if (_guess.hasOwnProperty(two) === true) {\n return _guess[two];\n }\n\n var one = str.substr(str.length - 1);\n\n if (one === 's') {\n return 'PresentTense';\n }\n\n return null;\n};\n\nvar toInfinitive$1 = function toInfinitive(str, world, tense) {\n if (!str) {\n return '';\n } //1. look at known irregulars\n\n\n if (world.words.hasOwnProperty(str) === true) {\n var irregs = world.irregulars.verbs;\n var keys = Object.keys(irregs);\n\n for (var i = 0; i < keys.length; i++) {\n var forms = Object.keys(irregs[keys[i]]);\n\n for (var o = 0; o < forms.length; o++) {\n if (str === irregs[keys[i]][forms[o]]) {\n return keys[i];\n }\n }\n }\n } // give'r!\n\n\n tense = tense || guessTense(str);\n\n if (tense && _transform[tense]) {\n for (var _i = 0; _i < _transform[tense].length; _i++) {\n var rule = _transform[tense][_i];\n\n if (rule.reg.test(str) === true) {\n // console.log(rule.reg)\n return str.replace(rule.reg, rule.to);\n }\n }\n }\n\n return str;\n};\n\nvar toInfinitive_1$1 = toInfinitive$1;\n\nvar irregulars$3 = {\n nouns: plurals,\n verbs: conjugations_1\n}; //these behaviours are configurable & shared across some plugins\n\nvar transforms = {\n conjugate: conjugate_1$1,\n adjectives: adjectives$2,\n toPlural: toPlural,\n toSingular: toSingular_1,\n toInfinitive: toInfinitive_1$1\n};\nvar _isVerbose = false;\n/** all configurable linguistic data */\n\nvar World = /*#__PURE__*/function () {\n function World() {\n _classCallCheck(this, World);\n\n // quiet these properties from a console.log\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'hasCompound', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'irregulars', {\n enumerable: false,\n value: irregulars$3,\n writable: true\n });\n Object.defineProperty(this, 'tags', {\n enumerable: false,\n value: Object.assign({}, tags),\n writable: true\n });\n Object.defineProperty(this, 'transforms', {\n enumerable: false,\n value: transforms,\n writable: true\n });\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true\n }); // cache our abbreviations for our sentence-parser\n\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: {}\n }\n }); // add our compressed data to lexicon\n\n this.words = unpack_1.buildOut(this); // add our irregulars to lexicon\n\n addIrregulars_1(this);\n }\n /** more logs for debugging */\n\n\n _createClass(World, [{\n key: \"verbose\",\n value: function verbose(bool) {\n _isVerbose = bool;\n return this;\n }\n }, {\n key: \"isVerbose\",\n value: function isVerbose() {\n return _isVerbose;\n }\n /** put new words into our lexicon, properly */\n\n }, {\n key: \"addWords\",\n value: function addWords(wordObj) {\n // clean them up a bit\n var cleaned = {};\n Object.keys(wordObj).forEach(function (w) {\n var tag = wordObj[w];\n w = w.toLowerCase().trim();\n cleaned[w] = tag;\n });\n unpack_1.addWords(cleaned, this.words, this);\n }\n /** add new custom conjugations */\n\n }, {\n key: \"addConjugations\",\n value: function addConjugations(obj) {\n Object.assign(this.irregulars.verbs, obj);\n return this;\n }\n /** add new custom plural/singular pairs */\n\n }, {\n key: \"addPlurals\",\n value: function addPlurals(obj) {\n Object.assign(this.irregulars.nouns, obj);\n return this;\n }\n /** extend the compromise tagset */\n\n }, {\n key: \"addTags\",\n value: function addTags(tags) {\n tags = Object.assign({}, tags);\n this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags\n\n this.tags = inference(this.tags);\n return this;\n }\n /** call methods after tagger runs */\n\n }, {\n key: \"postProcess\",\n value: function postProcess(fn) {\n this.taggers.push(fn);\n return this;\n }\n /** helper method for logging + debugging */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length,\n plurals: Object.keys(this.irregulars.nouns).length,\n conjugations: Object.keys(this.irregulars.verbs).length,\n compounds: Object.keys(this.hasCompound).length,\n postProcessors: this.taggers.length\n };\n }\n }]);\n\n return World;\n}(); // ¯\\_(:/)_/¯\n\n\nvar clone = function clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n/** produce a deep-copy of all lingustic data */\n\n\nWorld.prototype.clone = function () {\n var w2 = new World(); // these are simple to copy:\n\n w2.words = Object.assign({}, this.words);\n w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested:\n\n w2.irregulars = clone(this.irregulars);\n w2.tags = clone(this.tags); // these are functions\n\n w2.transforms = this.transforms;\n w2.taggers = this.taggers;\n return w2;\n};\n\nvar World_1 = World;\n\n/** return the root, first document */\n\nvar _01Utils = createCommonjsModule(function (module, exports) {\n exports.all = function () {\n return this.parents()[0] || this;\n };\n /** return the previous result */\n\n\n exports.parent = function () {\n if (this.from) {\n return this.from;\n }\n\n return this;\n };\n /** return a list of all previous results */\n\n\n exports.parents = function (n) {\n var arr = [];\n\n var addParent = function addParent(doc) {\n if (doc.from) {\n arr.push(doc.from);\n addParent(doc.from);\n }\n };\n\n addParent(this);\n arr = arr.reverse();\n\n if (typeof n === 'number') {\n return arr[n];\n }\n\n return arr;\n };\n /** deep-copy the document, so that no references remain */\n\n\n exports.clone = function (doShallow) {\n var list = this.list.map(function (ts) {\n return ts.clone(doShallow);\n });\n var tmp = this.buildFrom(list);\n return tmp;\n };\n /** how many seperate terms does the document have? */\n\n\n exports.wordCount = function () {\n return this.list.reduce(function (count, p) {\n count += p.wordCount();\n return count;\n }, 0);\n };\n\n exports.wordcount = exports.wordCount;\n /** turn on logging for decision-debugging */\n // exports.verbose = function(bool) {\n // if (bool === undefined) {\n // bool = true\n // }\n // this.world.verbose = bool\n // }\n});\n\n/** use only the first result(s) */\n\nvar _02Accessors = createCommonjsModule(function (module, exports) {\n exports.first = function (n) {\n if (n === undefined) {\n return this.get(0);\n }\n\n return this.slice(0, n);\n };\n /** use only the last result(s) */\n\n\n exports.last = function (n) {\n if (n === undefined) {\n return this.get(this.list.length - 1);\n }\n\n var end = this.list.length;\n return this.slice(end - n, end);\n };\n /** grab a given subset of the results*/\n\n\n exports.slice = function (start, end) {\n var list = this.list.slice(start, end);\n return this.buildFrom(list);\n };\n /* grab nth result */\n\n\n exports.eq = function (n) {\n var p = this.list[n];\n\n if (p === undefined) {\n return this.buildFrom([]);\n }\n\n return this.buildFrom([p]);\n };\n\n exports.get = exports.eq;\n /** grab term[0] for every match */\n\n exports.firstTerms = function () {\n return this.match('^.');\n };\n\n exports.firstTerm = exports.firstTerms;\n /** grab the last term for every match */\n\n exports.lastTerms = function () {\n return this.match('.$');\n };\n\n exports.lastTerm = exports.lastTerms;\n /** return a flat array of term objects */\n\n exports.termList = function (num) {\n var arr = []; //'reduce' but faster\n\n for (var i = 0; i < this.list.length; i++) {\n var terms = this.list[i].terms();\n\n for (var o = 0; o < terms.length; o++) {\n arr.push(terms[o]); //support .termList(4)\n\n if (num !== undefined && arr[num] !== undefined) {\n return arr[num];\n }\n }\n }\n\n return arr;\n };\n /* grab named capture group terms as object */\n\n\n var getGroups = function getGroups(doc) {\n var res = {};\n var allGroups = {};\n\n var _loop = function _loop(i) {\n var phrase = doc.list[i];\n var groups = Object.keys(phrase.groups).map(function (k) {\n return phrase.groups[k];\n });\n\n for (var j = 0; j < groups.length; j++) {\n var _groups$j = groups[j],\n group = _groups$j.group,\n start = _groups$j.start,\n length = _groups$j.length;\n\n if (!allGroups[group]) {\n allGroups[group] = [];\n }\n\n allGroups[group].push(phrase.buildFrom(start, length));\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n var keys = Object.keys(allGroups);\n\n for (var _i = 0; _i < keys.length; _i++) {\n var key = keys[_i];\n res[key] = doc.buildFrom(allGroups[key]);\n }\n\n return res;\n };\n /** lookup a named-group, by its name */\n\n\n var getOneName = function getOneName(doc, name) {\n var arr = [];\n\n var _loop2 = function _loop2(i) {\n var phrase = doc.list[i];\n var keys = Object.keys(phrase.groups);\n keys = keys.filter(function (id) {\n return phrase.groups[id].group === name;\n });\n keys.forEach(function (id) {\n arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length));\n });\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop2(i);\n }\n\n return doc.buildFrom(arr);\n };\n /** grab named capture group results */\n\n\n exports.groups = function (target) {\n if (target === undefined) {\n return getGroups(this);\n }\n\n if (typeof target === 'number') {\n target = String(target);\n }\n\n return getOneName(this, target) || this.buildFrom([]);\n };\n\n exports.group = exports.groups;\n /** get the full-sentence each phrase belongs to */\n\n exports.sentences = function (n) {\n var arr = [];\n this.list.forEach(function (p) {\n arr.push(p.fullSentence());\n });\n\n if (typeof n === 'number') {\n return this.buildFrom([arr[n]]);\n }\n\n return this.buildFrom(arr);\n };\n\n exports.sentence = exports.sentences;\n});\n\n// cache the easier conditions up-front\nvar cacheRequired$1 = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: needTags,\n words: needWords\n };\n}; // try to pre-fail as many matches as possible, without doing them\n\n\nvar failFast = function failFast(doc, regs) {\n if (doc._cache && doc._cache.set === true) {\n var _cacheRequired = cacheRequired$1(regs),\n words = _cacheRequired.words,\n tags = _cacheRequired.tags; //check required words\n\n\n for (var i = 0; i < words.length; i++) {\n if (doc._cache.words[words[i]] === undefined) {\n return false;\n }\n } //check required tags\n\n\n for (var _i = 0; _i < tags.length; _i++) {\n if (doc._cache.tags[tags[_i]] === undefined) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nvar _failFast = failFast;\n\nvar _03Match = createCommonjsModule(function (module, exports) {\n /** return a new Doc, with this one as a parent */\n exports.match = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // support '0' shorthand for named-groups\n if (typeof opts === 'string' || typeof opts === 'number' || opts === null) {\n opts = {\n group: opts\n };\n } //parse-up the input expression\n\n\n var regs = matchSyntax(reg, opts);\n\n if (regs.length === 0) {\n return this.buildFrom([]);\n } //check our cache, if it exists\n\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.match(regs));\n }, []); // support returning named groups\n\n if (opts.group !== undefined && opts.group !== null && opts.group !== '') {\n return this.buildFrom(matches).groups(opts.group);\n }\n\n return this.buildFrom(matches);\n };\n /** return all results except for this */\n\n\n exports.not = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n //parse-up the input expression\n var regs = matchSyntax(reg, opts); //if it's empty, return them all!\n\n if (regs.length === 0 || _failFast(this, regs) === false) {\n return this;\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.not(regs));\n }, []);\n return this.buildFrom(matches);\n };\n /** return only the first match */\n\n\n exports.matchOne = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //check our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n for (var i = 0; i < this.list.length; i++) {\n var match = this.list[i].match(regs, true);\n return this.buildFrom(match);\n }\n\n return this.buildFrom([]);\n };\n /** return each current phrase, only if it contains this match */\n\n\n exports[\"if\"] = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n var found = this.list.filter(function (p) {\n return p.has(regs) === true;\n });\n return this.buildFrom(found);\n };\n /** Filter-out any current phrases that have this match*/\n\n\n exports.ifNo = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts);\n var found = this.list.filter(function (p) {\n return p.has(regs) === false;\n });\n return this.buildFrom(found);\n };\n /**Return a boolean if this match exists */\n\n\n exports.has = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return false;\n }\n\n return this.list.some(function (p) {\n return p.has(regs) === true;\n });\n };\n /** match any terms after our matches, within the sentence */\n\n\n exports.lookAhead = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookAhead(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookAfter = exports.lookAhead;\n /** match any terms before our matches, within the sentence */\n\n exports.lookBehind = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookBehind(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookBefore = exports.lookBehind;\n /** return all terms before a match, in each phrase */\n\n exports.before = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var ids = p.terms().map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //nothing is before a first-term match\n\n if (index === 0 || index === -1) {\n return null;\n }\n\n return p.buildFrom(p.start, index);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return all terms after a match, in each phrase */\n\n\n exports.after = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var terms = p.terms();\n var ids = terms.map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //skip if nothing is after it\n\n if (index === -1 || !terms[index + m.length]) {\n return null;\n } //create the new phrase, after our match.\n\n\n var id = terms[index + m.length].id;\n var len = p.length - index - m.length;\n return p.buildFrom(id, len);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return only results with this match afterwards */\n\n\n exports.hasAfter = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookAfter(reg, opts).found;\n });\n };\n /** return only results with this match before it */\n\n\n exports.hasBefore = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookBefore(reg, opts).found;\n });\n };\n});\n\n/** apply a tag, or tags to all terms */\nvar tagTerms = function tagTerms(tag, doc, safe, reason) {\n var tagList = [];\n\n if (typeof tag === 'string') {\n tagList = tag.split(' ');\n } // doc.parents()[0].reasons.push(reason)\n //do indepenent tags for each term:\n\n\n doc.list.forEach(function (p) {\n var terms = p.terms(); // tagSafe - apply only to fitting terms\n\n if (safe === true) {\n terms = terms.filter(function (t) {\n return t.canBe(tag, doc.world);\n });\n }\n\n terms.forEach(function (t, i) {\n //fancy version:\n if (tagList.length > 1) {\n if (tagList[i] && tagList[i] !== '.') {\n t.tag(tagList[i], reason, doc.world);\n }\n } else {\n //non-fancy version (same tag for all terms)\n t.tag(tag, reason, doc.world);\n }\n });\n });\n return;\n};\n\nvar _setTag = tagTerms;\n\n/** Give all terms the given tag */\n\nvar tag = function tag(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, false, why);\n return this;\n};\n/** Only apply tag to terms if it is consistent with current tags */\n\n\nvar tagSafe = function tagSafe(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, true, why);\n return this;\n};\n/** Remove this term from the given terms */\n\n\nvar unTag = function unTag(tags, why) {\n var _this = this;\n\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t.unTag(tags, why, _this.world);\n });\n });\n return this;\n};\n/** return only the terms that can be this tag*/\n\n\nvar canBe = function canBe(tag) {\n if (!tag) {\n return this;\n }\n\n var world = this.world;\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.canBe(tag, world));\n }, []);\n return this.buildFrom(matches);\n};\n\nvar _04Tag = {\n tag: tag,\n tagSafe: tagSafe,\n unTag: unTag,\n canBe: canBe\n};\n\n/* run each phrase through a function, and create a new document */\nvar map = function map(fn) {\n var _this = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.map(function (p, i) {\n var doc = _this.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n var res = fn(doc, i); // if its a doc, return one result\n\n if (res && res.list && res.list[0]) {\n return res.list[0];\n }\n\n return res;\n }); //remove nulls\n\n list = list.filter(function (x) {\n return x;\n }); // return an empty response\n\n if (list.length === 0) {\n return this.buildFrom(list);\n } // if it is not a list of Phrase objects, then don't try to make a Doc object\n\n\n if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') {\n return list;\n }\n\n return this.buildFrom(list);\n};\n/** run a function on each phrase */\n\n\nvar forEach = function forEach(fn, detachParent) {\n var _this2 = this;\n\n if (!fn) {\n return this;\n }\n\n this.list.forEach(function (p, i) {\n var sub = _this2.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time.\n\n\n if (detachParent === true) {\n sub.from = null; //\n }\n\n fn(sub, i);\n });\n return this;\n};\n/** return only the phrases that return true */\n\n\nvar filter = function filter(fn) {\n var _this3 = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.filter(function (p, i) {\n var doc = _this3.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n return this.buildFrom(list);\n};\n/** return a document with only the first phrase that matches */\n\n\nvar find = function find(fn) {\n var _this4 = this;\n\n if (!fn) {\n return this;\n }\n\n var phrase = this.list.find(function (p, i) {\n var doc = _this4.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n\n if (phrase) {\n return this.buildFrom([phrase]);\n }\n\n return undefined;\n};\n/** return true or false if there is one matching phrase */\n\n\nvar some = function some(fn) {\n var _this5 = this;\n\n if (!fn) {\n return this;\n }\n\n return this.list.some(function (p, i) {\n var doc = _this5.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n};\n/** sample a subset of the results */\n\n\nvar random = function random(n) {\n if (!this.found) {\n return this;\n }\n\n var r = Math.floor(Math.random() * this.list.length);\n\n if (n === undefined) {\n var list = [this.list[r]];\n return this.buildFrom(list);\n } //prevent it from going over the end\n\n\n if (r + n > this.length) {\n r = this.length - n;\n r = r < 0 ? 0 : r;\n }\n\n return this.slice(r, r + n);\n};\n/** combine each phrase into a new data-structure */\n// exports.reduce = function(fn, h) {\n// let list = this.list.reduce((_h, ts) => {\n// let doc = this.buildFrom([ts])\n// doc.from = null //it's not a child/parent\n// return fn(_h, doc)\n// }, h)\n// return this.buildFrom(list)\n// }\n\n\nvar _05Loops = {\n map: map,\n forEach: forEach,\n filter: filter,\n find: find,\n some: some,\n random: random\n};\n\n// const tokenize = require('../../01-tokenizer/02-words')\nvar tokenize = function tokenize(str) {\n return str.split(/[ -]/g);\n}; // take a list of strings\n// look them up in the document\n\n\nvar buildTree = function buildTree(termList) {\n var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var root = {}; // parse our input\n\n termList.forEach(function (str, i) {\n var val = true;\n\n if (values[i] !== undefined) {\n val = values[i];\n } // some rough normalization\n\n\n str = (str || '').toLowerCase();\n str = str.replace(/[,;.!?]+$/, '');\n var arr = tokenize(str).map(function (s) {\n return s.trim();\n });\n root[arr[0]] = root[arr[0]] || {};\n\n if (arr.length === 1) {\n root[arr[0]].value = val;\n } else {\n root[arr[0]].more = root[arr[0]].more || [];\n root[arr[0]].more.push({\n rest: arr.slice(1),\n value: val\n });\n }\n }); // sort by longest-first?\n // console.log(JSON.stringify(root, null, 2))\n\n return root;\n};\n\nvar fastLookup = function fastLookup(termList, values, doc) {\n var root = buildTree(termList, values);\n var found = []; // each phrase\n\n var _loop = function _loop(i) {\n var p = doc.list[i];\n var terms = p.terms();\n var words = terms.map(function (t) {\n return t.reduced;\n }); // each word\n\n var _loop2 = function _loop2(w) {\n if (root[words[w]] !== undefined) {\n // is it a multi-word match?\n if (root[words[w]].more !== undefined) {\n root[words[w]].more.forEach(function (more) {\n // is it too-long?\n if (words[w + more.rest.length] === undefined) {\n return;\n } // compare each subsequent term\n\n\n var everyTerm = more.rest.every(function (word, r) {\n return word === words[w + r + 1];\n });\n\n if (everyTerm === true) {\n found.push({\n id: p.terms()[w].id,\n value: more.value,\n length: more.rest.length + 1\n });\n }\n });\n } // is it a single-word match?\n\n\n if (root[words[w]].value !== undefined) {\n found.push({\n id: p.terms()[w].id,\n value: root[words[w]].value,\n length: 1\n });\n }\n }\n };\n\n for (var w = 0; w < words.length; w++) {\n _loop2(w);\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n return found;\n};\n\nvar _lookup = fastLookup;\n\nvar _06Lookup = createCommonjsModule(function (module, exports) {\n // compare one term and one match\n // const doesMatch = function(term, str) {\n // if (str === '') {\n // return false\n // }\n // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str\n // }\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n };\n /** lookup an array of words or phrases */\n\n\n exports.lookup = function (arr) {\n var _this = this;\n\n var values = []; //is it a {key:val} object?\n\n var isObj = isObject(arr);\n\n if (isObj === true) {\n arr = Object.keys(arr).map(function (k) {\n values.push(arr[k]);\n return k;\n });\n } // support .lookup('foo')\n\n\n if (typeof arr === 'string') {\n arr = [arr];\n } //make sure we go fast.\n\n\n if (this._cache.set !== true) {\n this.cache();\n }\n\n var found = _lookup(arr, values, this);\n var p = this.list[0]; // make object response\n\n if (isObj === true) {\n var byVal = {};\n found.forEach(function (o) {\n byVal[o.value] = byVal[o.value] || [];\n byVal[o.value].push(p.buildFrom(o.id, o.length));\n });\n Object.keys(byVal).forEach(function (k) {\n byVal[k] = _this.buildFrom(byVal[k]);\n });\n return byVal;\n } // otherwise, make array response:\n\n\n found = found.map(function (o) {\n return p.buildFrom(o.id, o.length);\n });\n return this.buildFrom(found);\n };\n\n exports.lookUp = exports.lookup;\n});\n\n/** freeze the current state of the document, for speed-purposes*/\nvar cache = function cache(options) {\n var _this = this;\n\n options = options || {};\n var words = {};\n var tags = {};\n this._cache.words = words;\n this._cache.tags = tags;\n this._cache.set = true;\n this.list.forEach(function (p, i) {\n p.cache = p.cache || {}; //p.terms get cached automatically\n\n var terms = p.terms(); // cache all the terms\n\n terms.forEach(function (t) {\n if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) {\n return; //skip prototype words\n }\n\n words[t.reduced] = words[t.reduced] || [];\n words[t.reduced].push(i);\n Object.keys(t.tags).forEach(function (tag) {\n tags[tag] = tags[tag] || [];\n tags[tag].push(i);\n }); // cache root-form on Term, too\n\n if (options.root) {\n t.setRoot(_this.world);\n words[t.root] = [i];\n }\n });\n });\n return this;\n};\n/** un-freezes the current state of the document, so it may be transformed */\n\n\nvar uncache = function uncache() {\n this._cache = {};\n this.list.forEach(function (p) {\n p.cache = {};\n }); // do parents too?\n\n this.parents().forEach(function (doc) {\n doc._cache = {};\n doc.list.forEach(function (p) {\n p.cache = {};\n });\n });\n return this;\n};\n\nvar _07Cache = {\n cache: cache,\n uncache: uncache\n};\n\nvar titleCase$1 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** substitute-in new content */\n\n\nvar replaceWith = function replaceWith(replace) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!replace) {\n return this[\"delete\"]();\n } //support old-style params\n\n\n if (options === true) {\n options = {\n keepTags: true\n };\n }\n\n if (options === false) {\n options = {\n keepTags: false\n };\n }\n\n options = options || {}; // clear the cache\n\n this.uncache(); // return this\n\n this.list.forEach(function (p) {\n var input = replace; // accept a function for replace\n\n if (typeof replace === 'function') {\n input = replace(p);\n }\n\n var newPhrases; // accept a Doc object to replace\n\n if (input && _typeof(input) === 'object' && input.isA === 'Doc') {\n newPhrases = input.list;\n\n _this.pool().merge(input.pool());\n } else if (typeof input === 'string') {\n //input is a string\n if (options.keepCase !== false && p.terms(0).isTitleCase()) {\n input = titleCase$1(input);\n }\n\n newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases\n\n var tmpDoc = _this.buildFrom(newPhrases);\n\n tmpDoc.tagger();\n newPhrases = tmpDoc.list;\n } else {\n return; //don't even bother\n } // try to keep its old tags, if appropriate\n\n\n if (options.keepTags === true) {\n var oldTags = p.json({\n terms: {\n tags: true\n }\n }).terms;\n newPhrases[0].terms().forEach(function (t, i) {\n if (oldTags[i]) {\n t.tagSafe(oldTags[i].tags, 'keptTag', _this.world);\n }\n });\n }\n\n p.replace(newPhrases[0], _this); //Oneday: support multi-sentence replacements\n });\n return this;\n};\n/** search and replace match with new content */\n\n\nvar replace = function replace(match, _replace, options) {\n // if there's no 2nd param, use replaceWith\n if (_replace === undefined) {\n return this.replaceWith(match, options);\n }\n\n this.match(match).replaceWith(_replace, options);\n return this;\n};\n\nvar _01Replace = {\n replaceWith: replaceWith,\n replace: replace\n};\n\nvar _02Insert = createCommonjsModule(function (module, exports) {\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n }; // if it's empty, just create the phrase\n\n\n var makeNew = function makeNew(str, doc) {\n var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now\n\n var tmpDoc = doc.buildFrom([phrase]);\n tmpDoc.tagger();\n doc.list = tmpDoc.list;\n return doc;\n };\n /** add these new terms to the end*/\n\n\n exports.append = function () {\n var _this = this;\n\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to end of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this.buildFrom([phrase]);\n\n tmpDoc.tagger(); // push it onto the end\n\n p.append(phrase, _this);\n });\n return this;\n };\n\n exports.insertAfter = exports.append;\n exports.insertAt = exports.append;\n /** add these new terms to the front*/\n\n exports.prepend = function (str) {\n var _this2 = this;\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to start of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this2.buildFrom([phrase]);\n\n tmpDoc.tagger(); // add it to the start\n\n p.prepend(phrase, _this2);\n });\n return this;\n };\n\n exports.insertBefore = exports.prepend;\n /** add these new things to the end*/\n\n exports.concat = function () {\n // clear the cache\n this.uncache();\n var list = this.list.slice(0); //repeat for any number of params\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]; //support a fresh string\n\n if (typeof arg === 'string') {\n var arr = _01Tokenizer(arg, this.world); //TODO: phrase.tagger()?\n\n list = list.concat(arr);\n } else if (arg.isA === 'Doc') {\n list = list.concat(arg.list);\n } else if (arg.isA === 'Phrase') {\n list.push(arg);\n }\n }\n\n return this.buildFrom(list);\n };\n /** fully remove these terms from the document */\n\n\n exports[\"delete\"] = function (match) {\n var _this3 = this;\n\n // clear the cache\n this.uncache();\n var toRemove = this;\n\n if (match) {\n toRemove = this.match(match);\n }\n\n toRemove.list.forEach(function (phrase) {\n return phrase[\"delete\"](_this3);\n });\n return this;\n }; // aliases\n\n\n exports.remove = exports[\"delete\"];\n});\n\nvar shouldTrim = {\n clean: true,\n reduced: true,\n root: true\n};\n/** return the document as text */\n\nvar text = function text(options) {\n var _this = this;\n\n options = options || {}; //are we showing every phrase?\n\n var showFull = false;\n\n if (this.parents().length === 0) {\n showFull = true;\n } // cache roots, if necessary\n\n\n if (options === 'root' || _typeof(options) === 'object' && options.root) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var txt = this.list.reduce(function (str, p, i) {\n var trimPre = !showFull && i === 0;\n var trimPost = !showFull && i === _this.list.length - 1;\n return str + p.text(options, trimPre, trimPost);\n }, ''); // clumsy final trim of leading/trailing whitespace\n\n if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) {\n txt = txt.trim();\n }\n\n return txt;\n};\n\nvar _01Text = {\n text: text\n};\n\n// get all character startings in doc\nvar termOffsets = function termOffsets(doc) {\n var elapsed = 0;\n var index = 0;\n var offsets = {};\n doc.termList().forEach(function (term) {\n offsets[term.id] = {\n index: index,\n start: elapsed + term.pre.length,\n length: term.text.length\n };\n elapsed += term.pre.length + term.text.length + term.post.length;\n index += 1;\n });\n return offsets;\n};\n\nvar calcOffset = function calcOffset(doc, result, options) {\n // calculate offsets for each term\n var offsets = termOffsets(doc.all()); // add index values\n\n if (options.terms.index || options.index) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.index = offsets[t.id].index;\n });\n o.index = o.terms[0].index;\n });\n } // add offset values\n\n\n if (options.terms.offset || options.offset) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.offset = offsets[t.id] || {};\n }); // let len = o.terms.reduce((n, t, i) => {\n // n += t.offset.length || 0\n // //add whitespace, too\n // console.log(t.post)\n // return n\n // }, 0)\n // The offset information for the entire doc starts at (or just before)\n // the first term, and is as long as the whole text. The code originally\n // copied the entire offset value from terms[0], but since we're now\n // overriding 2 of the three fields, it's cleaner to just create an all-\n // new object and not pretend it's \"just\" the same as terms[0].\n\n o.offset = {\n index: o.terms[0].offset.index,\n start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text),\n length: o.text.length\n };\n });\n }\n};\n\nvar _offset = calcOffset;\n\nvar _02Json = createCommonjsModule(function (module, exports) {\n var jsonDefaults = {\n text: true,\n terms: true,\n trim: true\n }; //some options have dependents\n\n var setOptions = function setOptions(options) {\n options = Object.assign({}, jsonDefaults, options);\n\n if (options.unique) {\n options.reduced = true;\n } //offset calculation requires these options to be on\n\n\n if (options.offset) {\n options.text = true;\n\n if (!options.terms || options.terms === true) {\n options.terms = {};\n }\n\n options.terms.offset = true;\n }\n\n if (options.index || options.terms.index) {\n options.terms = options.terms === true ? {} : options.terms;\n options.terms.id = true;\n }\n\n return options;\n };\n /** pull out desired metadata from the document */\n\n\n exports.json = function () {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n //support json(3) format\n if (typeof options === 'number' && this.list[options]) {\n return this.list[options].json(jsonDefaults);\n }\n\n options = setOptions(options); // cache root strings beforehand, if necessary\n\n if (options.root === true) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var result = this.list.map(function (p) {\n return p.json(options, _this.world);\n }); // add offset and index data for each term\n\n if (options.terms.offset || options.offset || options.terms.index || options.index) {\n _offset(this, result, options);\n } // add frequency #s\n\n\n if (options.frequency || options.freq || options.count) {\n var obj = {};\n this.list.forEach(function (p) {\n var str = p.text('reduced');\n obj[str] = obj[str] || 0;\n obj[str] += 1;\n });\n this.list.forEach(function (p, i) {\n result[i].count = obj[p.text('reduced')];\n });\n } // remove duplicates\n\n\n if (options.unique) {\n var already = {};\n result = result.filter(function (o) {\n if (already[o.reduced] === true) {\n return false;\n }\n\n already[o.reduced] = true;\n return true;\n });\n }\n\n return result;\n }; //aliases\n\n\n exports.data = exports.json;\n});\n\nvar _debug = createCommonjsModule(function (module) {\n // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\n var reset = '\\x1b[0m';\n\n var padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n };\n\n function isClientSide() {\n return typeof window !== 'undefined' && window.document;\n } // some nice colors for client-side debug\n\n\n var css = {\n green: '#7f9c6c',\n red: '#914045',\n blue: '#6699cc',\n magenta: '#6D5685',\n cyan: '#2D85A8',\n yellow: '#e6d7b3',\n black: '#303b50'\n };\n\n var logClientSide = function logClientSide(doc) {\n var tagset = doc.world.tags;\n doc.list.forEach(function (p) {\n console.log('\\n%c\"' + p.text() + '\"', 'color: #e6d7b3;');\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 8);\n var found = tags.find(function (tag) {\n return tagset[tag] && tagset[tag].color;\n });\n var color = 'steelblue';\n\n if (tagset[found]) {\n color = tagset[found].color;\n color = css[color];\n }\n\n console.log(\" \".concat(word, \" - %c\").concat(tags.join(', ')), \"color: \".concat(color || 'steelblue', \";\"));\n });\n });\n }; //cheaper than requiring chalk\n\n\n var cli = {\n green: function green(str) {\n return '\\x1b[32m' + str + reset;\n },\n red: function red(str) {\n return '\\x1b[31m' + str + reset;\n },\n blue: function blue(str) {\n return '\\x1b[34m' + str + reset;\n },\n magenta: function magenta(str) {\n return '\\x1b[35m' + str + reset;\n },\n cyan: function cyan(str) {\n return '\\x1b[36m' + str + reset;\n },\n yellow: function yellow(str) {\n return '\\x1b[33m' + str + reset;\n },\n black: function black(str) {\n return '\\x1b[30m' + str + reset;\n }\n };\n\n var tagString = function tagString(tags, world) {\n tags = tags.map(function (tag) {\n if (!world.tags.hasOwnProperty(tag)) {\n return tag;\n }\n\n var c = world.tags[tag].color || 'blue';\n return cli[c](tag);\n });\n return tags.join(', ');\n }; //output some helpful stuff to the console\n\n\n var debug = function debug(doc) {\n if (isClientSide()) {\n logClientSide(doc);\n return doc;\n }\n\n console.log(cli.blue('====='));\n doc.list.forEach(function (p) {\n console.log(cli.blue(' -----'));\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n {\n text = cli.yellow(text);\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 18);\n var str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world);\n console.log(str);\n });\n });\n console.log('');\n return doc;\n };\n\n module.exports = debug;\n});\n\nvar topk = function topk(doc) {\n var list = doc.json({\n text: false,\n terms: false,\n reduced: true\n }); // combine them\n\n var obj = {};\n list.forEach(function (o) {\n if (!obj[o.reduced]) {\n o.count = 0;\n obj[o.reduced] = o;\n }\n\n obj[o.reduced].count += 1;\n });\n var arr = Object.keys(obj).map(function (k) {\n return obj[k];\n }); // sort them\n\n arr.sort(function (a, b) {\n if (a.count > b.count) {\n return -1;\n } else if (a.count < b.count) {\n return 1;\n }\n\n return 0;\n });\n return arr;\n};\n\nvar _topk = topk;\n\n/** pretty-print the current document and its tags */\n\nvar debug_1 = function debug_1() {\n _debug(this);\n return this;\n};\n/** some named output formats */\n\n\nvar out = function out(method) {\n if (method === 'text') {\n return this.text();\n }\n\n if (method === 'normal') {\n return this.text('normal');\n }\n\n if (method === 'json') {\n return this.json();\n }\n\n if (method === 'offset' || method === 'offsets') {\n return this.json({\n offset: true\n });\n }\n\n if (method === 'array') {\n return this.json({\n terms: false\n }).map(function (obj) {\n return obj.text;\n }).filter(function (str) {\n return str;\n });\n }\n\n if (method === 'freq' || method === 'frequency') {\n return _topk(this);\n }\n\n if (method === 'terms') {\n var list = [];\n this.json({\n text: false,\n terms: {\n text: true\n }\n }).forEach(function (obj) {\n var terms = obj.terms.map(function (t) {\n return t.text;\n });\n terms = terms.filter(function (t) {\n return t;\n });\n list = list.concat(terms);\n });\n return list;\n }\n\n if (method === 'tags') {\n return this.list.map(function (p) {\n return p.terms().reduce(function (h, t) {\n h[t.clean || t.implicit] = Object.keys(t.tags);\n return h;\n }, {});\n });\n }\n\n if (method === 'debug') {\n _debug(this);\n return this;\n }\n\n return this.text();\n};\n\nvar _03Out = {\n debug: debug_1,\n out: out\n};\n\nvar methods$6 = {\n /** alphabetical order */\n alpha: function alpha(a, b) {\n var left = a.text('clean');\n var right = b.text('clean');\n\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n },\n\n /** count the # of characters of each match */\n length: function length(a, b) {\n var left = a.text().trim().length;\n var right = b.text().trim().length;\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n },\n\n /** count the # of terms in each match */\n wordCount: function wordCount(a, b) {\n var left = a.wordCount();\n var right = b.wordCount();\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n }\n};\n/** sort by # of duplicates in the document*/\n\nvar byFreq = function byFreq(doc) {\n var counts = {};\n var options = {\n \"case\": true,\n punctuation: false,\n whitespace: true,\n unicode: true\n };\n doc.list.forEach(function (p) {\n var str = p.text(options);\n counts[str] = counts[str] || 0;\n counts[str] += 1;\n }); // sort by freq\n\n doc.list.sort(function (a, b) {\n var left = counts[a.text(options)];\n var right = counts[b.text(options)];\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; // order results 'chronologically', or document-order\n\n\nvar sortSequential = function sortSequential(doc) {\n var order = {};\n doc.json({\n terms: {\n offset: true\n }\n }).forEach(function (o) {\n order[o.terms[0].id] = o.terms[0].offset.start;\n });\n doc.list = doc.list.sort(function (a, b) {\n if (order[a.start] > order[b.start]) {\n return 1;\n } else if (order[a.start] < order[b.start]) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; //aliases\n\n\nmethods$6.alphabetical = methods$6.alpha;\nmethods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering\n\nvar seqNames = {\n index: true,\n sequence: true,\n seq: true,\n sequential: true,\n chron: true,\n chronological: true\n};\n/** re-arrange the order of the matches (in place) */\n\nvar sort = function sort(input) {\n input = input || 'alpha'; //do this one up-front\n\n if (input === 'freq' || input === 'frequency' || input === 'topk') {\n return byFreq(this);\n }\n\n if (seqNames.hasOwnProperty(input)) {\n return sortSequential(this);\n }\n\n input = methods$6[input] || input; // apply sort method on each phrase\n\n if (typeof input === 'function') {\n this.list = this.list.sort(input);\n return this;\n }\n\n return this;\n};\n/** reverse the order of the matches, but not the words */\n\n\nvar reverse = function reverse() {\n var list = [].concat(this.list);\n list = list.reverse();\n return this.buildFrom(list);\n};\n/** remove any duplicate matches */\n\n\nvar unique$1 = function unique() {\n var list = [].concat(this.list);\n var obj = {};\n list = list.filter(function (p) {\n var str = p.text('reduced').trim() || p.text('implicit').trim();\n\n if (obj.hasOwnProperty(str) === true) {\n return false;\n }\n\n obj[str] = true;\n return true;\n });\n return this.buildFrom(list);\n};\n\nvar _01Sort = {\n sort: sort,\n reverse: reverse,\n unique: unique$1\n};\n\nvar isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g;\nvar quotes = /['‘’“”\"′″‴]+/g;\nvar methods$5 = {\n // cleanup newlines and extra spaces\n whitespace: function whitespace(doc) {\n var termArr = doc.list.map(function (ts) {\n return ts.terms();\n });\n termArr.forEach(function (terms, o) {\n terms.forEach(function (t, i) {\n // keep dashes between words\n if (t.hasDash() === true) {\n t.post = ' - ';\n return;\n } // remove existing spaces\n\n\n t.pre = t.pre.replace(/\\s/g, '');\n t.post = t.post.replace(/\\s/g, ''); //last word? ensure there's a next sentence.\n\n if (terms.length - 1 === i && !termArr[o + 1]) {\n return;\n } // no extra spaces for contractions\n\n\n if (t.implicit && Boolean(t.text) === true) {\n return;\n } // no extra spaces for hyphenated words\n\n\n if (t.hasHyphen() === true) {\n return;\n }\n\n t.post += ' ';\n });\n });\n },\n punctuation: function punctuation(termList) {\n termList.forEach(function (t) {\n // space between hyphenated words\n if (t.hasHyphen() === true) {\n t.post = ' ';\n }\n\n t.pre = t.pre.replace(isPunct, '');\n t.post = t.post.replace(isPunct, ''); // elipses\n\n t.post = t.post.replace(/\\.\\.\\./, ''); // only allow one exclamation\n\n if (/!/.test(t.post) === true) {\n t.post = t.post.replace(/!/g, '');\n t.post = '!' + t.post;\n } // only allow one question mark\n\n\n if (/\\?/.test(t.post) === true) {\n t.post = t.post.replace(/[\\?!]*/, '');\n t.post = '?' + t.post;\n }\n });\n },\n unicode: function unicode(termList) {\n termList.forEach(function (t) {\n if (t.isImplicit() === true) {\n return;\n }\n\n t.text = unicode_1(t.text);\n });\n },\n quotations: function quotations(termList) {\n termList.forEach(function (t) {\n t.post = t.post.replace(quotes, '');\n t.pre = t.pre.replace(quotes, '');\n });\n },\n adverbs: function adverbs(doc) {\n doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove();\n },\n // remove the '.' from 'Mrs.' (safely)\n abbreviations: function abbreviations(doc) {\n doc.list.forEach(function (ts) {\n var terms = ts.terms();\n terms.forEach(function (t, i) {\n if (t.tags.Abbreviation === true && terms[i + 1]) {\n t.post = t.post.replace(/^\\./, '');\n }\n });\n });\n }\n};\nvar _methods = methods$5;\n\nvar defaults = {\n // light\n whitespace: true,\n unicode: true,\n punctuation: true,\n emoji: true,\n acronyms: true,\n abbreviations: true,\n // medium\n \"case\": false,\n contractions: false,\n parentheses: false,\n quotations: false,\n adverbs: false,\n // heavy (loose legibility)\n possessives: false,\n verbs: false,\n nouns: false,\n honorifics: false // pronouns: true,\n\n};\nvar mapping = {\n light: {},\n medium: {\n \"case\": true,\n contractions: true,\n parentheses: true,\n quotations: true,\n adverbs: true\n }\n};\nmapping.heavy = Object.assign({}, mapping.medium, {\n possessives: true,\n verbs: true,\n nouns: true,\n honorifics: true\n});\n/** common ways to clean-up the document, and reduce noise */\n\nvar normalize = function normalize(options) {\n options = options || {}; // support named forms\n\n if (typeof options === 'string') {\n options = mapping[options] || {};\n } // set defaults\n\n\n options = Object.assign({}, defaults, options); // clear the cache\n\n this.uncache();\n var termList = this.termList(); // lowercase things\n\n if (options[\"case\"]) {\n this.toLowerCase();\n } //whitespace\n\n\n if (options.whitespace) {\n _methods.whitespace(this);\n } // unicode: é -> e\n\n\n if (options.unicode) {\n _methods.unicode(termList);\n } //punctuation - keep sentence punctation, quotes, parenths\n\n\n if (options.punctuation) {\n _methods.punctuation(termList);\n } // remove ':)'\n\n\n if (options.emoji) {\n this.remove('(#Emoji|#Emoticon)');\n } // 'f.b.i.' -> 'FBI'\n\n\n if (options.acronyms) {\n this.acronyms().strip(); // .toUpperCase()\n } // remove period from abbreviations\n\n\n if (options.abbreviations) {\n _methods.abbreviations(this);\n } // --Medium methods--\n // `isn't` -> 'is not'\n\n\n if (options.contraction || options.contractions) {\n this.contractions().expand();\n } // '(word)' -> 'word'\n\n\n if (options.parentheses) {\n this.parentheses().unwrap();\n } // remove \"\" punctuation\n\n\n if (options.quotations || options.quotes) {\n _methods.quotations(termList);\n } // remove any un-necessary adverbs\n\n\n if (options.adverbs) {\n _methods.adverbs(this);\n } // --Heavy methods--\n // `cory hart's -> cory hart'\n\n\n if (options.possessive || options.possessives) {\n this.possessives().strip();\n } // 'he walked' -> 'he walk'\n\n\n if (options.verbs) {\n this.verbs().toInfinitive();\n } // 'three dogs' -> 'three dog'\n\n\n if (options.nouns || options.plurals) {\n this.nouns().toSingular();\n } // remove 'Mr.' from 'Mr John Smith'\n\n\n if (options.honorifics) {\n this.remove('#Honorific');\n }\n\n return this;\n};\n\nvar _02Normalize = {\n normalize: normalize\n};\n\nvar _03Split = createCommonjsModule(function (module, exports) {\n /** return a Document with three parts for every match\n * seperate everything before the word, as a new phrase\n */\n exports.splitOn = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitOn(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before) {\n matches.push(parts.before);\n }\n\n if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** return a Document with two parts for every match\n * seperate everything after the word, as a new phrase\n */\n\n\n exports.splitAfter = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitAfter(this);\n } // start looking for our matches\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before && parts.match) {\n // merge these two together\n parts.before.length += parts.match.length;\n matches.push(parts.before);\n } else if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n\n exports.split = exports.splitAfter; //i guess?\n\n /** return a Document with two parts for every match */\n\n exports.splitBefore = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitBefore(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add before part in\n\n if (parts.before) {\n matches.push(parts.before);\n } // merge match+after\n\n\n if (parts.match && parts.after) {\n parts.match.length += parts.after.length;\n } // start matching now on the end\n\n\n carry = parts.match;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** split a document into labeled sections */\n\n\n exports.segment = function (regs, options) {\n regs = regs || {};\n options = options || {\n text: true\n };\n var doc = this;\n var keys = Object.keys(regs); // split em\n\n keys.forEach(function (k) {\n doc = doc.splitOn(k);\n }); //add labels for each section\n\n doc.list.forEach(function (p) {\n for (var i = 0; i < keys.length; i += 1) {\n if (p.has(keys[i])) {\n p.segment = regs[keys[i]];\n return;\n }\n }\n });\n return doc.list.map(function (p) {\n var res = p.json(options);\n res.segment = p.segment || null;\n return res;\n });\n };\n});\n\nvar eachTerm = function eachTerm(doc, fn) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t[fn](world);\n });\n });\n return doc;\n};\n/** turn every letter of every term to lower-cse */\n\n\nvar toLowerCase = function toLowerCase() {\n return eachTerm(this, 'toLowerCase');\n};\n/** turn every letter of every term to upper case */\n\n\nvar toUpperCase = function toUpperCase() {\n return eachTerm(this, 'toUpperCase');\n};\n/** upper-case the first letter of each term */\n\n\nvar toTitleCase = function toTitleCase() {\n return eachTerm(this, 'toTitleCase');\n};\n/** remove whitespace and title-case each term */\n\n\nvar toCamelCase = function toCamelCase() {\n this.list.forEach(function (p) {\n //remove whitespace\n var terms = p.terms();\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.toTitleCase();\n }\n\n if (i !== terms.length - 1) {\n t.post = '';\n }\n });\n }); // this.tag('#CamelCase', 'toCamelCase')\n\n return this;\n};\n\nvar _04Case = {\n toLowerCase: toLowerCase,\n toUpperCase: toUpperCase,\n toTitleCase: toTitleCase,\n toCamelCase: toCamelCase\n};\n\n/** add this punctuation or whitespace before each match: */\n\nvar _05Whitespace = createCommonjsModule(function (module, exports) {\n exports.pre = function (str, concat) {\n if (str === undefined) {\n return this.list[0].terms(0).pre;\n }\n\n this.list.forEach(function (p) {\n var term = p.terms(0);\n\n if (concat === true) {\n term.pre += str;\n } else {\n term.pre = str;\n }\n });\n return this;\n };\n /** add this punctuation or whitespace after each match: */\n\n\n exports.post = function (str, concat) {\n // return array of post strings\n if (str === undefined) {\n return this.list.map(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n return term.post;\n });\n } // set post string on all ends\n\n\n this.list.forEach(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n\n if (concat === true) {\n term.post += str;\n } else {\n term.post = str;\n }\n });\n return this;\n };\n /** remove start and end whitespace */\n\n\n exports.trim = function () {\n this.list = this.list.map(function (p) {\n return p.trim();\n });\n return this;\n };\n /** connect words with hyphen, and remove whitespace */\n\n\n exports.hyphenate = function () {\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.pre = '';\n }\n\n if (terms[i + 1]) {\n t.post = '-';\n }\n });\n });\n return this;\n };\n /** remove hyphens between words, and set whitespace */\n\n\n exports.dehyphenate = function () {\n var hasHyphen = /(-|–|—)/;\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t) {\n if (hasHyphen.test(t.post)) {\n t.post = ' ';\n }\n });\n });\n return this;\n };\n\n exports.deHyphenate = exports.dehyphenate;\n /** add quotations around these matches */\n\n exports.toQuotations = function (start, end) {\n start = start || \"\\\"\";\n end = end || \"\\\"\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n\n exports.toQuotation = exports.toQuotations;\n /** add brackets around these matches */\n\n exports.toParentheses = function (start, end) {\n start = start || \"(\";\n end = end || \")\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n});\n\n/** make all phrases into one phrase */\nvar join = function join(str) {\n // clear the cache\n this.uncache(); // make one large phrase - 'main'\n\n var main = this.list[0];\n var before = main.length;\n var removed = {};\n\n for (var i = 1; i < this.list.length; i++) {\n var p = this.list[i];\n removed[p.start] = true;\n var term = main.lastTerm(); // add whitespace between them\n\n if (str) {\n term.post += str;\n } // main -> p\n\n\n term.next = p.start; // main <- p\n\n p.terms(0).prev = term.id;\n main.length += p.length;\n main.cache = {};\n } // parents are bigger than than their children.\n // when we increase a child, we increase their parent too.\n\n\n var increase = main.length - before;\n this.parents().forEach(function (doc) {\n // increase length on each effected phrase\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var _i = 0; _i < terms.length; _i++) {\n if (terms[_i].id === main.start) {\n p.length += increase;\n break;\n }\n }\n\n p.cache = {};\n }); // remove redundant phrases now\n\n doc.list = doc.list.filter(function (p) {\n return removed[p.start] !== true;\n });\n }); // return one major phrase\n\n return this.buildFrom([main]);\n};\n\nvar _06Join = {\n join: join\n};\n\nvar postPunct = /[,\\)\"';:\\-–—\\.…]/; // const irregulars = {\n// 'will not': `won't`,\n// 'i am': `i'm`,\n// }\n\nvar setContraction = function setContraction(m, suffix) {\n if (!m.found) {\n return;\n }\n\n var terms = m.termList(); //avoid any problematic punctuation\n\n for (var i = 0; i < terms.length - 1; i++) {\n var t = terms[i];\n\n if (postPunct.test(t.post)) {\n return;\n }\n } // set them as implict\n\n\n terms.forEach(function (t) {\n t.implicit = t.clean;\n }); // perform the contraction\n\n terms[0].text += suffix; // clean-up the others\n\n terms.slice(1).forEach(function (t) {\n t.text = '';\n });\n\n for (var _i = 0; _i < terms.length - 1; _i++) {\n var _t = terms[_i];\n _t.post = _t.post.replace(/ /, '');\n }\n};\n/** turn 'i am' into i'm */\n\n\nvar contract = function contract() {\n var doc = this.not('@hasContraction'); // we are -> we're\n\n var m = doc.match('(we|they|you) are');\n setContraction(m, \"'re\"); // they will -> they'll\n\n m = doc.match('(he|she|they|it|we|you) will');\n setContraction(m, \"'ll\"); // she is -> she's\n\n m = doc.match('(he|she|they|it|we) is');\n setContraction(m, \"'s\"); // spencer is -> spencer's\n\n m = doc.match('#Person is');\n setContraction(m, \"'s\"); // spencer would -> spencer'd\n\n m = doc.match('#Person would');\n setContraction(m, \"'d\"); // would not -> wouldn't\n\n m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not');\n setContraction(m, \"n't\"); // i have -> i've\n\n m = doc.match('(i|we|they) have');\n setContraction(m, \"'ve\"); // would have -> would've\n\n m = doc.match('(would|should|could) have');\n setContraction(m, \"'ve\"); // i am -> i'm\n\n m = doc.match('i am');\n setContraction(m, \"'m\"); // going to -> gonna\n\n m = doc.match('going to');\n return this;\n};\n\nvar _07Contract = {\n contract: contract\n};\n\nvar methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract);\n\nvar methods$3 = {}; // allow helper methods like .adjectives() and .adverbs()\n\nvar arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']];\narr.forEach(function (a) {\n methods$3[a[0]] = function (n) {\n var m = this.match(a[1]);\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n}); // aliases\n\nmethods$3.emojis = methods$3.emoji;\nmethods$3.atmentions = methods$3.atMentions;\nmethods$3.words = methods$3.terms;\n/** return anything tagged as a phone number */\n\nmethods$3.phoneNumbers = function (n) {\n var m = this.splitAfter('@hasComma');\n m = m.match('#PhoneNumber+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** Deprecated: please use compromise-numbers plugin */\n\n\nmethods$3.money = function (n) {\n var m = this.match('#Money #Currency?');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all cities, countries, addresses, and regions */\n\n\nmethods$3.places = function (n) {\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep);\n m.sort('index');\n m = m.match('#Place+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all schools, businesses and institutions */\n\n\nmethods$3.organizations = function (n) {\n var m = this.clauses();\n m = m.match('#Organization+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n}; //combine them with .topics() method\n\n\nmethods$3.entities = function (n) {\n var r = this.clauses(); // Find people, places, and organizations\n\n var yup = r.people();\n yup = yup.concat(r.places());\n yup = yup.concat(r.organizations());\n var ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father'];\n yup = yup.not(ignore); //return them to normal ordering\n\n yup.sort('sequence'); // yup.unique() //? not sure\n\n if (typeof n === 'number') {\n yup = yup.get(n);\n }\n\n return yup;\n}; //aliases\n\n\nmethods$3.things = methods$3.entities;\nmethods$3.topics = methods$3.entities;\nvar _simple = methods$3;\n\nvar underOver = /^(under|over)-?/;\n/** match a word-sequence, like 'super bowl' in the lexicon */\n\nvar tryMultiple = function tryMultiple(terms, t, world) {\n var lex = world.words; //try a two-word version\n\n var txt = terms[t].reduced + ' ' + terms[t + 1].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-two', world);\n terms[t + 1].tag(lex[txt], 'lexicon-two', world);\n return 1;\n } //try a three-word version?\n\n\n if (t + 2 < terms.length) {\n txt += ' ' + terms[t + 2].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-three', world);\n terms[t + 1].tag(lex[txt], 'lexicon-three', world);\n terms[t + 2].tag(lex[txt], 'lexicon-three', world);\n return 2;\n }\n } //try a four-word version?\n\n\n if (t + 3 < terms.length) {\n txt += ' ' + terms[t + 3].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-four', world);\n terms[t + 1].tag(lex[txt], 'lexicon-four', world);\n terms[t + 2].tag(lex[txt], 'lexicon-four', world);\n terms[t + 3].tag(lex[txt], 'lexicon-four', world);\n return 3;\n }\n }\n\n return 0;\n};\n/** look at each word in our list of known-words */\n\n\nvar checkLexicon = function checkLexicon(terms, world) {\n var lex = world.words;\n var hasCompound = world.hasCompound; // use reduced?\n //go through each term, and check the lexicon\n\n for (var t = 0; t < terms.length; t += 1) {\n var str = terms[t].clean; //is it the start of a compound word, like 'super bowl'?\n\n if (hasCompound[str] === true && t + 1 < terms.length) {\n var foundWords = tryMultiple(terms, t, world);\n\n if (foundWords > 0) {\n t += foundWords; //skip any already-found words\n\n continue;\n }\n } //try one-word lexicon\n\n\n if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) {\n terms[t].tag(lex[str], 'lexicon', world);\n continue;\n } // look at reduced version of term, too\n\n\n if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) {\n terms[t].tag(lex[terms[t].reduced], 'lexicon', world);\n continue;\n } // prefix strip: try to match 'take' for 'undertake'\n\n\n if (underOver.test(str) === true) {\n var noPrefix = str.replace(underOver, '');\n\n if (lex.hasOwnProperty(noPrefix) === true) {\n terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world);\n }\n }\n }\n\n return terms;\n};\n\nvar _01Lexicon = checkLexicon;\n\nvar apostrophes = /[\\'‘’‛‵′`´]$/;\nvar perSec = /^(m|k|cm|km|m)\\/(s|h|hr)$/; // '5 k/m'\n//\n\nvar checkPunctuation = function checkPunctuation(terms, i, world) {\n var term = terms[i]; //check hyphenation\n // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') {\n // term.tag('Hyphenated', 'has-hyphen', world)\n // }\n // support 'head-over'\n // if (term.hasHyphen() === true) {\n // console.log(term.tags)\n // }\n // console.log(term.hasHyphen(), term.text)\n //an end-tick (trailing apostrophe) - flanders', or Carlos'\n\n if (apostrophes.test(term.text)) {\n if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) {\n var endChar = term.clean[term.clean.length - 2]; //flanders'\n\n if (endChar === 's') {\n term.tag(['Possessive', 'Noun'], 'end-tick', world);\n return;\n } //chillin'\n\n\n if (endChar === 'n') {\n term.tag(['Gerund'], 'chillin', world);\n }\n }\n } // '5 km/s'\n\n\n if (perSec.test(term.text)) {\n term.tag('Unit', 'per-sec', world);\n } // 'NASA' is, but not 'i REALLY love it.'\n // if (term.tags.Noun === true && isAcronym(term, world)) {\n // term.tag('Acronym', 'acronym-step', world)\n // term.tag('Noun', 'acronym-infer', world)\n // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n // term.tag('Acronym', 'one-letter-acronym', world)\n // term.tag('Noun', 'one-letter-infer', world)\n // }\n\n};\n\nvar _02Punctuation = checkPunctuation;\n\n//these are regexes applied to t.text, instead of t.clean\n// order matters.\nvar startsWith = [//web tags\n[/^[\\w\\.]+@[\\w\\.]+\\.[a-z]{2,3}$/, 'Email'], //not fancy\n[/^#[a-z0-9_\\u00C0-\\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm\n[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30\n[/^@\\w{2,}$/, 'AtMention'], //@spencermountain\n[/^(https?:\\/\\/|www\\.)\\w+\\.[a-z]{2,3}/, 'Url'], //with http/www\n[/^[\\w./]+\\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain\n//dates/times\n[/^'[0-9]{2}$/, 'Year'], //like '97\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32\n[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm\n[/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs\n[/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+\n[/^[a-z0-9]*? o\\'?clock$/, 'Time'], //3 oclock\n[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z\n[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89\n[/^[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,4}$/, 'Date'], // 03/02/89\n[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89\n[/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3\n[/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3\n//names\n[/^ma?c\\'.*/, 'LastName'], //mc'adams\n[/^o\\'[drlkn].*/, 'LastName'], //o'douggan\n[/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes\n//slang things\n[/^(lol)+[sz]$/, 'Expression'], //lol\n[/^woo+a*?h?$/, 'Expression'], //whoaa, wooo\n[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'],\n[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date'], // 03-02-89\n//phone numbers\n[/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809\n[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809\n//money\n// currency regex\n// /[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\n//like $5.30\n[/^[-+]?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(k|m|b|bn)?\\+?$/, ['Money', 'Value']], //like 5.30$\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\\+?$/, ['Money', 'Value']], //like $400usd\n[/^[-+]?[\\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers\n// 50 | -50 | 3.23 | 5,999.0 | 10+\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th\n[/^\\.[0-9]+\\+?$/, ['Cardinal', 'NumericValue']], //percent\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% ..\n[/^\\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% ..\n//fraction\n[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths\n//range\n[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th\n//time-range\n[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30\n//with unit\n[/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp\n//ordinal\n// [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th\n// [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th\n];\n\nvar romanNumeral = /^[IVXLCDM]{2,}$/;\nvar romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877\n//try each of the ^regexes in our list\n\nvar checkRegex$1 = function checkRegex(term, world) {\n var str = term.text; // do them all!\n\n for (var r = 0; r < startsWith.length; r += 1) {\n if (startsWith[r][0].test(str) === true) {\n term.tagSafe(startsWith[r][1], 'prefix #' + r, world);\n break;\n }\n } // do some more!\n //roman numberals - XVII\n\n\n if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) {\n term.tag('RomanNumeral', 'xvii', world);\n }\n};\n\nvar _03Prefixes = checkRegex$1;\n\n//regex suffix patterns and their most common parts of speech,\n//built using wordnet, by spencer kelly.\n//this mapping shrinks-down the uglified build\nvar Adj$1 = 'Adjective';\nvar Inf$1 = 'Infinitive';\nvar Pres$1 = 'PresentTense';\nvar Sing$1 = 'Singular';\nvar Past$1 = 'PastTense';\nvar Adverb = 'Adverb';\nvar Exp = 'Expression';\nvar Actor$1 = 'Actor';\nvar Verb = 'Verb';\nvar Noun$1 = 'Noun';\nvar Last$1 = 'LastName'; //the order here matters.\n//regexes indexed by mandated last-character\n\nvar endsWith = {\n a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female)\n [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj$1]],\n d: [//==-ed==\n //double-consonant\n [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned\n //double-vowel\n [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered\n //-hed\n [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed\n //-rd\n [/.[aeiou]red$/, Past$1], //stored\n [/.[aeiou]r?ried$/, Past$1], //buried\n //-led\n [/.[bcdgtr]led$/, Past$1], //startled, rumbled\n [/.[aoui]f?led$/, Past$1], //impaled, stifled\n //-sed\n [/.[iao]sed$/, Past$1], //franchised\n [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced\n //-med\n [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed\n //-ked\n [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked\n //-ged\n [/[aeiou][nl]?ged$/, Past$1], //engaged\n //-ted\n [/.[tdbwxz]ed$/, Past$1], //bribed, boxed\n [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed\n //-ied\n [/.[cdlmnprstv]ied$/, Past$1], //rallied\n [/[^aeiou]ard$/, Sing$1], //card\n [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]],\n e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1]],\n h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp] //uhoh\n ],\n i: [[/.[oau][wvl]ski$/, Last$1] //polish (male)\n ],\n k: [[/^(k){2}$/, Exp] //kkkk\n ],\n l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]],\n m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date']],\n n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin'\n ],\n o: [[/^no+$/, Exp], //noooo\n [/^(yo)+$/, Exp], //yoyo\n [/^woo+[pt]?$/, Exp] //woo\n ],\n r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']],\n t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]],\n s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks\n [/.[aeiou]kes$/, Pres$1], //bakes\n [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\\'s$/, Noun$1], [/^yes+$/, Exp] //yessss\n ],\n v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe\n ],\n y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]]\n};\n\n//just a foolish lookup of known suffixes\nvar Adj = 'Adjective';\nvar Inf = 'Infinitive';\nvar Pres = 'PresentTense';\nvar Sing = 'Singular';\nvar Past = 'PastTense';\nvar Avb = 'Adverb';\nvar Plrl = 'Plural';\nvar Actor = 'Actor';\nvar Vb = 'Verb';\nvar Noun = 'Noun';\nvar Last = 'LastName';\nvar Modal = 'Modal';\nvar Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\n\nvar suffixMap = [null, //0\nnull, //1\n{\n //2-letter\n ea: Sing,\n ia: Noun,\n ic: Adj,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb\n}, {\n //3-letter\n oed: Past,\n ued: Past,\n xed: Past,\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n azy: Adj,\n eer: Noun,\n end: Vb,\n ped: Past,\n ffy: Adj,\n ify: Inf,\n ing: 'Gerund',\n //likely to be converted to Adj after lexicon pass\n ize: Inf,\n lar: Adj,\n mum: Adj,\n nes: Pres,\n nny: Adj,\n oid: Adj,\n ous: Adj,\n que: Adj,\n rol: Sing,\n sis: Sing,\n zes: Pres\n}, {\n //4-letter\n amed: Past,\n aped: Past,\n ched: Past,\n lked: Past,\n nded: Past,\n cted: Past,\n dged: Past,\n akis: Last,\n //greek\n cede: Inf,\n chuk: Last,\n //east-europe\n czyk: Last,\n //polish (male)\n ects: Pres,\n ends: Vb,\n enko: Last,\n //east-europe\n ette: Sing,\n fies: Pres,\n fore: Avb,\n gate: Inf,\n gone: Adj,\n ices: Plrl,\n ints: Plrl,\n ines: Plrl,\n ions: Plrl,\n less: Avb,\n llen: Adj,\n made: Adj,\n nsen: Last,\n //norway\n oses: Pres,\n ould: Modal,\n some: Adj,\n sson: Last,\n //swedish male\n tage: Inf,\n teen: 'Value',\n tion: Sing,\n tive: Adj,\n tors: Noun,\n vice: Sing\n}, {\n //5-letter\n tized: Past,\n urned: Past,\n eased: Past,\n ances: Plrl,\n bound: Adj,\n ettes: Plrl,\n fully: Avb,\n ishes: Pres,\n ities: Plrl,\n marek: Last,\n //polish (male)\n nssen: Last,\n //norway\n ology: Noun,\n ports: Plrl,\n rough: Adj,\n tches: Pres,\n tieth: 'Ordinal',\n tures: Plrl,\n wards: Avb,\n where: Avb\n}, {\n //6-letter\n auskas: Last,\n //lithuania\n keeper: Actor,\n logist: Actor,\n teenth: 'Value'\n}, {\n //7-letter\n opoulos: Last,\n //greek\n borough: Place,\n //Hillsborough\n sdottir: Last //swedish female\n\n}];\n\nvar endRegexs = function endRegexs(term, world) {\n var str = term.clean;\n var _char = str[str.length - 1];\n\n if (endsWith.hasOwnProperty(_char) === true) {\n var regs = endsWith[_char];\n\n for (var r = 0; r < regs.length; r += 1) {\n if (regs[r][0].test(str) === true) {\n term.tagSafe(regs[r][1], \"endReg \".concat(_char, \" #\").concat(r), world);\n break;\n }\n }\n }\n}; //sweep-through all suffixes\n\n\nvar knownSuffixes = function knownSuffixes(term, world) {\n var len = term.clean.length;\n var max = 7;\n\n if (len <= max) {\n max = len - 1;\n }\n\n for (var i = max; i > 1; i -= 1) {\n var str = term.clean.substr(len - i, len);\n\n if (suffixMap[str.length].hasOwnProperty(str) === true) {\n var tag = suffixMap[str.length][str];\n term.tagSafe(tag, 'suffix -' + str, world);\n break;\n }\n }\n}; //all-the-way-down!\n\n\nvar checkRegex = function checkRegex(term, world) {\n knownSuffixes(term, world);\n endRegexs(term, world);\n};\n\nvar _04Suffixes = checkRegex;\n\n//just some of the most common emoticons\n//faster than\n//http://stackoverflow.com/questions/28077049/regex-matching-emoticons\nvar emoticons = {\n ':(': true,\n ':)': true,\n ':P': true,\n ':p': true,\n ':O': true,\n ':3': true,\n ':|': true,\n ':/': true,\n ':\\\\': true,\n ':$': true,\n ':*': true,\n ':@': true,\n ':-(': true,\n ':-)': true,\n ':-P': true,\n ':-p': true,\n ':-O': true,\n ':-3': true,\n ':-|': true,\n ':-/': true,\n ':-\\\\': true,\n ':-$': true,\n ':-*': true,\n ':-@': true,\n ':^(': true,\n ':^)': true,\n ':^P': true,\n ':^p': true,\n ':^O': true,\n ':^3': true,\n ':^|': true,\n ':^/': true,\n ':^\\\\': true,\n ':^$': true,\n ':^*': true,\n ':^@': true,\n '):': true,\n '(:': true,\n '$:': true,\n '*:': true,\n ')-:': true,\n '(-:': true,\n '$-:': true,\n '*-:': true,\n ')^:': true,\n '(^:': true,\n '$^:': true,\n '*^:': true,\n '<3': true,\n ' 35) {\n return false;\n }\n\n return true;\n }\n\n return false;\n}; //check against emoticon whitelist\n\n\nvar isEmoticon = function isEmoticon(str) {\n str = str.replace(/^[:;]/, ':'); //normalize the 'eyes'\n\n return emoticons.hasOwnProperty(str);\n};\n\nvar tagEmoji = function tagEmoji(term, world) {\n var raw = term.pre + term.text + term.post;\n raw = raw.trim(); //dont double-up on ending periods\n\n raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis\n\n if (isCommaEmoji(raw) === true) {\n term.tag('Emoji', 'comma-emoji', world);\n term.text = raw;\n term.pre = term.pre.replace(':', '');\n term.post = term.post.replace(':', '');\n } //test for unicode emojis\n\n\n if (term.text.match(emojiReg)) {\n term.tag('Emoji', 'unicode-emoji', world);\n term.text = raw;\n } //test for emoticon ':)' emojis\n\n\n if (isEmoticon(raw) === true) {\n term.tag('Emoticon', 'emoticon-emoji', world);\n term.text = raw;\n }\n};\n\nvar _05Emoji = tagEmoji;\n\nvar steps = {\n lexicon: _01Lexicon,\n punctuation: _02Punctuation,\n regex: _03Prefixes,\n suffix: _04Suffixes,\n emoji: _05Emoji\n}; //'lookups' look at a term by itself\n\nvar lookups = function lookups(doc, terms) {\n var world = doc.world; //our list of known-words\n\n steps.lexicon(terms, world); //try these other methods\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i]; //or maybe some helpful punctuation\n\n steps.punctuation(terms, i, world); //mostly prefix checks\n\n steps.regex(term, world); //maybe we can guess\n\n steps.suffix(term, world); //emoji and emoticons\n\n steps.emoji(term, world);\n }\n\n return doc;\n};\n\nvar _01Init = lookups;\n\n//markov-like stats about co-occurance, for hints about unknown terms\n//basically, a little-bit better than the noun-fallback\n//just top n-grams from nlp tags, generated from nlp-corpus\n//after this word, here's what happens usually\nvar afterThisWord = {\n i: 'Verb',\n //44% //i walk..\n first: 'Noun',\n //50% //first principles..\n it: 'Verb',\n //33%\n there: 'Verb',\n //35%\n not: 'Verb',\n //33%\n because: 'Noun',\n //31%\n \"if\": 'Noun',\n //32%\n but: 'Noun',\n //26%\n who: 'Verb',\n //40%\n \"this\": 'Noun',\n //37%\n his: 'Noun',\n //48%\n when: 'Noun',\n //33%\n you: 'Verb',\n //35%\n very: 'Adjective',\n // 39%\n old: 'Noun',\n //51%\n never: 'Verb',\n //42%\n before: 'Noun' //28%\n\n}; //in advance of this word, this is what happens usually\n\nvar beforeThisWord = {\n there: 'Verb',\n //23% // be there\n me: 'Verb',\n //31% //see me\n man: 'Adjective',\n // 80% //quiet man\n only: 'Verb',\n //27% //sees only\n him: 'Verb',\n //32% //show him\n were: 'Noun',\n //48% //we were\n took: 'Noun',\n //38% //he took\n himself: 'Verb',\n //31% //see himself\n went: 'Noun',\n //43% //he went\n who: 'Noun',\n //47% //person who\n jr: 'Person'\n}; //following this POS, this is likely\n\nvar afterThisPOS = {\n Adjective: 'Noun',\n //36% //blue dress\n Possessive: 'Noun',\n //41% //his song\n Determiner: 'Noun',\n //47%\n Adverb: 'Verb',\n //20%\n Pronoun: 'Verb',\n //40%\n Value: 'Noun',\n //47%\n Ordinal: 'Noun',\n //53%\n Modal: 'Verb',\n //35%\n Superlative: 'Noun',\n //43%\n Demonym: 'Noun',\n //38%\n Honorific: 'Person' //\n\n}; //in advance of this POS, this is likely\n\nvar beforeThisPOS = {\n Copula: 'Noun',\n //44% //spencer is\n PastTense: 'Noun',\n //33% //spencer walked\n Conjunction: 'Noun',\n //36%\n Modal: 'Noun',\n //38%\n Pluperfect: 'Noun',\n //40%\n PerfectTense: 'Verb' //32%\n\n};\nvar markov = {\n beforeThisWord: beforeThisWord,\n afterThisWord: afterThisWord,\n beforeThisPos: beforeThisPOS,\n afterThisPos: afterThisPOS\n};\n\nvar afterKeys = Object.keys(markov.afterThisPos);\nvar beforeKeys = Object.keys(markov.beforeThisPos);\n\nvar checkNeighbours = function checkNeighbours(terms, world) {\n var _loop = function _loop(i) {\n var term = terms[i]; //do we still need a tag?\n\n if (term.isKnown() === true) {\n return \"continue\";\n } //ok, this term needs a tag.\n //look at previous word for clues..\n\n\n var lastTerm = terms[i - 1];\n\n if (lastTerm) {\n // 'foobar term'\n if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) {\n var tag = markov.afterThisWord[lastTerm.clean];\n term.tag(tag, 'after-' + lastTerm.clean, world);\n return \"continue\";\n } // 'Tag term'\n // (look at previous POS tags for clues..)\n\n\n var foundTag = afterKeys.find(function (tag) {\n return lastTerm.tags[tag];\n });\n\n if (foundTag !== undefined) {\n var _tag = markov.afterThisPos[foundTag];\n term.tag(_tag, 'after-' + foundTag, world);\n return \"continue\";\n }\n } //look at next word for clues..\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm) {\n // 'term foobar'\n if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) {\n var _tag2 = markov.beforeThisWord[nextTerm.clean];\n term.tag(_tag2, 'before-' + nextTerm.clean, world);\n return \"continue\";\n } // 'term Tag'\n // (look at next POS tags for clues..)\n\n\n var _foundTag = beforeKeys.find(function (tag) {\n return nextTerm.tags[tag];\n });\n\n if (_foundTag !== undefined) {\n var _tag3 = markov.beforeThisPos[_foundTag];\n term.tag(_tag3, 'before-' + _foundTag, world);\n return \"continue\";\n }\n }\n };\n\n for (var i = 0; i < terms.length; i += 1) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n};\n\nvar _01Neighbours = checkNeighbours;\n\nvar titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\nvar hasNumber = /[0-9]/;\n/** look for any grammar signals based on capital/lowercase */\n\nvar checkCase = function checkCase(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 1; i < terms.length; i++) {\n var term = terms[i];\n\n if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) {\n term.tag('ProperNoun', 'titlecase-noun', world);\n }\n }\n });\n};\n\nvar _02Case = checkCase;\n\nvar hasPrefix = /^(re|un)-?[a-z\\u00C0-\\u00FF]/;\nvar prefix = /^(re|un)-?/;\n/** check 'rewatch' in lexicon as 'watch' */\n\nvar checkPrefix = function checkPrefix(terms, world) {\n var lex = world.words;\n terms.forEach(function (term) {\n // skip if we have a good tag already\n if (term.isKnown() === true) {\n return;\n } //does it start with 'un|re'\n\n\n if (hasPrefix.test(term.clean) === true) {\n // look for the root word in the lexicon:\n var stem = term.clean.replace(prefix, '');\n\n if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) {\n term.tag(lex[stem], 'stem-' + stem, world);\n }\n }\n });\n};\n\nvar _03Stem = checkPrefix;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$3 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens\n/(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar isPlural_1$2 = {\n isSingular: isSingular$1,\n isPlural: isPlural$3\n};\n\nvar noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday'];\nvar notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/];\nvar notSingular = [/i$/, /ae$/];\n/** turn nouns into singular/plural */\n\nvar checkPlural = function checkPlural(t, world) {\n if (t.tags.Noun && !t.tags.Acronym) {\n var str = t.clean; //skip existing tags, fast\n\n if (t.tags.Singular || t.tags.Plural) {\n return;\n } //too short\n\n\n if (str.length <= 3) {\n t.tag('Singular', 'short-singular', world);\n return;\n } //is it impossible to be plural?\n\n\n if (noPlurals.find(function (tag) {\n return t.tags[tag];\n })) {\n return;\n } // isPlural suffix rules\n\n\n if (isPlural_1$2.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Plural', 'plural-rules', world);\n return;\n } // isSingular suffix rules\n\n\n if (isPlural_1$2.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Singular', 'singular-rules', world);\n return;\n } // finally, fallback 'looks plural' rules..\n\n\n if (/s$/.test(str) === true) {\n //avoid anything too sketchy to be plural\n if (notPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Plural', 'plural-fallback', world);\n return;\n } //avoid anything too sketchy to be singular\n\n\n if (notSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Singular', 'singular-fallback', world);\n }\n};\n\nvar _04Plurals = checkPlural;\n\n//nouns that also signal the title of an unknown organization\n//todo remove/normalize plural forms\nvar orgWords = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law',\n'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network',\n'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party',\n\"people's party\", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers'];\nvar organizations = orgWords.reduce(function (h, str) {\n h[str] = 'Noun';\n return h;\n}, {});\n\nvar maybeOrg = function maybeOrg(t) {\n //must be a noun\n if (!t.tags.Noun) {\n return false;\n } //can't be these things\n\n\n if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) {\n return false;\n } //must be one of these\n\n\n if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) {\n return true;\n }\n\n return false;\n};\n\nvar tagOrgs = function tagOrgs(terms, world) {\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (organizations[t.clean] !== undefined && organizations.hasOwnProperty(t.clean) === true) {\n // look-backward - eg. 'Toronto University'\n var lastTerm = terms[i - 1];\n\n if (lastTerm !== undefined && maybeOrg(lastTerm) === true) {\n lastTerm.tagSafe('Organization', 'org-word-1', world);\n t.tagSafe('Organization', 'org-word-2', world);\n continue;\n } //look-forward - eg. University of Toronto\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm !== undefined && nextTerm.clean === 'of') {\n if (terms[i + 2] && maybeOrg(terms[i + 2])) {\n t.tagSafe('Organization', 'org-of-word-1', world);\n nextTerm.tagSafe('Organization', 'org-of-word-2', world);\n terms[i + 2].tagSafe('Organization', 'org-of-word-3', world);\n continue;\n }\n }\n }\n }\n};\n\nvar _05Organizations = tagOrgs;\n\nvar oneLetterAcronym = /^[A-Z]('s|,)?$/;\nvar periodSeperated = /([A-Z]\\.){2}[A-Z]?/i;\nvar oneLetterWord = {\n I: true,\n A: true\n};\n\nvar isAcronym = function isAcronym(term, world) {\n var str = term.reduced; // a known acronym like fbi\n\n if (term.tags.Acronym) {\n return true;\n } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) {\n // return false\n // }\n // known-words, like 'PIZZA' is not an acronym.\n\n\n if (world.words[str]) {\n return false;\n } // long capitalized words are not usually either\n\n\n if (str.length > 5) {\n return false;\n }\n\n return term.isAcronym();\n}; // F.B.I., NBC, - but not 'NO COLLUSION'\n\n\nvar checkAcronym = function checkAcronym(terms, world) {\n terms.forEach(function (term) {\n //these are not acronyms\n if (term.tags.RomanNumeral === true) {\n return;\n } //period-ones F.D.B.\n\n\n if (periodSeperated.test(term.text) === true) {\n term.tag('Acronym', 'period-acronym', world);\n } //non-period ones are harder\n\n\n if (term.isUpperCase() && isAcronym(term, world)) {\n term.tag('Acronym', 'acronym-step', world);\n term.tag('Noun', 'acronym-infer', world);\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n term.tag('Acronym', 'one-letter-acronym', world);\n term.tag('Noun', 'one-letter-infer', world);\n } //if it's a organization,\n\n\n if (term.tags.Organization && term.text.length <= 3) {\n term.tag('Acronym', 'acronym-org', world);\n }\n\n if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) {\n term.tag('Acronym', 'acronym-org-case', world);\n }\n });\n};\n\nvar _06Acronyms = checkAcronym;\n\nvar step = {\n neighbours: _01Neighbours,\n \"case\": _02Case,\n stem: _03Stem,\n plural: _04Plurals,\n organizations: _05Organizations,\n acronyms: _06Acronyms\n}; //\n\nvar fallbacks = function fallbacks(doc, terms) {\n var world = doc.world; // if it's empty, consult it's neighbours, first\n\n step.neighbours(terms, world); // is there a case-sensitive clue?\n\n step[\"case\"](doc); // check 'rewatch' as 'watch'\n\n step.stem(terms, world); // ... fallback to a noun!\n\n terms.forEach(function (t) {\n if (t.isKnown() === false) {\n t.tag('Noun', 'noun-fallback', doc.world);\n }\n }); // turn 'Foo University' into an Org\n\n step.organizations(terms, world); //turn 'FBD' into an acronym\n\n step.acronyms(terms, world); //are the nouns singular or plural?\n\n terms.forEach(function (t) {\n step.plural(t, doc.world);\n });\n return doc;\n};\n\nvar _02Fallbacks = fallbacks;\n\nvar hasNegative = /n't$/;\nvar irregulars$2 = {\n \"won't\": ['will', 'not'],\n wont: ['will', 'not'],\n \"can't\": ['can', 'not'],\n cant: ['can', 'not'],\n cannot: ['can', 'not'],\n \"shan't\": ['should', 'not'],\n dont: ['do', 'not'],\n dun: ['do', 'not'] // \"ain't\" is ambiguous for is/was\n\n}; // either 'is not' or 'are not'\n\nvar doAint = function doAint(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var before = terms.slice(0, index); //look for the preceding noun\n\n var noun = before.find(function (t) {\n return t.tags.Noun;\n });\n\n if (noun && noun.tags.Plural) {\n return ['are', 'not'];\n }\n\n return ['is', 'not'];\n};\n\nvar checkNegative = function checkNegative(term, phrase) {\n //check named-ones\n if (irregulars$2.hasOwnProperty(term.clean) === true) {\n return irregulars$2[term.clean];\n } //this word needs it's own logic:\n\n\n if (term.clean === \"ain't\" || term.clean === 'aint') {\n return doAint(term, phrase);\n } //try it normally\n\n\n if (hasNegative.test(term.clean) === true) {\n var main = term.clean.replace(hasNegative, '');\n return [main, 'not'];\n }\n\n return null;\n};\n\nvar _01Negative = checkNegative;\n\nvar contraction$1 = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous\n\nvar easy = {\n ll: 'will',\n ve: 'have',\n re: 'are',\n m: 'am',\n \"n't\": 'not'\n}; //\n\nvar checkApostrophe = function checkApostrophe(term) {\n var parts = term.text.match(contraction$1);\n\n if (parts === null) {\n return null;\n }\n\n if (easy.hasOwnProperty(parts[2])) {\n return [parts[1], easy[parts[2]]];\n }\n\n return null;\n};\n\nvar _02Simple = checkApostrophe;\n\nvar irregulars$1 = {\n wanna: ['want', 'to'],\n gonna: ['going', 'to'],\n im: ['i', 'am'],\n alot: ['a', 'lot'],\n ive: ['i', 'have'],\n imma: ['I', 'will'],\n \"where'd\": ['where', 'did'],\n whered: ['where', 'did'],\n \"when'd\": ['when', 'did'],\n whend: ['when', 'did'],\n // \"how'd\": ['how', 'did'], //'how would?'\n // \"what'd\": ['what', 'did'], //'what would?'\n howd: ['how', 'did'],\n whatd: ['what', 'did'],\n // \"let's\": ['let', 'us'], //too weird\n //multiple word contractions\n dunno: ['do', 'not', 'know'],\n brb: ['be', 'right', 'back'],\n gtg: ['got', 'to', 'go'],\n irl: ['in', 'real', 'life'],\n tbh: ['to', 'be', 'honest'],\n imo: ['in', 'my', 'opinion'],\n til: ['today', 'i', 'learned'],\n rn: ['right', 'now'],\n twas: ['it', 'was'],\n '@': ['at']\n}; //\n\nvar checkIrregulars = function checkIrregulars(term) {\n //check white-list\n if (irregulars$1.hasOwnProperty(term.clean)) {\n return irregulars$1[term.clean];\n }\n\n return null;\n};\n\nvar _03Irregulars = checkIrregulars;\n\nvar hasApostropheS = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]s$/i;\nvar banList = {\n that: true,\n there: true\n};\nvar hereThere = {\n here: true,\n there: true,\n everywhere: true\n};\n\nvar isPossessive = function isPossessive(term, pool) {\n // if we already know it\n if (term.tags.Possessive) {\n return true;\n } //a pronoun can't be possessive - \"he's house\"\n\n\n if (term.tags.Pronoun || term.tags.QuestionWord) {\n return false;\n }\n\n if (banList.hasOwnProperty(term.reduced)) {\n return false;\n } //if end of sentence, it is possessive - \"was spencer's\"\n\n\n var nextTerm = pool.get(term.next);\n\n if (!nextTerm) {\n return true;\n } //a gerund suggests 'is walking'\n\n\n if (nextTerm.tags.Verb) {\n //fix 'jamie's bite'\n if (nextTerm.tags.Infinitive) {\n return true;\n } //fix 'spencer's runs'\n\n\n if (nextTerm.tags.PresentTense) {\n return true;\n }\n\n return false;\n } //spencer's house\n\n\n if (nextTerm.tags.Noun) {\n // 'spencer's here'\n if (hereThere.hasOwnProperty(nextTerm.reduced) === true) {\n return false;\n }\n\n return true;\n } //rocket's red glare\n\n\n var twoTerm = pool.get(nextTerm.next);\n\n if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) {\n return true;\n } //othwerwise, an adjective suggests 'is good'\n\n\n if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) {\n return false;\n }\n\n return false;\n};\n\nvar isHas = function isHas(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 3); //look for a past-tense verb\n\n return after.find(function (t) {\n return t.tags.PastTense;\n });\n};\n\nvar checkPossessive = function checkPossessive(term, phrase, world) {\n //the rest of 's\n var found = term.text.match(hasApostropheS);\n\n if (found !== null) {\n //spencer's thing vs spencer-is\n if (isPossessive(term, phrase.pool) === true) {\n term.tag('#Possessive', 'isPossessive', world);\n return null;\n } //'spencer is'\n\n\n if (found !== null) {\n if (isHas(term, phrase)) {\n return [found[1], 'has'];\n }\n\n return [found[1], 'is'];\n }\n }\n\n return null;\n};\n\nvar _04Possessive = checkPossessive;\n\nvar hasPerfect = /[a-z\\u00C0-\\u00FF]'d$/;\nvar useDid = {\n how: true,\n what: true\n};\n/** split `i'd` into 'i had', or 'i would' */\n\nvar checkPerfect = function checkPerfect(term, phrase) {\n if (hasPerfect.test(term.clean)) {\n var root = term.clean.replace(/'d$/, ''); //look at the next few words\n\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked'\n\n for (var i = 0; i < after.length; i++) {\n var t = after[i];\n\n if (t.tags.Verb) {\n if (t.tags.PastTense) {\n return [root, 'had'];\n } //what'd you see\n\n\n if (useDid[root] === true) {\n return [root, 'did'];\n }\n\n return [root, 'would'];\n }\n } //otherwise, 'i'd walk'\n\n\n return [root, 'would'];\n }\n\n return null;\n};\n\nvar _05PerfectTense = checkPerfect;\n\nvar isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i;\nvar timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)[-–—]([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4'\n\nvar checkRange = function checkRange(term) {\n if (term.tags.PhoneNumber === true) {\n return null;\n }\n\n var parts = term.text.match(isRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[2]];\n } else {\n parts = term.text.match(timeRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[4]];\n }\n }\n\n return null;\n};\n\nvar _06Ranges = checkRange;\n\nvar contraction = /^(l|c|d|j|m|n|qu|s|t)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z\\u00C0-\\u00FF]+)$/i; // basic support for ungendered french contractions\n// not perfect, but better than nothing, to support matching on french text.\n\nvar french = {\n l: 'le',\n // l'amour\n c: 'ce',\n // c'est\n d: 'de',\n // d'amerique\n j: 'je',\n // j'aime\n m: 'me',\n // m'appelle\n n: 'ne',\n // n'est\n qu: 'que',\n // qu'il\n s: 'se',\n // s'appelle\n t: 'tu' // t'aime\n\n};\n\nvar checkFrench = function checkFrench(term) {\n var parts = term.text.match(contraction);\n\n if (parts === null || french.hasOwnProperty(parts[1]) === false) {\n return null;\n }\n\n var arr = [french[parts[1]], parts[2]];\n\n if (arr[0] && arr[1]) {\n return arr;\n }\n\n return null;\n};\n\nvar _07French = checkFrench;\n\nvar isNumber = /^[0-9]+$/;\nvar isOrdinal = /^[0-9]+(st|nd|rd|th)$/;\nvar isTime = /^[0-9:]+(am|pm)$/;\n\nvar createPhrase = function createPhrase(found, doc) {\n //create phrase from ['would', 'not']\n var phrase = _01Tokenizer(found.join(' '), doc.world, doc.pool())[0]; //tag it\n\n var terms = phrase.terms();\n _01Lexicon(terms, doc.world); //make these terms implicit\n\n terms.forEach(function (t) {\n t.implicit = t.text;\n t.text = '';\n t.clean = ''; // remove whitespace for implicit terms\n\n t.pre = '';\n t.post = ''; // tag number-ranges\n\n if (isNumber.test(t.implicit)) {\n t.tag('Cardinal', 'num-range', doc.world);\n } else if (isOrdinal.test(t.implicit)) {\n t.tag('Ordinal', 'ord-range', doc.world);\n } else if (isTime.test(t.implicit)) {\n t.tag('Time', 'time-range', doc.world);\n } else if (Object.keys(t.tags).length === 0) {\n t.tags.Noun = true; // if no tag, give it a noun\n }\n });\n return phrase;\n};\n\nvar contractions = function contractions(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i];\n var found = _01Negative(term, p);\n found = found || _02Simple(term);\n found = found || _03Irregulars(term);\n found = found || _04Possessive(term, p, world);\n found = found || _05PerfectTense(term, p);\n found = found || _06Ranges(term);\n found = found || _07French(term); //add them in\n\n if (found !== null) {\n var newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it\n\n if (p.has('#NumberRange') === true) {\n doc.buildFrom([newPhrase]).tag('NumberRange');\n } //set text as contraction\n\n\n var firstTerm = newPhrase.terms(0);\n firstTerm.text = term.text; //grab sub-phrase to remove\n\n var match = p.buildFrom(term.id, 1, doc.pool());\n match.replace(newPhrase, doc, true);\n }\n }\n });\n return doc;\n};\n\nvar _03Contractions = contractions;\n\nvar hasWord = function hasWord(doc, word) {\n var arr = doc._cache.words[word] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n};\n\nvar hasTag = function hasTag(doc, tag) {\n var arr = doc._cache.tags[tag] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n}; //mostly pos-corections here\n\n\nvar miscCorrection = function miscCorrection(doc) {\n // imperative-form\n var m = hasTag(doc, 'Infinitive');\n\n if (m.found) {\n // you eat?\n m = m.ifNo('@hasQuestionMark'); // i speak\n\n m = m.ifNo('(i|we|they)'); // shut the door!\n\n m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast\n\n m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go\n\n m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it\n\n m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it');\n } //exactly like\n\n\n m = hasWord(doc, 'like');\n m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange.\n\n m = hasTag(doc, 'Adjective');\n m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous)\n\n m = hasTag(doc, 'FirstName');\n m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train\n\n m = hasTag(doc, 'Value');\n m = m.match('#Value #PresentTense').ifNo('#Copula');\n\n if (m.found) {\n if (m.has('(one|1)') === true) {\n m.terms(1).tag('Singular', 'one-presentTense');\n } else {\n m.terms(1).tag('Plural', 'value-presentTense');\n }\n } // well i've been...\n\n\n doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second\n\n doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds\n\n doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking\n\n m = hasTag(doc, 'Gerund');\n m.match(\"(be|been) (#Adverb|not)+? #Gerund\").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse'\n\n doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives\n //'her match' vs 'let her match'\n\n m = hasTag(doc, 'Possessive');\n m = m.match('#Possessive [#Infinitive]', 0);\n\n if (!m.lookBehind('(let|made|make|force|ask)').found) {\n m.tag('Noun', 'her-match');\n }\n\n return doc;\n};\n\nvar fixMisc = miscCorrection;\n\nvar unique = function unique(arr) {\n var obj = {};\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = true;\n }\n\n return Object.keys(obj);\n};\n\nvar _unique = unique;\n\n// order matters\nvar list$5 = [// ==== Mutliple tags ====\n{\n match: 'too much',\n tag: 'Adverb Adjective',\n reason: 'bit-4'\n}, // u r cool\n{\n match: 'u r',\n tag: 'Pronoun Copula',\n reason: 'u r'\n}, //sometimes adverbs - 'pretty good','well above'\n{\n match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)',\n tag: '#Copula #Adverb #Adjective',\n reason: 'sometimes-adverb'\n}, //i better ..\n{\n match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense',\n group: 0,\n tag: 'Modal',\n reason: 'i-better'\n}, //walking is cool\n{\n match: '[#Gerund] #Adverb? not? #Copula',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-copula'\n}, //walking should be fun\n{\n match: '[#Gerund] #Modal',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-modal'\n}, //swear-words as non-expression POS\n{\n match: 'holy (shit|fuck|hell)',\n tag: 'Expression',\n reason: 'swears-expression'\n}, //Aircraft designer\n{\n match: '#Noun #Actor',\n tag: 'Actor',\n reason: 'thing-doer'\n}, {\n match: '#Conjunction [u]',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-2'\n}, //'u' as pronoun\n{\n match: '[u] #Verb',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-1'\n}, // ==== Determiners ====\n{\n match: '#Noun [(who|whom)]',\n group: 0,\n tag: 'Determiner',\n reason: 'captain-who'\n}, //that car goes\n// { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' },\n{\n match: 'a bit much',\n tag: 'Determiner Adverb Adjective',\n reason: 'bit-3'\n}, // ==== Propositions ====\n//all students\n{\n match: '#Verb #Adverb? #Noun [(that|which)]',\n group: 0,\n tag: 'Preposition',\n reason: 'that-prep'\n}, //work, which has been done.\n{\n match: '@hasComma [which] (#Pronoun|#Verb)',\n group: 0,\n tag: 'Preposition',\n reason: 'which-copula'\n}, {\n match: '#Copula just [like]',\n group: 0,\n tag: 'Preposition',\n reason: 'like-preposition'\n}, //folks like her\n{\n match: '#Noun [like] #Noun',\n group: 0,\n tag: 'Preposition',\n reason: 'noun-like'\n}, //fix for busted-up phrasalVerbs\n// { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' },\n// ==== Conditions ====\n// had he survived,\n{\n match: '[had] #Noun+ #PastTense',\n group: 0,\n tag: 'Condition',\n reason: 'had-he'\n}, // were he to survive\n{\n match: '[were] #Noun+ to #Infinitive',\n group: 0,\n tag: 'Condition',\n reason: 'were-he'\n}, // ==== Questions ====\n//the word 'how'\n{\n match: '^how',\n tag: 'QuestionWord',\n reason: 'how-question'\n}, {\n match: '[how] (#Determiner|#Copula|#Modal|#PastTense)',\n group: 0,\n tag: 'QuestionWord',\n reason: 'how-is'\n}, // //the word 'which'\n{\n match: '^which',\n tag: 'QuestionWord',\n reason: 'which-question'\n}, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' },\n// { match: 'which', tag: 'QuestionWord', reason: 'which-question3' },\n// ==== Conjunctions ====\n{\n match: '[so] #Noun',\n group: 0,\n tag: 'Conjunction',\n reason: 'so-conj'\n}, //how he is driving\n{\n match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)',\n group: 0,\n tag: 'Conjunction',\n reason: 'how-he-is-x'\n} // {\n// match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund',\n// group: 0,\n// tag: 'Conjunction',\n// reason: 'when-i-go-fishing',\n// },\n];\nvar _01Misc = list$5;\n\nvar _ambig = {\n // adverbs than can be adjectives\n adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'],\n // names that are dates\n personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'],\n // names that may be months\n personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'],\n // names that are adjectives\n personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'],\n // names that are verbs\n personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'],\n // names that are verbs\n personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'],\n // names that are nouns\n personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white']\n};\n\nvar dates = \"(\".concat(_ambig.personDate.join('|'), \")\");\nvar list$4 = [// ==== Holiday ====\n{\n match: '#Holiday (day|eve)',\n tag: 'Holiday',\n reason: 'holiday-day'\n}, // the captain who\n// ==== WeekDay ====\n// sun the 5th\n{\n match: '[sun] the #Ordinal',\n tag: 'WeekDay',\n reason: 'sun-the-5th'\n}, //sun feb 2\n{\n match: '[sun] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sun-feb'\n}, //1pm next sun\n{\n match: '#Date (on|this|next|last|during)? [sun]',\n group: 0,\n tag: 'WeekDay',\n reason: '1pm-sun'\n}, //this sat\n{\n match: \"(in|by|before|during|on|until|after|of|within|all) [sat]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'sat'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [wed]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'wed'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [march]\",\n group: 0,\n tag: 'Month',\n reason: 'march'\n}, //sat november\n{\n match: '[sat] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sat-feb'\n}, // ==== Month ====\n//all march\n{\n match: \"#Preposition [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'in-month'\n}, //this march\n{\n match: \"this [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"next [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"last [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, // march 5th\n{\n match: \"[(march|may)] the? #Value\",\n group: 0,\n tag: 'Month',\n reason: 'march-5th'\n}, // 5th of march\n{\n match: \"#Value of? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: '5th-of-march'\n}, // march and feb\n{\n match: \"[(march|may)] .? #Date\",\n group: 0,\n tag: 'Month',\n reason: 'march-and-feb'\n}, // feb to march\n{\n match: \"#Date .? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'feb-and-march'\n}, //quickly march\n{\n match: \"#Adverb [(march|may)]\",\n group: 0,\n tag: 'Verb',\n reason: 'quickly-march'\n}, //march quickly\n{\n match: \"[(march|may)] #Adverb\",\n group: 0,\n tag: 'Verb',\n reason: 'march-quickly'\n}, //5th of March\n{\n match: '#Value of #Month',\n tag: 'Date',\n reason: 'value-of-month'\n}, //5 March\n{\n match: '#Cardinal #Month',\n tag: 'Date',\n reason: 'cardinal-month'\n}, //march 5 to 7\n{\n match: '#Month #Value to #Value',\n tag: 'Date',\n reason: 'value-to-value'\n}, //march the 12th\n{\n match: '#Month the #Value',\n tag: 'Date',\n reason: 'month-the-value'\n}, //june 7\n{\n match: '(#WeekDay|#Month) #Value',\n tag: 'Date',\n reason: 'date-value'\n}, //7 june\n{\n match: '#Value (#WeekDay|#Month)',\n tag: 'Date',\n reason: 'value-date'\n}, //may twenty five\n{\n match: '(#TextValue && #Date) #TextValue',\n tag: 'Date',\n reason: 'textvalue-date'\n}, // in june\n{\n match: \"in [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"during [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"on [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"by [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'by-june'\n}, {\n match: \"after [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'after-june'\n}, {\n match: \"#Date [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, // june 1992\n{\n match: \"\".concat(dates, \" #Value\"),\n tag: 'Date',\n reason: 'june-5th'\n}, {\n match: \"\".concat(dates, \" #Date\"),\n tag: 'Date',\n reason: 'june-5th'\n}, // June Smith\n{\n match: \"\".concat(dates, \" #ProperNoun\"),\n tag: 'Person',\n reason: 'june-smith',\n safe: true\n}, // june m. Cooper\n{\n match: \"\".concat(dates, \" #Acronym? (#ProperNoun && !#Month)\"),\n tag: 'Person',\n reason: 'june-smith-jr'\n}, // 'second'\n{\n match: \"#Cardinal [second]\",\n tag: 'Unit',\n reason: 'one-second'\n}, // second quarter\n// { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' },\n// 'aug 20-21'\n{\n match: \"#Month #NumberRange\",\n tag: 'Date',\n reason: 'aug 20-21'\n}, // timezones\n// china standard time\n{\n match: \"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",\n tag: 'Timezone',\n reason: 'std-time'\n}, // eastern time\n{\n match: \"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",\n tag: 'Timezone',\n reason: 'eastern-time'\n}, // 5pm central\n{\n match: \"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",\n group: 0,\n tag: 'Timezone',\n reason: '5pm-central'\n}, // central european time\n{\n match: \"(central|western|eastern) european time\",\n tag: 'Timezone',\n reason: 'cet'\n}];\nvar _02Dates = list$4;\n\nvar adjectives$1 = \"(\".concat(_ambig.personAdjective.join('|'), \")\");\nvar list$3 = [// all fell apart\n{\n match: '[all] #Determiner? #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'all-noun'\n}, // very rusty\n{\n match: \"#Adverb [\".concat(adjectives$1, \"]\"),\n group: 0,\n tag: 'Adjective',\n reason: 'really-rich'\n}, // rusty smith\n{\n match: \"\".concat(adjectives$1, \" #Person\"),\n tag: 'Person',\n reason: 'randy-smith'\n}, // rusty a. smith\n{\n match: \"\".concat(adjectives$1, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'rusty-smith'\n}, //sometimes not-adverbs\n{\n match: '#Copula [(just|alone)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'not-adverb'\n}, //jack is guarded\n{\n match: '#Singular is #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'is-filled'\n}, // smoked poutine is\n{\n match: '[#PastTense] #Singular is',\n group: 0,\n tag: 'Adjective',\n reason: 'smoked-poutine'\n}, // baked onions are\n{\n match: '[#PastTense] #Plural are',\n group: 0,\n tag: 'Adjective',\n reason: 'baked-onions'\n}, // well made\n{\n match: 'well [#PastTense]',\n group: 0,\n tag: 'Adjective',\n reason: 'well-made'\n}, // is f*ed up\n{\n match: '#Copula [fucked up?]',\n tag: 'Adjective',\n reason: 'swears-adjective'\n}, //jack seems guarded\n{\n match: '#Singular (seems|appears) #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'seems-filled'\n}, // Gerund-Adjectives - 'amusing, annoying'\n//a staggering cost\n{\n match: '(a|an) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a|an'\n}, //as amusing as\n{\n match: 'as [#Gerund] as',\n group: 0,\n tag: 'Adjective',\n reason: 'as-gerund-as'\n}, // more amusing than\n{\n match: 'more [#Gerund] than',\n group: 0,\n tag: 'Adjective',\n reason: 'more-gerund-than'\n}, // very amusing\n{\n match: '(so|very|extremely) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'so-gerund'\n}, // it was amusing\n{\n match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'it-was-gerund'\n}, // found it amusing\n{\n match: '(found|found) it #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'found-it-gerund'\n}, // a bit amusing\n{\n match: 'a (little|bit|wee) bit? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-bit-gerund'\n}, // jury is out - preposition ➔ adjective\n{\n match: '#Copula #Adjective? [(out|in|through)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'still-out'\n}, // shut the door\n{\n match: '^[#Adjective] (the|your) #Noun',\n group: 0,\n tag: 'Infinitive',\n reason: 'shut-the'\n}];\nvar _03Adjective = list$3;\n\nvar _04Noun = [// ==== Plural ====\n//there are reasons\n{\n match: 'there (are|were) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Plural',\n reason: 'there-are'\n}, // ==== Singular ====\n//the sun\n{\n match: '#Determiner [sun]',\n group: 0,\n tag: 'Singular',\n reason: 'the-sun'\n}, //did a 900, paid a 20\n{\n match: '#Verb (a|an) [#Value]',\n group: 0,\n tag: 'Singular',\n reason: 'did-a-value'\n}, //'the can'\n{\n match: 'the [(can|will|may)]',\n group: 0,\n tag: 'Singular',\n reason: 'the can'\n}, // ==== Possessive ====\n//spencer kelly's\n{\n match: '#FirstName #Acronym? (#Possessive && #LastName)',\n tag: 'Possessive',\n reason: 'name-poss'\n}, //Super Corp's fundraiser\n{\n match: '#Organization+ #Possessive',\n tag: 'Possessive',\n reason: 'org-possessive'\n}, //Los Angeles's fundraiser\n{\n match: '#Place+ #Possessive',\n tag: 'Possessive',\n reason: 'place-possessive'\n}, // assign all tasks\n{\n match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'all-presentTense'\n}, //the above is clear\n{\n match: '#Determiner [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-is'\n}, //real evil is\n{\n match: '#Adjective [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'adj-adj-is'\n}, // PresentTense/Noun ambiguities\n// big dreams, critical thinking\n// have big dreams\n{\n match: '(had|have|#PastTense) #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adj-presentTense'\n}, // excellent answer spencer\n{\n match: '^#Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'start adj-presentTense'\n}, // one big reason\n{\n match: '#Value #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'one-big-reason'\n}, // won widespread support\n{\n match: '#PastTense #Adjective+ [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'won-wide-support'\n}, // many poses\n{\n match: '(many|few|several|couple) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'many-poses'\n}, // very big dreams\n{\n match: '#Adverb #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'very-big-dream'\n}, // good wait staff\n{\n match: '#Adjective [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'good-wait-staff'\n}, // adorable little store\n{\n match: '#Adjective #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adorable-little-store'\n}, // of basic training\n{\n match: '#Preposition #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'of-basic-training'\n}, // early warning\n{\n match: '#Adjective [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'early-warning'\n}, // justifiying higher costs\n{\n match: '#Gerund #Adverb? #Comparative [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'higher-costs'\n}, // do the dance\n{\n match: '#Infinitive (this|that|the) [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'do-this-dance'\n}, //his fine\n{\n match: '(his|her|its) [#Adjective]',\n group: 0,\n tag: 'Noun',\n reason: 'his-fine'\n}, //some pressing issues\n{\n match: 'some [#Verb] #Plural',\n group: 0,\n tag: 'Noun',\n reason: 'determiner6'\n}, //'more' is not always an adverb\n{\n match: 'more #Noun',\n tag: 'Noun',\n reason: 'more-noun'\n}, {\n match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-list'\n}, //3 feet\n{\n match: '(right|rights) of .',\n tag: 'Noun',\n reason: 'right-of'\n}, // a bit\n{\n match: 'a [bit]',\n group: 0,\n tag: 'Noun',\n reason: 'bit-2'\n}, // my first thought\n{\n match: '#Possessive #Ordinal [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'first-thought'\n}, //running-a-show\n{\n match: '#Gerund #Determiner [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-a-show'\n}, //the-only-reason\n{\n match: '#Determiner #Adverb [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'the-reason'\n}, //the nice swim\n{\n match: '(the|this|those|these) #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-verb'\n}, // the truly nice swim\n{\n match: '(the|this|those|these) #Adverb #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'determiner4'\n}, //the orange is\n{\n match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-2'\n}, // a stream runs\n{\n match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb',\n group: 0,\n tag: 'Noun',\n reason: 'determiner5'\n}, //the test string\n{\n match: '#Determiner [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'determiner7'\n}, //a nice deal\n{\n match: '#Determiner #Adjective #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'a-nice-inf'\n}, //the wait to vote\n{\n match: 'the [#Verb] #Preposition .',\n group: 0,\n tag: 'Noun',\n reason: 'determiner1'\n}, //a sense of\n{\n match: '#Determiner [#Verb] of',\n group: 0,\n tag: 'Noun',\n reason: 'the-verb-of'\n}, //next career move\n{\n match: '#Adjective #Noun+ [#Infinitive] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'career-move'\n}, //the threat of force\n{\n match: '#Determiner #Noun of [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-of-noun'\n}, //the western line\n{\n match: '#Determiner [(western|eastern|northern|southern|central)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'western-line'\n}, //her polling\n{\n match: '#Possessive [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'her-polling'\n}, //her fines\n{\n match: '(his|her|its) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'its-polling'\n}, //linear algebra\n{\n match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'technical-noun'\n}, // a blown motor\n{\n match: '(the|those|these|a|an) [#Participle] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'blown-motor'\n}, // walk the walk\n{\n match: '(the|those|these|a|an) #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'det-inf'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-pres'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-past'\n}, // this swimming\n{\n match: '(this|that) [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'this-gerund'\n}, // at some point\n{\n match: 'at some [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'at-some-inf'\n}, //air-flow\n{\n match: '(#Noun && @hasHyphen) #Verb',\n tag: 'Noun',\n reason: 'hyphen-verb'\n}, //is no walk\n{\n match: 'is no [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'is-no-verb'\n}, //different views than\n{\n match: '[#Verb] than',\n group: 0,\n tag: 'Noun',\n reason: 'correction'\n}, // goes to sleep\n{\n match: '(go|goes|went) to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'goes-to-verb'\n}, //a close watch on\n{\n match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf'\n}, //a tv show\n{\n match: '(a|an) #Noun [#Infinitive]$',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf2'\n}, //do so\n{\n match: 'do [so]',\n group: 0,\n tag: 'Noun',\n reason: 'so-noun'\n}, //is mark hughes\n{\n match: '#Copula [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'is-pres-noun'\n}, //a close\n{\n match: '#Determiner #Adverb? [close]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-close'\n}, // what the hell\n{\n match: '#Determiner [(shit|damn|hell)]',\n group: 0,\n tag: 'Noun',\n reason: 'swears-noun'\n}, // the staff were\n{\n match: '(the|these) [#Singular] (were|are)',\n group: 0,\n tag: 'Plural',\n reason: 'singular-were'\n}, // running for congress\n{\n match: '#Gerund #Adjective? for [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-for'\n}, // running to work\n{\n match: '#Gerund #Adjective to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-to'\n}, // any questions for\n{\n match: '(many|any|some|several) [#PresentTense] for',\n group: 0,\n tag: 'Noun',\n reason: 'any-verbs-for'\n}, // have fun\n{\n match: \"(have|had) [#Adjective] #Preposition .\",\n group: 0,\n tag: 'Noun',\n reason: 'have-fun'\n}, // co-founder\n{\n match: \"co #Noun\",\n tag: 'Actor',\n reason: 'co-noun'\n}];\n\nvar adjectives = \"(\".concat(_ambig.adverbAdjective.join('|'), \")\");\nvar _05Adverb = [//still good\n{\n match: '[still] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'still-advb'\n}, //still make\n{\n match: '[still] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'still-verb'\n}, // so hot\n{\n match: '[so] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'so-adv'\n}, // way hotter\n{\n match: '[way] #Comparative',\n group: 0,\n tag: 'Adverb',\n reason: 'way-adj'\n}, // way too hot\n{\n match: '[way] #Adverb #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'way-too-adj'\n}, // all singing\n{\n match: '[all] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'all-verb'\n}, // sing like an angel\n{\n match: '(#Verb && !#Modal) [like]',\n group: 0,\n tag: 'Adverb',\n reason: 'verb-like'\n}, //barely even walk\n{\n match: '(barely|hardly) even',\n tag: 'Adverb',\n reason: 'barely-even'\n}, //even held\n{\n match: '[even] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'even-walk'\n}, // even left\n{\n match: 'even left',\n tag: '#Adverb #Verb',\n reason: 'even-left'\n}, //cheering hard - dropped -ly's\n{\n match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]',\n group: 0,\n tag: 'Adverb',\n reason: 'lazy-ly'\n}, // much appreciated\n{\n match: '[much] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'bit-1'\n}, // is well\n{\n match: '#Copula [#Adverb]$',\n group: 0,\n tag: 'Adjective',\n reason: 'is-well'\n}, // a bit cold\n{\n match: 'a [(little|bit|wee) bit?] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'a-bit-cold'\n}, // dark green\n{\n match: \"[\".concat(adjectives, \"] #Adjective\"),\n group: 0,\n tag: 'Adverb',\n reason: 'dark-green'\n}, // kinda sparkly\n{\n match: \"#Adverb [#Adverb]$\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly'\n}, {\n match: \"#Adverb [#Adverb] (and|or|then)\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly-and'\n}];\n\nvar _06Value = [// ==== PhoneNumber ====\n//1 800 ...\n{\n match: '1 #Value #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '1-800-Value'\n}, //(454) 232-9873\n{\n match: '#NumericValue #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '(800) PhoneNumber'\n}, // ==== Currency ====\n// chinese yuan\n{\n match: '#Demonym #Currency',\n tag: 'Currency',\n reason: 'demonym-currency'\n}, // ==== Ordinal ====\n{\n match: '[second] #Noun',\n group: 0,\n tag: 'Ordinal',\n reason: 'second-noun'\n}, // ==== Unit ====\n//5 yan\n{\n match: '#Value+ [#Currency]',\n group: 0,\n tag: 'Unit',\n reason: '5-yan'\n}, {\n match: '#Value [(foot|feet)]',\n group: 0,\n tag: 'Unit',\n reason: 'foot-unit'\n}, //minus 7\n{\n match: '(minus|negative) #Value',\n tag: 'Value',\n reason: 'minus-value'\n}, //5 kg.\n{\n match: '#Value [#Abbreviation]',\n group: 0,\n tag: 'Unit',\n reason: 'value-abbr'\n}, {\n match: '#Value [k]',\n group: 0,\n tag: 'Unit',\n reason: 'value-k'\n}, {\n match: '#Unit an hour',\n tag: 'Unit',\n reason: 'unit-an-hour'\n}, //seven point five\n{\n match: '#Value (point|decimal) #Value',\n tag: 'Value',\n reason: 'value-point-value'\n}, // ten bucks\n{\n match: '(#Value|a) [(buck|bucks|grand)]',\n group: 0,\n tag: 'Currency',\n reason: 'value-bucks'\n}, //quarter million\n{\n match: '#Determiner [(half|quarter)] #Ordinal',\n group: 0,\n tag: 'Value',\n reason: 'half-ordinal'\n}, {\n match: 'a #Value',\n tag: 'Value',\n reason: 'a-value'\n}, // ==== Money ====\n{\n match: '[#Value+] #Currency',\n group: 0,\n tag: 'Money',\n reason: '15 usd'\n}, // thousand and two\n{\n match: \"(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value\",\n tag: 'Value',\n reason: 'magnitude-and-value'\n}, //'a/an' can mean 1 - \"a hour\"\n{\n match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)',\n group: 0,\n tag: 'Value',\n reason: 'a-is-one'\n}];\n\nvar verbs = \"(\".concat(_ambig.personVerb.join('|'), \")\");\nvar list$2 = [// adj -> gerund\n// amusing his aunt\n{\n match: '[#Adjective] #Possessive #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'gerund-his-noun'\n}, // loving you\n{\n match: '[#Adjective] (us|you)',\n group: 0,\n tag: 'Gerund',\n reason: 'loving-you'\n}, // slowly stunning\n{\n match: '(slowly|quickly) [#Adjective]',\n group: 0,\n tag: 'Gerund',\n reason: 'slowly-adj'\n}, // like\n{\n match: '(#Modal|i|they|we|do) not? [like]',\n group: 0,\n tag: 'PresentTense',\n reason: 'modal-like'\n}, // do not simply like\n{\n match: 'do (simply|just|really|not)+ [(#Adjective|like)]',\n group: 0,\n tag: 'Verb',\n reason: 'do-simply-like'\n}, // does mean\n{\n match: 'does (#Adverb|not)? [#Adjective]',\n group: 0,\n tag: 'PresentTense',\n reason: 'does-mean'\n}, // i mean\n{\n match: 'i (#Adverb|do)? not? [mean]',\n group: 0,\n tag: 'PresentTense',\n reason: 'i-mean'\n}, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' },\n// ==== Tense ====\n//he left\n{\n match: '#Noun #Adverb? [left]',\n group: 0,\n tag: 'PastTense',\n reason: 'left-verb'\n}, //this rocks\n{\n match: '(this|that) [#Plural]',\n group: 0,\n tag: 'PresentTense',\n reason: 'this-verbs'\n}, // ==== Auxiliary ====\n//was walking\n{\n match: \"[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'copula-walking'\n}, //support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, //would walk\n{\n match: \"[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'modal-verb'\n}, //would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //would be walking\n// { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' },\n//had been walking\n// {\n// match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`,\n// group: 0,\n// tag: 'Auxiliary',\n// reason: 'had-been',\n// },\n//support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, // will walk\n{\n match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb',\n group: 0,\n tag: 'Auxiliary',\n reason: 'have-had'\n}, // about to go\n{\n match: '[about to] #Adverb? #Verb',\n group: 0,\n tag: ['Auxiliary', 'Verb'],\n reason: 'about-to'\n}, //would be walking\n{\n match: \"#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-be'\n}, //were being run\n{\n match: \"(were|was) being [#PresentTense]\",\n group: 0,\n tag: 'PastTense',\n reason: 'was-being'\n}, //have run\n// { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' },\n//would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //had been walking\n{\n match: \"(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-been'\n}, // was being driven\n{\n match: '[(be|being|been)] #Participle',\n group: 0,\n tag: 'Auxiliary',\n reason: 'being-foo'\n}, // ==== Phrasal ====\n//'foo-up'\n{\n match: '(#Verb && @hasHyphen) up',\n tag: 'PhrasalVerb',\n reason: 'foo-up'\n}, {\n match: '(#Verb && @hasHyphen) off',\n tag: 'PhrasalVerb',\n reason: 'foo-off'\n}, {\n match: '(#Verb && @hasHyphen) over',\n tag: 'PhrasalVerb',\n reason: 'foo-over'\n}, {\n match: '(#Verb && @hasHyphen) out',\n tag: 'PhrasalVerb',\n reason: 'foo-out'\n}, //fall over\n{\n match: '#PhrasalVerb [#PhrasalVerb]',\n group: 0,\n tag: 'Particle',\n reason: 'phrasal-particle'\n}, //back it up\n{\n match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]',\n group: 0,\n tag: 'Adverb',\n reason: 'phrasal-pronoun-advb'\n}, // ==== Copula ====\n//will be running (not copula)\n{\n match: '[will #Adverb? not? #Adverb? be] #Gerund',\n group: 0,\n tag: 'Copula',\n reason: 'will-be-copula'\n}, //for more complex forms, just tag 'be'\n{\n match: 'will #Adverb? not? #Adverb? [be] #Adjective',\n group: 0,\n tag: 'Copula',\n reason: 'be-copula'\n}, // ==== Infinitive ====\n//march to\n{\n match: '[march] (up|down|back|to|toward)',\n group: 0,\n tag: 'Infinitive',\n reason: 'march-to'\n}, //must march\n{\n match: '#Modal [march]',\n group: 0,\n tag: 'Infinitive',\n reason: 'must-march'\n}, //let him glue\n{\n match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)',\n group: 0,\n tag: 'Infinitive',\n reason: 'let-him-glue'\n}, //he quickly foo\n// { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' },\n//will secure our\n{\n match: 'will [#Adjective]',\n group: 0,\n tag: 'Verb',\n reason: 'will-adj'\n}, //he disguised the thing\n{\n match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'he-adj-the'\n}, //is eager to go\n{\n match: '#Copula [#Adjective to] #Verb',\n group: 0,\n tag: 'Verb',\n reason: 'adj-to'\n}, // open the door\n{\n match: '[open] #Determiner',\n group: 0,\n tag: 'Infinitive',\n reason: 'open-the'\n}, // compromises are possible\n{\n match: '[#PresentTense] (are|were|was) #Adjective',\n group: 0,\n tag: 'Plural',\n reason: 'compromises-are-possible'\n}, // would wade\n{\n match: \"#Modal [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'would-mark'\n}, {\n match: \"#Adverb [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'really-mark'\n}, //to mark\n{\n match: '(to|#Modal) [mark]',\n group: 0,\n tag: 'PresentTense',\n reason: 'to-mark'\n}, // wade smith\n{\n match: \"\".concat(verbs, \" #Person\"),\n tag: 'Person',\n reason: 'rob-smith'\n}, // wade m. Cooper\n{\n match: \"\".concat(verbs, \" #Acronym #ProperNoun\"),\n tag: 'Person',\n reason: 'rob-a-smith'\n}, // damn them\n{\n match: '[shit] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear1-verb'\n}, {\n match: '[damn] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear2-verb'\n}, {\n match: '[fuck] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear3-verb'\n}];\nvar _07Verbs = list$2;\n\nvar list$1 = [// ==== Region ====\n//West Norforlk\n{\n match: '(west|north|south|east|western|northern|southern|eastern)+ #Place',\n tag: 'Region',\n reason: 'west-norfolk'\n}, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n{\n match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]',\n group: 0,\n tag: 'Region',\n reason: 'us-state'\n}, // portland oregon\n{\n match: 'portland [or]',\n group: 0,\n tag: 'Region',\n reason: 'portland-or'\n}, //Foo District\n{\n match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)',\n tag: 'Region',\n reason: 'foo-district'\n}, //District of Foo\n{\n match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun',\n tag: 'Region',\n reason: 'district-of-Foo'\n}, // in Foo California\n{\n match: 'in [#ProperNoun] #Place',\n group: 0,\n tag: 'Place',\n reason: 'propernoun-place'\n}, // ==== Address ====\n{\n match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)',\n tag: 'Address',\n reason: 'address-st'\n} // in houston\n// { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' },\n// { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' },\n// { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' },\n// { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' },\n// { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' },\n// { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' },\n// // houston texas\n// { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' },\n];\nvar _08Place = list$1;\n\nvar _09Org = [//John & Joe's\n{\n match: '#Noun (&|n) #Noun',\n tag: 'Organization',\n reason: 'Noun-&-Noun'\n}, // teachers union of Ontario\n{\n match: '#Organization of the? #ProperNoun',\n tag: 'Organization',\n reason: 'org-of-place',\n safe: true\n}, //walmart USA\n{\n match: '#Organization #Country',\n tag: 'Organization',\n reason: 'org-country'\n}, //organization\n{\n match: '#ProperNoun #Organization',\n tag: 'Organization',\n reason: 'titlecase-org'\n}, //FitBit Inc\n{\n match: '#ProperNoun (ltd|co|inc|dept|assn|bros)',\n tag: 'Organization',\n reason: 'org-abbrv'\n}, // the OCED\n{\n match: 'the [#Acronym]',\n group: 0,\n tag: 'Organization',\n reason: 'the-acronym',\n safe: true\n}, // global trade union\n{\n match: '(world|global|international|national|#Demonym) #Organization',\n tag: 'Organization',\n reason: 'global-org'\n}, // schools\n{\n match: '#Noun+ (public|private) school',\n tag: 'School',\n reason: 'noun-public-school'\n}];\n\nvar nouns = \"(\".concat(_ambig.personNoun.join('|'), \")\");\nvar months = \"(\".concat(_ambig.personMonth.join('|'), \")\");\nvar places = \"(\".concat(_ambig.personPlace.join('|'), \")\");\nvar list = [// ==== Honorific ====\n{\n match: '[(1st|2nd|first|second)] #Honorific',\n group: 0,\n tag: 'Honorific',\n reason: 'ordinal-honorific'\n}, {\n match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person',\n group: 0,\n tag: 'Honorific',\n reason: 'ambg-honorifics'\n}, // ==== FirstNames ====\n//is foo Smith\n{\n match: '#Copula [(#Noun|#PresentTense)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'copula-noun-lastname'\n}, //pope francis\n{\n match: '(lady|queen|sister) #ProperNoun',\n tag: 'FemaleName',\n reason: 'lady-titlecase',\n safe: true\n}, {\n match: '(king|pope|father) #ProperNoun',\n tag: 'MaleName',\n reason: 'pope-titlecase',\n safe: true\n}, //ambiguous-but-common firstnames\n{\n match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'maybe-lastname'\n}, // ==== Nickname ====\n// Dwayne 'the rock' Johnson\n{\n match: '#FirstName [#Determiner #Noun] #LastName',\n group: 0,\n tag: 'NickName',\n reason: 'first-noun-last'\n}, //my buddy\n{\n match: '#Possessive [#FirstName]',\n group: 0,\n tag: 'Person',\n reason: 'possessive-name'\n}, {\n match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun',\n tag: 'Person',\n reason: 'titlecase-acronym-titlecase',\n safe: true\n}, //ludwig van beethovan\n{\n match: '#Acronym #LastName',\n tag: 'Person',\n reason: 'acronym-latname',\n safe: true\n}, //jk rowling\n{\n match: '#Person (jr|sr|md)',\n tag: 'Person',\n reason: 'person-honorific'\n}, //peter II\n{\n match: '#Person #Person the? #RomanNumeral',\n tag: 'Person',\n reason: 'roman-numeral'\n}, //'Professor Fink', 'General McCarthy'\n{\n match: '#FirstName [/^[^aiurck]$/]',\n group: 0,\n tag: ['Acronym', 'Person'],\n reason: 'john-e'\n}, //Doctor john smith jr\n//general pearson\n{\n match: '#Honorific #Person',\n tag: 'Person',\n reason: 'honorific-person'\n}, //remove single 'mr'\n{\n match: '#Honorific #Acronym',\n tag: 'Person',\n reason: 'Honorific-TitleCase'\n}, //j.k Rowling\n{\n match: '#Noun van der? #Noun',\n tag: 'Person',\n reason: 'van der noun',\n safe: true\n}, //king of spain\n{\n match: '(king|queen|prince|saint|lady) of #Noun',\n tag: 'Person',\n reason: 'king-of-noun',\n safe: true\n}, //lady Florence\n{\n match: '(prince|lady) #Place',\n tag: 'Person',\n reason: 'lady-place'\n}, //saint Foo\n{\n match: '(king|queen|prince|saint) #ProperNoun',\n tag: 'Person',\n reason: 'saint-foo'\n}, //Foo U Ford\n{\n match: '[#ProperNoun] #Person',\n group: 0,\n tag: 'Person',\n reason: 'proper-person',\n safe: true\n}, // al sharpton\n{\n match: 'al (#Person|#ProperNoun)',\n tag: 'Person',\n reason: 'al-borlen',\n safe: true\n}, //ferdinand de almar\n{\n match: '#FirstName de #Noun',\n tag: 'Person',\n reason: 'bill-de-noun'\n}, //Osama bin Laden\n{\n match: '#FirstName (bin|al) #Noun',\n tag: 'Person',\n reason: 'bill-al-noun'\n}, //John L. Foo\n{\n match: '#FirstName #Acronym #ProperNoun',\n tag: 'Person',\n reason: 'bill-acronym-title'\n}, //Andrew Lloyd Webber\n{\n match: '#FirstName #FirstName #ProperNoun',\n tag: 'Person',\n reason: 'bill-firstname-title'\n}, //Mr Foo\n{\n match: '#Honorific #FirstName? #ProperNoun',\n tag: 'Person',\n reason: 'dr-john-Title'\n}, //peter the great\n{\n match: '#FirstName the #Adjective',\n tag: 'Person',\n reason: 'name-the-great'\n}, //very common-but-ambiguous lastnames\n{\n match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)',\n tag: 'Person',\n reason: 'bill-green'\n}, // faith smith\n{\n match: \"\".concat(nouns, \" #Person\"),\n tag: 'Person',\n reason: 'ray-smith',\n safe: true\n}, // faith m. Smith\n{\n match: \"\".concat(nouns, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'ray-a-smith',\n safe: true\n}, //give to april\n{\n match: \"#Infinitive #Determiner? #Adjective? #Noun? (to|for) [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-person'\n}, // remind june\n{\n match: \"#Infinitive [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'infinitive-person'\n}, // may waits for\n// { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' },\n// may waits to\n// { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' },\n// april will\n{\n match: \"[\".concat(months, \"] #Modal\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-modal'\n}, // may be\n{\n match: \"[may] be\",\n group: 0,\n tag: 'Verb',\n reason: 'may-be'\n}, // would april\n{\n match: \"#Modal [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'modal-ambig'\n}, // it is may\n{\n match: \"#Copula [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'is-may'\n}, // may is\n{\n match: \"[\".concat(months, \"] #Copula\"),\n group: 0,\n tag: 'Person',\n reason: 'may-is'\n}, // with april\n{\n match: \"that [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'that-month'\n}, // with april\n{\n match: \"with [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'with-month'\n}, // for april\n{\n match: \"for [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'for-month'\n}, // this april\n{\n match: \"this [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'this-may'\n}, //maybe not 'this'\n// next april\n{\n match: \"next [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'next-may'\n}, // last april\n{\n match: \"last [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'last-may'\n}, // wednesday april\n{\n match: \"#Date [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'date-may'\n}, // may 5th\n{\n match: \"[\".concat(months, \"] the? #Value\"),\n group: 0,\n tag: 'Month',\n reason: 'may-5th'\n}, // 5th of may\n{\n match: \"#Value of [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: '5th-of-may'\n}, // dick van dyke\n{\n match: '#ProperNoun (van|al|bin) #ProperNoun',\n tag: 'Person',\n reason: 'title-van-title',\n safe: true\n}, //jose de Sucre\n{\n match: '#ProperNoun (de|du) la? #ProperNoun',\n tag: 'Person',\n reason: 'title-de-title',\n safe: true\n}, //Jani K. Smith\n{\n match: '#Singular #Acronym #LastName',\n tag: '#Person',\n reason: 'title-acro-noun',\n safe: true\n}, //John Foo\n{\n match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?',\n tag: 'Person',\n reason: 'firstname-titlecase'\n}, //Joe K. Sombrero\n{\n match: '#FirstName #Acronym #Noun',\n tag: 'Person',\n reason: 'n-acro-noun',\n safe: true\n}, //Anthony de Marco\n{\n match: '#FirstName [(de|di|du|van|von) #Person]',\n group: 0,\n tag: 'LastName',\n reason: 'de-firstname'\n}, // Paris Berelc\n{\n match: \"[\".concat(places, \"] (#ProperNoun && !#Place)\"),\n group: 0,\n tag: 'FirstName',\n reason: 'place-firstname'\n}];\nvar _10People = list;\n\nvar matches = [];\nmatches = matches.concat(_01Misc);\nmatches = matches.concat(_02Dates);\nmatches = matches.concat(_03Adjective);\nmatches = matches.concat(_04Noun);\nmatches = matches.concat(_05Adverb);\nmatches = matches.concat(_06Value);\nmatches = matches.concat(_07Verbs);\nmatches = matches.concat(_08Place);\nmatches = matches.concat(_09Org);\nmatches = matches.concat(_10People); // cache the easier conditions up-front\n\nvar cacheRequired = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: _unique(needTags),\n words: _unique(needWords)\n };\n}; // for speed, enumerate (a|b|c) to three matches\n\n\nvar allLists = function allLists(m) {\n var more = [];\n var lists = m.reg.filter(function (r) {\n return r.fastOr !== undefined;\n });\n\n if (lists.length === 1) {\n var i = m.reg.findIndex(function (r) {\n return r.fastOr !== undefined;\n });\n Object.keys(m.reg[i].fastOr).forEach(function (w) {\n var newM = Object.assign({}, m);\n newM.reg = newM.reg.slice(0);\n newM.reg[i] = Object.assign({}, newM.reg[i]);\n newM.reg[i].word = w;\n delete newM.reg[i].operator;\n delete newM.reg[i].fastOr; // newM.reason += '-' + w\n\n more.push(newM);\n });\n }\n\n return more;\n}; // parse them\n\n\nvar all = [];\nmatches.forEach(function (m) {\n m.reg = matchSyntax(m.match);\n var enumerated = allLists(m);\n\n if (enumerated.length > 0) {\n all = all.concat(enumerated);\n } else {\n all.push(m); // console.log(m)\n }\n});\nall.forEach(function (m) {\n m.required = cacheRequired(m.reg);\n return m;\n}); // console.log(all.length)\n// console.log(all[all.length - 1])\n\nvar matches_1 = all;\n\nvar hasEvery = function hasEvery(chances) {\n if (chances.length === 0) {\n return [];\n }\n\n var obj = {};\n chances.forEach(function (arr) {\n arr = _unique(arr);\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = obj[arr[i]] || 0;\n obj[arr[i]] += 1;\n }\n });\n var res = Object.keys(obj);\n res = res.filter(function (k) {\n return obj[k] === chances.length;\n });\n res = res.map(function (num) {\n return Number(num);\n });\n return res;\n};\n\nvar runner = function runner(doc) {\n //find phrases to try for each match\n matches_1.forEach(function (m) {\n var allChances = [];\n m.required.words.forEach(function (w) {\n allChances.push(doc._cache.words[w] || []);\n });\n m.required.tags.forEach(function (tag) {\n allChances.push(doc._cache.tags[tag] || []);\n });\n var worthIt = hasEvery(allChances);\n\n if (worthIt.length === 0) {\n return;\n }\n\n var phrases = worthIt.map(function (index) {\n return doc.list[index];\n });\n var tryDoc = doc.buildFrom(phrases); // phrases getting tagged\n\n var match = tryDoc.match(m.reg, m.group);\n\n if (match.found) {\n if (m.safe === true) {\n match.tagSafe(m.tag, m.reason);\n } else {\n match.tag(m.tag, m.reason);\n }\n }\n });\n};\n\nvar runner_1 = runner; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []]))\n\n// misc: 40ms\n//sequence of match-tag statements to correct mis-tags\n\nvar corrections = function corrections(doc) {\n runner_1(doc);\n fixMisc(doc);\n return doc;\n};\n\nvar _04Correction = corrections;\n\n/** POS-tag all terms in this document */\n\nvar tagger = function tagger(doc) {\n var terms = doc.termList(); // check against any known-words\n\n doc = _01Init(doc, terms); // everything has gotta be something. ¯\\_(:/)_/¯\n\n doc = _02Fallbacks(doc, terms); // support \"didn't\" & \"spencer's\"\n\n doc = _03Contractions(doc); //set our cache, to speed things up\n\n doc.cache(); // wiggle-around the results, so they make more sense\n\n doc = _04Correction(doc); // remove our cache, as it's invalidated now\n\n doc.uncache(); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar _02Tagger = tagger;\n\nvar addMethod$a = function addMethod(Doc) {\n /** */\n var Abbreviations = /*#__PURE__*/function (_Doc) {\n _inherits(Abbreviations, _Doc);\n\n var _super = _createSuper(Abbreviations);\n\n function Abbreviations() {\n _classCallCheck(this, Abbreviations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Abbreviations, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n if (t.tags.Abbreviation === true && t.next) {\n t.post = t.post.replace(/^\\./, '');\n }\n\n var str = t.text.replace(/\\./, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n t.post = t.post.replace(/^\\./, '');\n t.post = '.' + t.post;\n });\n return this;\n }\n }]);\n\n return Abbreviations;\n }(Doc);\n\n Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods;\n\n Doc.prototype.abbreviations = function (n) {\n var match = this.match('#Abbreviation');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Abbreviations(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Abbreviations = addMethod$a;\n\nvar hasPeriod = /\\./;\n\nvar addMethod$9 = function addMethod(Doc) {\n /** */\n var Acronyms = /*#__PURE__*/function (_Doc) {\n _inherits(Acronyms, _Doc);\n\n var _super = _createSuper(Acronyms);\n\n function Acronyms() {\n _classCallCheck(this, Acronyms);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Acronyms, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one\n\n if (hasPeriod.test(t.post) === false) {\n str += '.';\n }\n\n t.set(str);\n });\n return this;\n }\n }]);\n\n return Acronyms;\n }(Doc);\n\n Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods;\n Acronyms.prototype.strip = Acronyms.prototype.stripPeriods;\n\n Doc.prototype.acronyms = function (n) {\n var match = this.match('#Acronym');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Acronyms(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Acronyms = addMethod$9;\n\nvar addMethod$8 = function addMethod(Doc) {\n /** split into approximate sub-sentence phrases */\n Doc.prototype.clauses = function (n) {\n // an awkward way to disambiguate a comma use\n var commas = this[\"if\"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool...\n .notIf('@hasComma . .? (and|or) .') //cool, and fun\n .notIf('(#City && @hasComma) #Country') //'toronto, canada'\n .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd'\n .notIf('(#Date && @hasComma) #Year') //'july 6, 1992'\n .notIf('@hasComma (too|also)$') //at end of sentence\n .match('@hasComma');\n var found = this.splitAfter(commas);\n var quotes = found.quotations();\n found = found.splitOn(quotes);\n var parentheses = found.parentheses();\n found = found.splitOn(parentheses); // it is cool and it is ..\n\n var conjunctions = found[\"if\"]('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction');\n found = found.splitBefore(conjunctions); // if it is this then that\n\n var condition = found[\"if\"]('if .{2,9} then .').match('then');\n found = found.splitBefore(condition); // misc clause partitions\n\n found = found.splitBefore('as well as .');\n found = found.splitBefore('such as .');\n found = found.splitBefore('in addition to .'); // semicolons, dashes\n\n found = found.splitAfter('@hasSemicolon');\n found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty'\n // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // //which the boy robbed\n // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // does there appear to have relative/subordinate clause still?\n\n var tooLong = found.filter(function (d) {\n return d.wordCount() > 5 && d.match('#Verb+').length >= 2;\n });\n\n if (tooLong.found) {\n var m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+');\n found = found.splitOn(m.eq(0));\n }\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Doc(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Clauses = addMethod$8;\n\nvar addMethod$7 = function addMethod(Doc) {\n /** */\n var Contractions = /*#__PURE__*/function (_Doc) {\n _inherits(Contractions, _Doc);\n\n var _super = _createSuper(Contractions);\n\n function Contractions(list, from, world) {\n var _this;\n\n _classCallCheck(this, Contractions);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Contractions, [{\n key: \"expand\",\n value: function expand() {\n this.list.forEach(function (p) {\n var terms = p.terms(); //change the case?\n\n var isTitlecase = terms[0].isTitleCase();\n terms.forEach(function (t, i) {\n //use the implicit text\n t.set(t.implicit || t.text);\n t.implicit = undefined; //add whitespace\n\n if (i < terms.length - 1 && t.post === '') {\n t.post += ' ';\n }\n }); //set titlecase\n\n if (isTitlecase) {\n terms[0].toTitleCase();\n }\n });\n return this;\n }\n }]);\n\n return Contractions;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.contractions = function (n) {\n //find currently-contracted\n var found = this.match('@hasContraction+'); //(may want to split these up)\n //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Contractions(found.list, this, this.world);\n }; //aliases\n\n\n Doc.prototype.expanded = Doc.prototype.isExpanded;\n Doc.prototype.contracted = Doc.prototype.isContracted;\n return Doc;\n};\n\nvar Contractions = addMethod$7;\n\nvar addMethod$6 = function addMethod(Doc) {\n //pull it apart..\n var parse = function parse(doc) {\n var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?');\n var beforeLast = doc.match('[.] (and|or)', 0);\n return {\n things: things,\n conjunction: doc.match('(and|or) not?'),\n beforeLast: beforeLast,\n hasOxford: beforeLast.has('@hasComma')\n };\n };\n /** cool, fun, and nice */\n\n\n var Lists = /*#__PURE__*/function (_Doc) {\n _inherits(Lists, _Doc);\n\n var _super = _createSuper(Lists);\n\n function Lists() {\n _classCallCheck(this, Lists);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Lists, [{\n key: \"conjunctions\",\n value:\n /** coordinating conjunction */\n function conjunctions() {\n return this.match('(and|or)');\n }\n /** split-up by list object */\n\n }, {\n key: \"parts\",\n value: function parts() {\n return this.splitAfter('@hasComma').splitOn('(and|or) not?');\n }\n /** remove the conjunction */\n\n }, {\n key: \"items\",\n value: function items() {\n return parse(this).things;\n }\n /** add a new unit to the list */\n\n }, {\n key: \"add\",\n value: function add(str) {\n this.forEach(function (p) {\n var beforeLast = parse(p).beforeLast;\n beforeLast.append(str); //add a comma to it\n\n beforeLast.termList(0).addPunctuation(',');\n });\n return this;\n }\n /** remove any matching unit from the list */\n\n }, {\n key: \"remove\",\n value: function remove(match) {\n return this.items()[\"if\"](match).remove();\n }\n /** return only lists that use a serial comma */\n\n }, {\n key: \"hasOxfordComma\",\n value: function hasOxfordComma() {\n return this.filter(function (doc) {\n return parse(doc).hasOxford;\n });\n }\n }, {\n key: \"addOxfordComma\",\n value: function addOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === false) {\n needsComma.post(', ');\n }\n\n return this;\n }\n }, {\n key: \"removeOxfordComma\",\n value: function removeOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === true) {\n needsComma.post(' ');\n }\n\n return this;\n }\n }]);\n\n return Lists;\n }(Doc); // aliases\n\n\n Lists.prototype.things = Lists.prototype.items;\n\n Doc.prototype.lists = function (n) {\n var m = this[\"if\"]('@hasComma+ .? (and|or) not? .'); // person-list\n\n var nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+')[\"if\"]('#Noun');\n var adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+');\n var verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+');\n var result = nounList.concat(adjList);\n result = result.concat(verbList);\n result = result[\"if\"]('@hasComma');\n\n if (typeof n === 'number') {\n result = m.get(n);\n }\n\n return new Lists(result.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Lists = addMethod$6;\n\nvar noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace'\n\nvar hasPlural = function hasPlural(doc) {\n if (doc.has('#Plural') === true) {\n return true;\n } // these can't be plural\n\n\n if (doc.has(noPlural) === true) {\n return false;\n }\n\n return true;\n};\n\nvar hasPlural_1 = hasPlural;\n\nvar irregulars = {\n hour: 'an',\n heir: 'an',\n heirloom: 'an',\n honest: 'an',\n honour: 'an',\n honor: 'an',\n uber: 'an' //german u\n\n}; //pronounced letters of acronyms that get a 'an'\n\nvar an_acronyms = {\n a: true,\n e: true,\n f: true,\n h: true,\n i: true,\n l: true,\n m: true,\n n: true,\n o: true,\n r: true,\n s: true,\n x: true\n}; //'a' regexes\n\nvar a_regexs = [/^onc?e/i, //'wu' sound of 'o'\n/^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n/^eul/i];\n\nvar makeArticle = function makeArticle(doc) {\n //no 'the john smith', but 'a london hotel'\n if (doc.has('#Person') || doc.has('#Place')) {\n return '';\n } //no a/an if it's plural\n\n\n if (doc.has('#Plural')) {\n return 'the';\n }\n\n var str = doc.text('normal').trim(); //explicit irregular forms\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //spelled-out acronyms\n\n\n var firstLetter = str.substr(0, 1);\n\n if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) {\n return 'an';\n } //'a' regexes\n\n\n for (var i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return 'a';\n }\n } //basic vowel-startings\n\n\n if (/^[aeiou]/i.test(str)) {\n return 'an';\n }\n\n return 'a';\n};\n\nvar getArticle = makeArticle;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$2 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar _rules = {\n isSingular: isSingular,\n isPlural: isPlural$2\n};\n\nvar endS = /s$/; // double-check this term, if it is not plural, or singular.\n// (this is a partial copy of ./tagger/fallbacks/plural)\n// fallback plural if it ends in an 's'.\n\nvar isPlural$1 = function isPlural(str) {\n // isSingular suffix rules\n if (_rules.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return false;\n } // does it end in an s?\n\n\n if (endS.test(str) === true) {\n return true;\n } // is it a plural like 'fungi'?\n\n\n if (_rules.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return true;\n }\n\n return null;\n};\n\nvar isPlural_1$1 = isPlural$1;\n\nvar exceptions = {\n he: 'his',\n she: 'hers',\n they: 'theirs',\n we: 'ours',\n i: 'mine',\n you: 'yours',\n her: 'hers',\n their: 'theirs',\n our: 'ours',\n my: 'mine',\n your: 'yours'\n}; // turn \"David\" to \"David's\"\n\nvar toPossessive = function toPossessive(doc) {\n var str = doc.text('text').trim(); // exceptions\n\n if (exceptions.hasOwnProperty(str)) {\n doc.replaceWith(exceptions[str], true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } // flanders'\n\n\n if (/s$/.test(str)) {\n str += \"'\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } //normal form:\n\n\n str += \"'s\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n};\n\nvar toPossessive_1 = toPossessive;\n\n// .nouns() supports some noun-phrase-ish groupings\n// pull these apart, if necessary\nvar parse$1 = function parse(doc) {\n var res = {\n main: doc\n }; //support 'mayor of chicago' as one noun-phrase\n\n if (doc.has('#Noun (of|by|for) .')) {\n var m = doc.splitAfter('[#Noun+]', 0);\n res.main = m.eq(0);\n res.post = m.eq(1);\n }\n\n return res;\n};\n\nvar parse_1 = parse$1;\n\nvar methods$2 = {\n /** overload the original json with noun information */\n json: function json(options) {\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (doc) {\n var json = doc.json(options)[0];\n json.article = getArticle(doc);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** get all adjectives describing this noun*/\n adjectives: function adjectives() {\n var list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+');\n list = list.concat(this.lookBehind('#Adjective+ #Adverb?$'));\n list = list.match('#Adjective');\n return list.sort('index');\n },\n isPlural: function isPlural() {\n return this[\"if\"]('#Plural'); //assume tagger has run?\n },\n hasPlural: function hasPlural() {\n return this.filter(function (d) {\n return hasPlural_1(d);\n });\n },\n toPlural: function toPlural(agree) {\n var _this = this;\n\n var toPlural = this.world.transforms.toPlural;\n this.forEach(function (doc) {\n if (doc.has('#Plural') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Singular') && isPlural_1$1(str) === true) {\n return;\n }\n\n str = toPlural(str, _this.world);\n main.replace(str).tag('#Plural'); // 'an apple' -> 'apples'\n\n if (agree) {\n var an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective');\n\n if (an.found === true) {\n an.remove();\n }\n }\n });\n return this;\n },\n toSingular: function toSingular(agree) {\n var _this2 = this;\n\n var toSingular = this.world.transforms.toSingular;\n this.forEach(function (doc) {\n if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Plural') && isPlural_1$1(str) !== true) {\n return;\n }\n\n str = toSingular(str, _this2.world);\n main.replace(str).tag('#Singular'); // add an article\n\n if (agree) {\n // 'apples' -> 'an apple'\n var start = doc;\n var adj = doc.lookBefore('#Adjective');\n\n if (adj.found) {\n start = adj;\n }\n\n var article = getArticle(start);\n start.insertBefore(article);\n }\n });\n return this;\n },\n toPossessive: function toPossessive() {\n this.forEach(function (d) {\n toPossessive_1(d);\n });\n return this;\n }\n};\nvar methods_1 = methods$2;\n\nvar addMethod$5 = function addMethod(Doc) {\n /** */\n var Nouns = /*#__PURE__*/function (_Doc) {\n _inherits(Nouns, _Doc);\n\n var _super = _createSuper(Nouns);\n\n function Nouns() {\n _classCallCheck(this, Nouns);\n\n return _super.apply(this, arguments);\n }\n\n return Nouns;\n }(Doc); // add-in our methods\n\n\n Object.assign(Nouns.prototype, methods_1);\n\n Doc.prototype.nouns = function (n) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep); // don't combine over scare-quotes\n\n var quotes = m.quotations();\n\n if (quotes.found) {\n m = m.splitOn(quotes.eq(0));\n }\n\n m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons\n\n if (opts.keep_anaphora !== true) {\n m = m.not('#Pronoun');\n m = m.not('(there|these)');\n m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays\n // //allow possessives like \"spencer's\", but not generic ones like,\n\n m = m.not('(my|our|your|their|her|his)');\n }\n\n m = m.not('(of|for|by|the)$');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return new Nouns(m.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Nouns = addMethod$5;\n\nvar open = /\\(/;\nvar close = /\\)/;\n\nvar addMethod$4 = function addMethod(Doc) {\n /** anything between (these things) */\n var Parentheses = /*#__PURE__*/function (_Doc) {\n _inherits(Parentheses, _Doc);\n\n var _super = _createSuper(Parentheses);\n\n function Parentheses() {\n _classCallCheck(this, Parentheses);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Parentheses, [{\n key: \"unwrap\",\n value:\n /** remove the parentheses characters */\n function unwrap() {\n this.list.forEach(function (p) {\n var first = p.terms(0);\n first.pre = first.pre.replace(open, '');\n var last = p.lastTerm();\n last.post = last.post.replace(close, '');\n });\n return this;\n }\n }]);\n\n return Parentheses;\n }(Doc);\n\n Doc.prototype.parentheses = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening brackets\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (open.test(t.pre)) {\n //look for the closing bracket..\n for (var o = i; o < terms.length; o += 1) {\n if (close.test(terms[o].post)) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Parentheses(list, this, this.world);\n }\n\n return new Parentheses(list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Parentheses = addMethod$4;\n\nvar addMethod$3 = function addMethod(Doc) {\n /** */\n var Possessives = /*#__PURE__*/function (_Doc) {\n _inherits(Possessives, _Doc);\n\n var _super = _createSuper(Possessives);\n\n function Possessives(list, from, world) {\n var _this;\n\n _classCallCheck(this, Possessives);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Possessives, [{\n key: \"strip\",\n value: function strip() {\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms.forEach(function (t) {\n var str = t.text.replace(/'s$/, '');\n t.set(str || t.text);\n });\n });\n return this;\n }\n }]);\n\n return Possessives;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.possessives = function (n) {\n //find currently-contracted\n var found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Possessives(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Possessives = addMethod$3;\n\nvar pairs = {\n \"\\\"\": \"\\\"\",\n // 'StraightDoubleQuotes'\n \"\\uFF02\": \"\\uFF02\",\n // 'StraightDoubleQuotesWide'\n \"'\": \"'\",\n // 'StraightSingleQuotes'\n \"\\u201C\": \"\\u201D\",\n // 'CommaDoubleQuotes'\n \"\\u2018\": \"\\u2019\",\n // 'CommaSingleQuotes'\n \"\\u201F\": \"\\u201D\",\n // 'CurlyDoubleQuotesReversed'\n \"\\u201B\": \"\\u2019\",\n // 'CurlySingleQuotesReversed'\n \"\\u201E\": \"\\u201D\",\n // 'LowCurlyDoubleQuotes'\n \"\\u2E42\": \"\\u201D\",\n // 'LowCurlyDoubleQuotesReversed'\n \"\\u201A\": \"\\u2019\",\n // 'LowCurlySingleQuotes'\n \"\\xAB\": \"\\xBB\",\n // 'AngleDoubleQuotes'\n \"\\u2039\": \"\\u203A\",\n // 'AngleSingleQuotes'\n // Prime 'non quotation'\n \"\\u2035\": \"\\u2032\",\n // 'PrimeSingleQuotes'\n \"\\u2036\": \"\\u2033\",\n // 'PrimeDoubleQuotes'\n \"\\u2037\": \"\\u2034\",\n // 'PrimeTripleQuotes'\n // Prime 'quotation' variation\n \"\\u301D\": \"\\u301E\",\n // 'PrimeDoubleQuotes'\n \"`\": \"\\xB4\",\n // 'PrimeSingleQuotes'\n \"\\u301F\": \"\\u301E\" // 'LowPrimeDoubleQuotesReversed'\n\n};\nvar hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')');\n\nvar addMethod$2 = function addMethod(Doc) {\n /** \"these things\" */\n var Quotations = /*#__PURE__*/function (_Doc) {\n _inherits(Quotations, _Doc);\n\n var _super = _createSuper(Quotations);\n\n function Quotations() {\n _classCallCheck(this, Quotations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Quotations, [{\n key: \"unwrap\",\n value:\n /** remove the quote characters */\n function unwrap() {\n return this;\n }\n }]);\n\n return Quotations;\n }(Doc);\n\n Doc.prototype.quotations = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening quotes\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (hasOpen.test(t.pre)) {\n var _char = (t.pre.match(hasOpen) || [])[0];\n var want = pairs[_char]; // if (!want) {\n // console.warn('missing quote char ' + char)\n // }\n //look for the closing bracket..\n\n for (var o = i; o < terms.length; o += 1) {\n if (terms[o].post.indexOf(want) !== -1) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Quotations(list, this, this.world);\n }\n\n return new Quotations(list, this, this.world);\n }; // alias\n\n\n Doc.prototype.quotes = Doc.prototype.quotations;\n return Doc;\n};\n\nvar Quotations = addMethod$2;\n\n// walked => walk - turn a verb into it's root form\nvar toInfinitive = function toInfinitive(parsed, world) {\n var verb = parsed.verb; // console.log(parsed)\n // verb.debug()\n //1. if it's already infinitive\n\n var str = verb.text('reduced');\n\n if (verb.has('#Infinitive')) {\n return str;\n } // 2. world transform does the heavy-lifting\n\n\n var tense = null;\n\n if (verb.has('#PastTense')) {\n tense = 'PastTense';\n } else if (verb.has('#Gerund')) {\n tense = 'Gerund';\n } else if (verb.has('#PresentTense')) {\n tense = 'PresentTense';\n } else if (verb.has('#Participle')) {\n tense = 'Participle';\n } else if (verb.has('#Actor')) {\n tense = 'Actor';\n }\n\n return world.transforms.toInfinitive(str, world, tense);\n};\n\nvar toInfinitive_1 = toInfinitive;\n\n// spencer walks -> singular\n// we walk -> plural\n// the most-recent noun-phrase, before this verb.\nvar findNoun = function findNoun(vb) {\n var noun = vb.lookBehind('#Noun+').last();\n return noun;\n}; //sometimes you can tell if a verb is plural/singular, just by the verb\n// i am / we were\n// othertimes you need its subject 'we walk' vs 'i walk'\n\n\nvar isPlural = function isPlural(parsed) {\n var vb = parsed.verb;\n\n if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) {\n return true;\n }\n\n if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) {\n return false;\n } //consider its prior noun\n\n\n var noun = findNoun(vb);\n\n if (noun.has('(we|they|you)')) {\n return true;\n }\n\n if (noun.has('#Plural')) {\n return true;\n }\n\n if (noun.has('#Singular')) {\n return false;\n }\n\n return null;\n};\n\nvar isPlural_1 = isPlural;\n\n// #Copula : is -> 'is not'\n// #PastTense : walked -> did not walk\n// #PresentTense : walks -> does not walk\n// #Gerund : walking: -> not walking\n// #Infinitive : walk -> do not walk\n\nvar toNegative = function toNegative(parsed, world) {\n var vb = parsed.verb; // if it's already negative...\n\n if (parsed.negative.found) {\n return;\n } // would walk -> would not walk\n\n\n if (parsed.auxiliary.found) {\n parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have'\n\n if (parsed.auxiliary.has('#Modal have not')) {\n parsed.auxiliary.replace('have not', 'not have');\n }\n\n return;\n } // is walking -> is not walking\n\n\n if (vb.has('(#Copula|will|has|had|do)')) {\n vb.append('not');\n return;\n } // walked -> did not walk\n\n\n if (vb.has('#PastTense')) {\n var inf = toInfinitive_1(parsed, world);\n vb.replaceWith(inf, true);\n vb.prepend('did not');\n return;\n } // walks -> does not walk\n\n\n if (vb.has('#PresentTense')) {\n var _inf = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf, true);\n\n if (isPlural_1(parsed)) {\n vb.prepend('do not');\n } else {\n vb.prepend('does not');\n }\n\n return;\n } //walking -> not walking\n\n\n if (vb.has('#Gerund')) {\n var _inf2 = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf2, true);\n vb.prepend('not');\n return;\n } //fallback 1: walk -> does not walk\n\n\n if (isPlural_1(parsed)) {\n vb.prepend('does not');\n return;\n } //fallback 2: walk -> do not walk\n\n\n vb.prepend('do not');\n return;\n};\n\nvar toNegative_1 = toNegative;\n\n// who/what is doing this verb?\n// get the prior verb most-likely doing this action\n// (it can not-exist - 'close the door')\nvar getSubject = function getSubject(vb) {\n var behind = vb.lookBehind();\n var lastNoun = behind.nouns(null, {\n keep_anaphora: true\n }).last(); // support 'that' and 'this'\n\n if (!lastNoun.found) {\n lastNoun = behind.match('(that|this|each)').last();\n lastNoun = lastNoun.tag('#Noun').nouns();\n }\n\n return lastNoun;\n};\n\nvar getSubject_1 = getSubject;\n\nvar parseVerb = function parseVerb(vb) {\n var parsed = {\n adverb: vb.match('#Adverb+'),\n // 'really'\n negative: vb.match('#Negative'),\n // 'not'\n auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'),\n // 'will' of 'will go'\n particle: vb.match('#Particle'),\n // 'up' of 'pull up'\n verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'),\n original: vb,\n subject: getSubject_1(vb)\n }; // fallback, if no verb found\n\n if (!parsed.verb.found) {\n // blank-everything\n Object.keys(parsed).forEach(function (k) {\n parsed[k] = parsed[k].not('.');\n }); // it's all the verb\n\n parsed.verb = vb;\n return parsed;\n } //\n\n\n if (parsed.adverb && parsed.adverb.found) {\n var match = parsed.adverb.text('reduced') + '$';\n\n if (vb.has(match)) {\n parsed.adverbAfter = true;\n }\n }\n\n return parsed;\n};\n\nvar parse = parseVerb;\n\n/** too many special cases for is/was/will be*/\n\nvar toBe = function toBe(parsed) {\n var isI = false;\n var plural = isPlural_1(parsed);\n var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular\n // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) {\n // isI = true;\n // }\n // 'i look', not 'i looks'\n\n if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n isI = true;\n }\n\n var obj = {\n PastTense: 'was',\n PresentTense: 'is',\n FutureTense: 'will be',\n Infinitive: 'is',\n Gerund: 'being',\n Actor: '',\n PerfectTense: 'been',\n Pluperfect: 'been'\n }; //\"i is\" -> \"i am\"\n\n if (isI === true) {\n obj.PresentTense = 'am';\n obj.Infinitive = 'am';\n }\n\n if (plural) {\n obj.PastTense = 'were';\n obj.PresentTense = 'are';\n obj.Infinitive = 'are';\n }\n\n if (isNegative) {\n obj.PastTense += ' not';\n obj.PresentTense += ' not';\n obj.FutureTense = 'will not be';\n obj.Infinitive += ' not';\n obj.PerfectTense = 'not ' + obj.PerfectTense;\n obj.Pluperfect = 'not ' + obj.Pluperfect;\n obj.Gerund = 'not ' + obj.Gerund;\n }\n\n return obj;\n};\n\nvar toBe_1 = toBe;\n\n// 'may/could/should' -> 'may/could/should have'\nvar doModal = function doModal(parsed) {\n var str = parsed.verb.text();\n var res = {\n PastTense: str + ' have',\n PresentTense: str,\n FutureTense: str,\n Infinitive: str // Gerund: ,\n // Actor: '',\n // PerfectTense: '',\n // Pluperfect: '',\n\n };\n return res;\n};\n\nvar doModal_1 = doModal;\n\nvar conjugate = function conjugate(parsed, world) {\n var verb = parsed.verb; //special handling of 'is', 'will be', etc.\n\n if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) {\n return toBe_1(parsed);\n } // special handling of 'are walking'\n\n\n if (parsed.auxiliary.has('are') && verb.has('#Gerund')) {\n var og = parsed.original.clone();\n var past = og.clone().replace('are', 'were');\n var fut = og.clone().replace('are', 'will be');\n\n var _infinitive = toInfinitive_1(parsed, world);\n\n var res = {\n PastTense: past.text(),\n PresentTense: og.text(),\n FutureTense: fut.text(),\n Infinitive: _infinitive\n };\n return res;\n } // special handling of 'he could.'\n\n\n if (verb.has('#Modal')) {\n return doModal_1(parsed);\n } // dont conjugate imperative form - 'close the door'\n // if (parsed.auxiliary.has('do')) {\n // let str = parsed.original.text()\n // let res = {\n // PastTense: str,\n // PresentTense: str,\n // FutureTense: str,\n // Infinitive: str,\n // }\n // return res\n // }\n\n\n var hasHyphen = parsed.verb.termList(0).hasHyphen();\n var infinitive = toInfinitive_1(parsed, world);\n\n if (!infinitive) {\n return {};\n }\n\n var forms = world.transforms.conjugate(infinitive, world);\n forms.Infinitive = infinitive; // add particle to phrasal verbs ('fall over')\n\n if (parsed.particle.found) {\n var particle = parsed.particle.text();\n var space = hasHyphen === true ? '-' : ' ';\n Object.keys(forms).forEach(function (k) {\n return forms[k] += space + particle;\n });\n } //put the adverb at the end?\n // if (parsed.adverb.found) {\n // let adverb = parsed.adverb.text()\n // let space = hasHyphen === true ? '-' : ' '\n // if (parsed.adverbAfter === true) {\n // Object.keys(forms).forEach(k => (forms[k] += space + adverb))\n // } else {\n // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k]))\n // }\n // }\n //apply negative\n\n\n var isNegative = parsed.negative.found;\n\n if (isNegative) {\n forms.PastTense = 'did not ' + forms.Infinitive;\n forms.PresentTense = 'does not ' + forms.Infinitive;\n forms.Gerund = 'not ' + forms.Gerund;\n } //future Tense is pretty straightforward\n\n\n if (!forms.FutureTense) {\n if (isNegative) {\n forms.FutureTense = 'will not ' + forms.Infinitive;\n } else {\n forms.FutureTense = 'will ' + forms.Infinitive;\n }\n }\n\n if (isNegative) {\n forms.Infinitive = 'not ' + forms.Infinitive;\n }\n\n return forms;\n};\n\nvar conjugate_1 = conjugate;\n\n// if something is 'modal-ish' we are forced to use past-participle\n// ('i could drove' is wrong)\n\nvar useParticiple$1 = function useParticiple(parsed) {\n if (parsed.auxiliary.has('(could|should|would|may|can|must)')) {\n return true;\n }\n\n if (parsed.auxiliary.has('am .+? being')) {\n return true;\n }\n\n if (parsed.auxiliary.has('had .+? been')) {\n return true;\n }\n\n return false;\n}; // conjugate 'drive' ➔ 'have driven'\n\n\nvar toParticiple = function toParticiple(parsed, world) {\n //is it already a participle?\n if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) {\n return;\n } // try to swap the main verb to its participle form\n\n\n var obj = conjugate_1(parsed, world);\n var str = obj.Participle || obj.PastTense;\n\n if (str) {\n parsed.verb.replaceWith(str, false);\n } // 'am being driven' ➔ 'have been driven'\n\n\n if (parsed.auxiliary.has('am .+? being')) {\n parsed.auxiliary.remove('am');\n parsed.auxiliary.replace('being', 'have been');\n } // add a 'have'\n\n\n if (!parsed.auxiliary.has('have')) {\n parsed.auxiliary.append('have');\n } // tag it as a participle\n\n\n parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim'\n\n parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been'\n\n parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not'\n\n parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right\n\n parsed.auxiliary.tag('Auxiliary');\n};\n\nvar participle = {\n useParticiple: useParticiple$1,\n toParticiple: toParticiple\n};\n\nvar _toParticiple = participle.toParticiple,\n useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs\n\nvar makeNeutral = function makeNeutral(parsed) {\n //remove tense-info from auxiliaries\n parsed.auxiliary.remove('(will|are|am|being)');\n parsed.auxiliary.remove('(did|does)');\n parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle\n\n parsed.particle.remove();\n parsed.negative.remove();\n return parsed;\n};\n\nvar methods$1 = {\n /** overload the original json with verb information */\n json: function json(options) {\n var _this = this;\n\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (p) {\n var json = p.json(options)[0];\n var parsed = parse(p);\n json.parts = {};\n Object.keys(parsed).forEach(function (k) {\n if (parsed[k] && parsed[k].isA === 'Doc') {\n json.parts[k] = parsed[k].text('normal');\n } else {\n json.parts[k] = parsed[k];\n }\n });\n json.isNegative = p.has('#Negative');\n json.conjugations = conjugate_1(parsed, _this.world);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** grab the adverbs describing these verbs */\n adverbs: function adverbs() {\n var list = []; // look at internal adverbs\n\n this.forEach(function (vb) {\n var advb = parse(vb).adverb;\n\n if (advb.found) {\n list = list.concat(advb.list);\n }\n }); // look for leading adverbs\n\n var m = this.lookBehind('#Adverb+$');\n\n if (m.found) {\n list = m.list.concat(list);\n } // look for trailing adverbs\n\n\n m = this.lookAhead('^#Adverb+');\n\n if (m.found) {\n list = list.concat(m.list);\n }\n\n return this.buildFrom(list);\n },\n /// Verb Inflection\n\n /**return verbs like 'we walk' and not 'spencer walks' */\n isPlural: function isPlural() {\n var _this2 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this2.world) === true) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n\n /** return verbs like 'spencer walks' and not 'we walk' */\n isSingular: function isSingular() {\n var _this3 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this3.world) === false) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n /// Conjugation\n\n /** return all forms of this verb */\n conjugate: function conjugate() {\n var _this4 = this;\n\n var result = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var forms = conjugate_1(parsed, _this4.world);\n\n result.push(forms);\n });\n return result;\n },\n\n /** walk ➔ walked*/\n toPastTense: function toPastTense() {\n var _this5 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam'\n\n if (useParticiple(parsed)) {\n _toParticiple(parsed, _this5.world);\n\n return;\n }\n\n if (vb.has('#Imperative')) {\n return;\n } // don't conjugate 'to be'\n\n\n if (vb.has('be') && vb.lookBehind('to$').found) {\n return;\n } // handle 'is raining' -> 'was raining'\n\n\n if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) {\n vb.replace('is', 'was');\n return;\n }\n\n var str = conjugate_1(parsed, _this5.world).PastTense;\n\n if (str) {\n parsed = makeNeutral(parsed);\n parsed.verb.replaceWith(str, false); // vb.tag('PastTense')\n }\n });\n return this;\n },\n\n /** walk ➔ walks */\n toPresentTense: function toPresentTense() {\n var _this6 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var obj = conjugate_1(parsed, _this6.world);\n\n var str = obj.PresentTense; // 'i look', not 'i looks'\n\n if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n str = obj.Infinitive;\n }\n\n if (str) {\n //awkward support for present-participle form\n // -- should we support 'have been swimming' ➔ 'am swimming'\n if (parsed.auxiliary.has('(have|had) been')) {\n parsed.auxiliary.replace('(have|had) been', 'am being');\n\n if (obj.Particle) {\n str = obj.Particle || obj.PastTense;\n }\n\n return;\n }\n\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('PresentTense');\n parsed = makeNeutral(parsed); // avoid 'he would walks'\n\n parsed.auxiliary.remove('#Modal');\n }\n });\n return this;\n },\n\n /** walk ➔ will walk*/\n toFutureTense: function toFutureTense() {\n var _this7 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // 'i should drive' is already future-enough\n\n if (useParticiple(parsed)) {\n return;\n }\n\n var str = conjugate_1(parsed, _this7.world).FutureTense;\n\n if (str) {\n parsed = makeNeutral(parsed); // avoid 'he would will go'\n\n parsed.auxiliary.remove('#Modal');\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('FutureTense');\n }\n });\n return this;\n },\n\n /** walks ➔ walk */\n toInfinitive: function toInfinitive() {\n var _this8 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this8.world).Infinitive;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Infinitive');\n }\n });\n return this;\n },\n\n /** walk ➔ walking */\n toGerund: function toGerund() {\n var _this9 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this9.world).Gerund;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Gerund');\n }\n });\n return this;\n },\n\n /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */\n toParticiple: function toParticiple() {\n var _this10 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n var noAux = !parsed.auxiliary.found;\n\n _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found\n\n\n if (noAux) {\n parsed.verb.prepend(parsed.auxiliary.text());\n parsed.auxiliary.remove();\n }\n });\n return this;\n },\n /// Negation\n\n /** return only verbs with 'not'*/\n isNegative: function isNegative() {\n return this[\"if\"]('#Negative');\n },\n\n /** return only verbs without 'not'*/\n isPositive: function isPositive() {\n return this.ifNo('#Negative');\n },\n\n /** return only commands - verbs in imperative mood */\n isImperative: function isImperative() {\n return this[\"if\"]('#Imperative');\n },\n\n /** add a 'not' to these verbs */\n toNegative: function toNegative() {\n var _this11 = this;\n\n this.list.forEach(function (p) {\n var doc = _this11.buildFrom([p]);\n\n var parsed = parse(doc);\n\n toNegative_1(parsed, doc.world);\n });\n return this;\n },\n\n /** remove 'not' from these verbs */\n toPositive: function toPositive() {\n var m = this.match('do not #Verb');\n\n if (m.found) {\n m.remove('do not');\n }\n\n return this.remove('#Negative');\n },\n\n /** who, or what is doing this action? */\n subject: function subject() {\n var list = [];\n this.forEach(function (p) {\n var found = getSubject_1(p);\n\n if (found.list[0]) {\n list.push(found.list[0]);\n }\n });\n return this.buildFrom(list);\n }\n};\n\nvar addMethod$1 = function addMethod(Doc) {\n /** */\n var Verbs = /*#__PURE__*/function (_Doc) {\n _inherits(Verbs, _Doc);\n\n var _super = _createSuper(Verbs);\n\n function Verbs() {\n _classCallCheck(this, Verbs);\n\n return _super.apply(this, arguments);\n }\n\n return Verbs;\n }(Doc); // add-in our methods\n\n\n Object.assign(Verbs.prototype, methods$1); // aliases\n\n Verbs.prototype.negate = Verbs.prototype.toNegative;\n\n Doc.prototype.verbs = function (n) {\n var match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs\n\n match = match.not('^#Adverb+');\n match = match.not('#Adverb+$'); // handle commas:\n // don't split 'really, really'\n\n var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas\n\n var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at...\n\n var gerund = m.match('#PastTense #Gerund');\n\n if (!gerund.has('(been|am|#Auxiliary) #Gerund')) {\n m = m.splitBefore(gerund.match('#Gerund'));\n } // combine them back together\n\n\n m = m.concat(keep);\n m.sort('index'); //handle slashes?\n //ensure there's actually a verb\n\n m = m[\"if\"]('#Verb'); // the reason he will is ...\n\n if (m.has('(is|was)$')) {\n m = m.splitBefore('(is|was)$');\n } //ensure it's not two verbs\n\n\n if (m.has('#PresentTense #Adverb #PresentTense')) {\n m = m.splitBefore('#Adverb #PresentTense');\n } //grab (n)th result\n\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n var vb = new Verbs(m.list, this, this.world);\n return vb;\n };\n\n return Doc;\n};\n\nvar Verbs = addMethod$1;\n\nvar addMethod = function addMethod(Doc) {\n /** */\n var People = /*#__PURE__*/function (_Doc) {\n _inherits(People, _Doc);\n\n var _super = _createSuper(People);\n\n function People() {\n _classCallCheck(this, People);\n\n return _super.apply(this, arguments);\n }\n\n return People;\n }(Doc);\n\n Doc.prototype.people = function (n) {\n var match = this.splitAfter('@hasComma');\n match = match.match('#Person+'); //grab (n)th result\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new People(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar People = addMethod;\n\nvar subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People];\n\nvar extend = function extend(Doc) {\n // add basic methods\n Object.keys(_simple).forEach(function (k) {\n return Doc.prototype[k] = _simple[k];\n }); // add subclassed methods\n\n subclass.forEach(function (addFn) {\n return addFn(Doc);\n });\n return Doc;\n};\n\nvar Subset = extend;\n\nvar methods = {\n misc: methods$4,\n selections: _simple\n};\n/** a parsed text object */\n\nvar Doc = /*#__PURE__*/function () {\n function Doc(list, from, world) {\n var _this = this;\n\n _classCallCheck(this, Doc);\n\n this.list = list; // this.reasons = []\n //quiet these properties in console.logs\n\n Object.defineProperty(this, 'from', {\n enumerable: false,\n value: from,\n writable: true\n }); //borrow some missing data from parent\n\n if (world === undefined && from !== undefined) {\n world = from.world;\n } //'world' getter\n\n\n Object.defineProperty(this, 'world', {\n enumerable: false,\n value: world,\n writable: true\n }); //fast-scans for our data\n\n Object.defineProperty(this, '_cache', {\n enumerable: false,\n writable: true,\n value: {}\n }); //'found' getter\n\n Object.defineProperty(this, 'found', {\n get: function get() {\n return _this.list.length > 0;\n }\n }); //'length' getter\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return _this.list.length;\n }\n }); // this is way easier than .constructor.name...\n\n Object.defineProperty(this, 'isA', {\n get: function get() {\n return 'Doc';\n }\n });\n }\n /** run part-of-speech tagger on all results*/\n\n\n _createClass(Doc, [{\n key: \"tagger\",\n value: function tagger() {\n return _02Tagger(this);\n }\n /** pool is stored on phrase objects */\n\n }, {\n key: \"pool\",\n value: function pool() {\n if (this.list.length > 0) {\n return this.list[0].pool;\n }\n\n return this.all().list[0].pool;\n }\n }]);\n\n return Doc;\n}();\n/** create a new Document object */\n\n\nDoc.prototype.buildFrom = function (list) {\n list = list.map(function (p) {\n return p.clone(true);\n }); // new this.constructor()\n\n var doc = new Doc(list, this, this.world);\n return doc;\n};\n/** create a new Document from plaintext. */\n\n\nDoc.prototype.fromText = function (str) {\n var list = _01Tokenizer(str, this.world, this.pool());\n return this.buildFrom(list);\n};\n\nObject.assign(Doc.prototype, methods.misc);\nObject.assign(Doc.prototype, methods.selections); //add sub-classes\n\nSubset(Doc); //aliases\n\nvar aliases = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if'\n};\nObject.keys(aliases).forEach(function (k) {\n return Doc.prototype[k] = Doc.prototype[aliases[k]];\n});\nvar Doc_1 = Doc;\n\nvar smallTagger = function smallTagger(doc) {\n var terms = doc.termList();\n _01Lexicon(terms, doc.world); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar tiny = smallTagger;\n\nfunction instance(worldInstance) {\n //blast-out our word-lists, just once\n var world = worldInstance;\n /** parse and tag text into a compromise object */\n\n var nlp = function nlp() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n\n if (lexicon) {\n world.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, world);\n var doc = new Doc_1(list, null, world);\n doc.tagger();\n return doc;\n };\n /** parse text into a compromise object, without running POS-tagging */\n\n\n nlp.tokenize = function () {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n var w = world;\n\n if (lexicon) {\n w = w.clone();\n w.words = {};\n w.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, w);\n var doc = new Doc_1(list, null, w);\n\n if (lexicon || doc.world.taggers.length > 0) {\n tiny(doc);\n }\n\n return doc;\n };\n /** mix in a compromise-plugin */\n\n\n nlp.extend = function (fn) {\n fn(Doc_1, world, this, Phrase_1, Term_1, Pool_1);\n return this;\n };\n /** create a compromise Doc object from .json() results */\n\n\n nlp.fromJSON = function (json) {\n var list = fromJSON_1(json, world);\n return new Doc_1(list, null, world);\n };\n /** make a deep-copy of the library state */\n\n\n nlp.clone = function () {\n return instance(world.clone());\n };\n /** log our decision-making for debugging */\n\n\n nlp.verbose = function () {\n var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n world.verbose(bool);\n return this;\n };\n /** grab currently-used World object */\n\n\n nlp.world = function () {\n return world;\n };\n /** pre-parse any match statements */\n\n\n nlp.parseMatch = function (str, opts) {\n return matchSyntax(str, opts);\n };\n /** current version of the library */\n\n\n nlp.version = _version; // aliases\n\n nlp[\"import\"] = nlp.load;\n nlp.plugin = nlp.extend;\n return nlp;\n}\n\nvar src = instance(new World_1());\n\nexport default src;\n","const isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\n}\nconst fromTemplate = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl && isObject(tmpl) && tmpl.description) {\n return tmpl.description\n }\n return null\n}\nmodule.exports = fromTemplate\n","const preProcess = function (doc) {\n doc.parentheses().remove()\n return doc\n}\nmodule.exports = preProcess\n","const cleanUp = function (s) {\n // 'an actor and was a politician'\n s.remove('and #Copula .*')\n return s\n}\n\n// founded in 1952 as the flagship ..\nconst findPivot = function (s) {\n let m = s.matchOne('#Copula+ (a|an|the|any|one) of?')\n if (!m.found) {\n m = s.matchOne('#Copula+')\n }\n if (!m.found) {\n m = s.matchOne('refers to (a|an|the|any)? of?')\n }\n if (!m.found) {\n m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?')\n }\n if (!m.found) {\n return null\n }\n let f = s.splitOn(m)\n let verb = f.eq(1)\n let article = verb.match(`(a|an|the|any)? of?`)\n verb.remove(`(a|an|the|any)? of?`)\n return {\n before: f.eq(0),\n verb: f.eq(1),\n article: article,\n after: cleanUp(f.eq(2))\n }\n}\nmodule.exports = findPivot\n","const byClause = function (s) {\n // 'an actor and also a politician'\n s.remove('and (also|eventually) (a|an|the|#Possessive) .*')\n // 'an actor who was a politician'\n s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*')\n // past-tense verbs 'located in spain'\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n //\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n\n return s\n}\nmodule.exports = byClause\n","const safeCuts = function (s) {\n // 'in hamilton, Canada'\n if (s.has('(#Place && @hasComma) #Country+$')) {\n s.remove('#Country+$')\n }\n // 'which spans the '\n if (s.has('#Noun (that|which|who) #PresentTense the .*')) {\n s.remove(' that #PresentTense the .*')\n }\n // 'owned by the ...'\n if (s.has('#Noun #PastTense by the .*')) {\n s.remove('#PastTense by the .*')\n }\n // 'an american actress'\n s.remove('#Demonym')\n // professional hockey player\n s.remove('(professional|former)')\n\n //event-templates\n s.remove('and? held annually .*')\n s.remove('taking place each .*')\n\n // ordinal templates - the fifth fastest ..\n s.remove('^one of (the|many|several|#Value)+')\n s.remove('^(a|an|the)? #Ordinal? #Superlative')\n s.remove('^(a|an|the)? #Ordinal? most #Adjective')\n\n //\n s.remove('born in .*')\n s.remove('born #Date+ in? #Place+?')\n s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*')\n s.remove('(which|who|that) (is|was) .*')\n s.remove('^the name of')\n\n return s\n}\nmodule.exports = safeCuts\n","const isIndependent = function (c) {\n if (c.has('^(and|the|which|who|whom|also|a|an|the)')) {\n return true\n }\n // 'part of abu dabi'\n if (c.has('^(west|north|south|east|part) of')) {\n return true\n }\n // 'written by .'\n if (c.has('^#PastTense by .')) {\n return true\n }\n // 'sometimes called ..'\n if (c.has('^(occasionally|sometimes|frequently)')) {\n return true\n }\n // 'such as ..'\n if (c.has('^such as')) {\n return true\n }\n // 'featuring gold feathers ..'\n if (c.has('^(including|featuring|depicting)')) {\n return true\n }\n return false\n}\n\nconst hardCuts = function (s) {\n // .. in san fransisco\n if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) {\n s.remove('(located|based) in #Place+$')\n } else if (\n s.has(\n '(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'\n )\n ) {\n s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')\n } else if (s.has('(#Noun|#Value) in #Place+$')) {\n s.remove('in #Place+$')\n } else {\n s.remove('and? part of #Place+$')\n s.remove('and? near #Place+$')\n }\n\n // by clause\n let clauses = s.clauses()\n if (clauses.length > 1) {\n let first = clauses.eq(0)\n let second = clauses.eq(1)\n //can we just choose the first clause?\n if (isIndependent(second)) {\n s = clauses.eq(0)\n } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) {\n // 'produced by...'\n s = clauses.eq(0)\n } else if (second.has('^(#Gerund)') && first.has('#Noun$')) {\n // 'featuring a ...'\n s = clauses.eq(0)\n } else {\n // can we remove the last clause, atleast?\n let last = clauses.last()\n if (isIndependent(last)) {\n clauses.list.pop()\n s = clauses.join()\n }\n }\n }\n\n //.. writen by sandro leonardo\n if (s.has('(#Noun|and) #PastTense by')) {\n s.remove('#PastTense by .*')\n }\n //\n s.remove('and? designed to .*')\n s.remove('and? owned by .*')\n s.remove('and? consisting of .*')\n // , which collapsed\n if (s.has('@hasComma (which|who) #Verb')) {\n s.remove('(which|who) .*')\n }\n // , then\n // if (s.has('@hasComma (then)')) {\n // s.remove('(which|who) .*')\n // }\n return s\n}\nmodule.exports = hardCuts\n","const lastTry = function (s) {\n s.remove('(small|large|minor|major)')\n s.remove('(extinct|retired|annual|biweekly|monthly|daily)')\n s.remove('(female|male)')\n s.remove('(private|independent|official|unofficial|officially)')\n s.remove('(southern|northern|eastern|western|northeastern|northwestern)')\n\n //\n s.remove('^(family|clade|genus|species|order) of')\n return s\n}\nmodule.exports = lastTry\n","//check text is appropriate length\nconst isGood = function (doc, options) {\n if (doc && typeof doc.text === 'function') {\n let text = doc.text()\n if (text && text.length > options.min && text.length < options.max) {\n return true\n }\n }\n return false\n}\nmodule.exports = isGood\n","const nlp = require('compromise')\nconst preProcess = require('./00-preProcess')\nconst findPivot = require('./01-pivot')\nconst byClause = require('./02-byClause')\nconst safeCut = require('./03-safeCuts')\nconst hardCut = require('./04-hardCuts')\nconst lastTry = require('./05-lastTry')\nconst isGood = require('./_isGood')\n\nconst post = function (s) {\n s.remove('^(and|or|but)')\n s.remove('(and|or|but)$')\n s.post('') // remove trailing comma\n return s.text()\n}\n\n// let count = 0\nconst doSentence = function (doc, options) {\n let sentence = doc.sentence(0)\n if (!sentence) {\n return ''\n }\n let txt = sentence.text()\n let s = nlp(txt)\n preProcess(s)\n\n let pivot = findPivot(s)\n // if we can't pivot it properly, don't bother\n if (!pivot || !pivot.verb || !pivot.verb.found) {\n return ''\n }\n let after = pivot.after\n if (options.article && pivot.article && pivot.article.found) {\n after.prepend(pivot.article.text())\n }\n // maybe it's good already\n if (isGood(after, options)) {\n return post(after)\n }\n // parse major chunks\n after = byClause(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // perform some modifications\n after = safeCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // really give it a go\n after = hardCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // atleast we tried\n after = lastTry(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // console.log(after.text())\n // count += 1\n // console.log(count)\n // console.log(after.match('#PastTense').text())\n // console.log(after.text())\n // console.log('\\n')\n return ''\n}\nmodule.exports = doSentence\n","const bad = [\n 'living',\n 'births',\n 'former',\n 'deceased',\n 'missing',\n 'with',\n 'descent',\n 'award',\n 'winners',\n 'nominees',\n 'alumni',\n 'other'\n].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst good = ['male', 'female'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst like = ['male', 'female', 'century'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst dislike = ['people', 'place', 'from', 'in', 'people from'].map(\n (str) => new RegExp(`\\\\b${str}\\\\b`),\n 'i'\n)\n\nmodule.exports = {\n good: good,\n bad: bad,\n like: like,\n dislike: dislike\n}\n","const { like, dislike, good, bad } = require('./regs')\nconst hasYear = /[0-9]{4}/\nconst isPlural = /s$/\n\nconst fromCategory = function (doc) {\n let cats = doc.categories()\n\n // try to focus on the best ones, first\n let tmp = cats.filter((cat) => {\n return good.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // remove bad ones\n cats = cats.filter((cat) => {\n if (bad.find((reg) => reg.test(cat))) {\n return false\n }\n if (hasYear.test(cat)) {\n return false\n }\n return true\n })\n\n if (cats.length === 0) {\n return ''\n }\n // look at sorting by preferences\n tmp = cats.filter((cat) => {\n return like.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n // remove disliked ones\n tmp = cats.filter((cat) => {\n // not a plural ending\n if (isPlural.test(cat) === false) {\n return false\n }\n // just one word\n if (cat.slice(' ').length === 1) {\n return false\n }\n return dislike.find((reg) => reg.test(cat)) === undefined\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // sort them by most words\n cats = cats.sort((a, b) => {\n let aWords = a.split(' ').length\n let bWords = b.split(' ').length\n if (aWords > bWords) {\n return -1\n } else if (aWords < bWords) {\n return 1\n }\n return 0\n })\n // console.log(cats)\n\n return cats[0]\n}\nmodule.exports = fromCategory\n","const nlp = require('compromise')\nconst titleCase = (str) => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\n// 'American songwriters' to 'an American songwriter'\nconst changeCat = function (cat, options) {\n let c = nlp(cat)\n c.nouns().toSingular()\n // add article to the front\n if (options.article) {\n let article = 'A'\n let noun = c.nouns(0)\n if (noun && noun.found) {\n article = c.nouns(0).json({ terms: false })[0].article || article\n article = titleCase(article)\n }\n let first = c.terms(0)\n if (first.has('#ProperNoun') === false) {\n first.toLowerCase()\n }\n c.prepend(article)\n }\n // remove any parentheses\n c.parentheses().remove()\n return c.text()\n}\nmodule.exports = changeCat\n","const chooseCat = require('./01-choose')\nconst change = require('./02-change')\n\nconst byCategory = function (doc, options) {\n let cat = chooseCat(doc, options)\n if (!cat) {\n return ''\n }\n return change(cat, options)\n}\nmodule.exports = byCategory\n","const nlp = require('compromise')\nconst fromTemplate = require('./template')\nconst fromSentence = require('./sentence')\nconst fromCategory = require('./category')\n\nconst defaults = {\n article: true,\n template: true,\n sentence: true,\n category: true,\n max: 80,\n min: 3\n}\n\nconst seemsGood = function (txt, options) {\n return txt && txt.length > 5 && txt.length < options.max\n}\n\nconst plugin = function (models) {\n // add a new method to main class\n models.Doc.prototype.summary = function (options) {\n let doc = this\n options = options || {}\n options = Object.assign({}, defaults, options)\n\n // generate from {{short description}} template\n let txt = ''\n if (options.template) {\n txt = fromTemplate(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n // generate from first-sentence\n if (options.sentence) {\n txt = fromSentence(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n if (options.category) {\n return fromCategory(doc, options)\n }\n return ''\n }\n\n // should we use 'it', 'he', 'they'...\n models.Doc.prototype.article = function () {\n let txt = ''\n // prefer the 2nd sentence\n if (this.sentence(1)) {\n txt = this.sentence(1).text()\n } else {\n txt = this.sentence(0).text()\n }\n let doc = nlp(txt)\n let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase()\n return found || 'it'\n }\n\n // was event in past? is person dead?\n models.Doc.prototype.tense = function () {\n let txt = this.sentence().text()\n let doc = nlp(txt)\n let copula = doc.match('#Copula+').first()\n if (copula.has('was')) {\n return 'Past'\n }\n let vb = doc.verbs(0)\n if (vb.has('#PastTense')) {\n return 'Past'\n }\n if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) {\n return 'Future'\n }\n return 'Present'\n }\n}\nmodule.exports = plugin\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","value","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","e","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","_createSuperInternal","Super","result","NewTarget","arguments","apply","chars","split","makeId","str","text","Math","floor","random","_id","compact","a","b","c","d","f","g","h","I","j","k","l","m","n","q","r","s","t","u","v","w","x","y","z","unicode","keys","forEach","killUnicode","join","unicode_1","periodAcronym","oneLetterAcronym$1","noPeriodAcronym","lowerCaseAcronym","isAcronym$2","isAcronym","test","isAcronym_1$1","hasSlash$1","clean","toLowerCase","trim","original","replace","clean_1","reduced","reduce","startings","endings","hasSlash","hasApostrophe","hasAcronym","minusNumber","shortYear","parseTerm","pre","post","found","after","parsed","word","alias","parse$2","createCommonjsModule","fn","module","exports","_01Case","titleCase","upperCase","toUpperCase","toTitleCase","isUpperCase","isTitleCase","_02Punctuation$1","startQuote","endQuote","hasPost","punct","indexOf","hasPre","hasQuote","hasQuotation","hasComma","hasPeriod","hasExclamation","hasQuestionMark","hasEllipses","hasSemicolon","hasHyphen","hyphen","hasDash","hasContraction","implicit","addPunctuation","editDistance","strA","strB","aLength","bLength","limit","abs","matrix","_i","a_index","b_index","cost","min","_i2","shouldUpdate","fuzzyMatch","minLength","undefined","steps","max","relative","similarity","_fuzzy","wrapMatch","doesMatch","reg","index","id","anything","start","end","hasOwnProperty","soft","root","fuzzy","score","tag","tags","method","regex","fastOr","choices","operator","every","some","negative","_doesMatch","boring","doesMatch_1","isAcronym_1","isImplicit","isKnown","setRoot","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","_03Misc","hasSpace$1","textOut","options","showPre","showPost","before","normal","titlecase","ProperNoun","Acronym","lowercase","acronyms","whitespace","last","punctuation","abbreviations","Abbreviation","_04Text","boringTags","Auxiliary","Possessive","rankTags","term","tagSet","sort","lineage","isA","_bestTag","jsonDefault","offset","bestTag","json$1","json","assign","_05Json$1","methods$8","isClientSide","window","document","padEnd","width","toString","logTag","reason","console","log","logUntag","isArray$3","isArray","arr","titleCase$4","charAt","substr","fns$1","addTag","tagset","isVerbose","down","unTag","notA","addTags","add","lowerCase","titleCase$3","unTag$1","untagAll","unTag_1$1","canBe$2","canBe","enemies","canBe_1$1","tag_1","tagSafe$1","tagSafe","unTag_1","canBe_1","tag$1","Term","String","prev","next","set","clone","Term_1","terms","cache","pool","get","error","push","clone$1","isShallow","_this","buildFrom","newTerms","map","lastTerm","hasId","wantId","_terms","lastId","concat","wordCount","filter","fullSentence","len","_01Utils$1","trimEnd","text$1","isFirst","isLast","isFull","txt","_02Text","_03Change","endOfSentence","combinePost","match","addWhitespace$1","addWhitespace","beforeTerms","newTerm","stitchIn$1","stitchIn","lastBefore","lastNew","afterId","afterTerm","beforeId","unique$5","unique","list","appendPhrase","newPhrase","doc","toStretch","docs","parents","parent","shouldChange","append","hasSpace","main","unique$4","joinPhrase","starterId","prepend","shrinkAll","deleteLength","phrase","find","deletePhrase","_delete$1","append_1","prepend_1","_delete","replace$1","firstLength","tmp","splitOn","findIndex","slice","_04Insert","res","_05Json","lookAhead","regs","getAfter","all","lookBehind","getBefore","_06Lookahead","methods$7","failFast$1","failFast","optional","_02FailFast","_matchLogic","getGreedy","state","endReg","start_i","phrase_length","count","greedyTo","nextReg","isEndGreedy","greedy","tmpReg","doOrBlock","skipN","block","wasFound","cr","w_index","extra","foundBlock","keepGoing","doAndBlock","longest","allDidMatch","allWords","tryTerm","getGroup","term_index","name","groups","groupId","termId","group","tryHere","hasGroup","previousGroup","named","haveNeeds","remain","skipto","skipNum","_g","_skipNum","_g2","startAt","nextRegMatched","nextTerm","_g3","foundNeg","_03TryMatch","postProcess$1","postProcess","matches","atEnd","_ref","_04PostProcess","bySlashes","byParentheses","byWord","isBlock","isReg","cleanUp","parseBlocks","_final","_01ParseBlocks","hasMinMax","andSign","captureName","RegExp","titleCase$2","stripStart","stripEnd","stripBoth","parseToken","groupType","exec","Number","_02ParseToken","nameGroups","tokens","convert","current","token","doFastOrMode","shouldPack","oneOf","opts","_03PostProcess","isArray$2","byArray","blocks","fromDoc","ids","idBlocks","addOptions","syntax","input","matchSyntax","idLookup","blocklist","_loop","_t","foundAll","idLookup_1","matchAll","matchOne","_res","_res2","_01MatchAll","notMatch","ts","not$1","match_1","justOne","has","not","_this2","canBe$1","_this3","results","previous","can","Phrase","aliases$1","Phrase_1","Pool","words","remove","merge","stats","Pool_1","linkTerms","_linkTerms","initSplit","hasSomething","isAcronym$1","hasEllipse","newLine","hasLetter","startWhitespace","naiive_split","lines","isSentence","abbrevs","lastWord","splitSentences","sentences","chunks","splits","ws","_01Sentences","wordlike","isBoundary","naiiveSplit","isSlash","notWord","reg2","combineSlashes","splitHyphens","hyphens","whichDash","isArray$1","splitWords","carry","_02Words","fromText","phrases","_01Tokenizer","fromJSON","fromJSON_1","_version","entity","nouns$1","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","NickName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","verbs$1","Imperative","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","values","Value","Ordinal","Cardinal","Fraction","RomanNumeral","TextValue","NumericValue","Money","Percent","misc$1","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Timezone","Time","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","_color","unique$3","inferIsA","_isA","unique$2","inferNotA","_notA","inferLineage","_lineage","validate","inferTags","inference","addIn","build","_data","seq","cache$1","toAlphaCode","_o","fromCharCode","fromAlphaCode","_e","charCodeAt","encoding","symbols","nodes","symCount","syms","indexFromRef","toArray","_s","unpack","unpack_1$1","unpack_1$1$1","_o2","Array","efrtUnpack_min","misc","g8","vh1","q1","q2","q3","q4","her","his","their","themselves","your","our","my","its","fancy","lex","TextOrdinal","plural","toPlural","conj","conjugate","adjectives","hasCompound","addWords","wordsObj","multi","buildOut","lexicon","unpack_1","addIrregulars","nouns","irregulars","verbs","inf","forms","addIrregulars_1","plurals","addendum","alga","alumna","alumnus","analysis","antenna","appendix","avocado","axis","bacillus","barracks","beau","bus","cactus","chateau","child","circus","clothes","corpus","criterion","curriculum","database","deer","diagnosis","echo","embargo","epoch","foot","formula","fungus","genus","goose","halo","hippopotamus","larva","leaf","libretto","loaf","man","memorandum","modulus","mosquito","mouse","nebula","nucleus","octopus","opus","ovum","ox","parenthesis","person","phenomenon","prognosis","quiz","radius","referendum","rodeo","sex","shoe","sombrero","stimulus","stomach","syllabus","synopsis","tableau","thesis","thief","tooth","tornado","tuxedo","vertebra","mapping$1","prt","perf","pst","fut","pres","pluperf","conjugations","act","ache","age","aim","arise","babysit","ban","be","beat","become","begin","being","bend","bet","bind","bite","bleed","blow","boil","brake","breed","bring","broadcast","budget","burn","burst","buy","choose","cling","come","compete","creep","cut","deal","develop","die","dig","dive","draw","dream","drink","drive","drop","eat","edit","egg","fall","feed","feel","fight","flee","fling","fly","forbid","forget","forgive","free","freeze","give","go","grow","guide","hang","have","hear","hide","hit","hold","hurt","ice","imply","is","keep","kneel","know","lay","lead","leap","leave","lend","lie","light","loose","lose","make","mean","meet","miss","patrol","pay","prove","puke","put","quit","read","ride","reside","ring","rise","rub","run","say","seat","see","seek","sell","send","sew","shake","shave","shed","shine","shoot","show","shut","sing","sink","sit","ski","slay","sleep","slide","smash","sneak","speak","speed","spend","spill","spin","spit","spread","spring","stand","steal","stick","sting","stink","stream","strew","strike","suit","sware","swear","sweep","swim","swing","take","teach","tear","tell","think","thrive","tie","undergo","understand","upset","wait","wake","wear","weave","wed","weep","win","wind","withdraw","wring","write","full","conjugations_1","endsWith$1","repl","pr","pa","gr","ar","suffixes$1","posMap","doTransform","pos","checkSuffix","_01Suffixes","hasY","generic","_02Generic","conjugate$2","conjugate_1$1","do_rules$1","dont_rules$1","irregulars$5","nice","late","hard","inner","outer","far","worse","bad","good","big","large","transforms$2","to_superlative","toSuperlative","do_rules","dont_rules","irregulars$4","grey","gray","green","yellow","red","well","sad","transforms$1","to_comparative","toComparative","fns","conjugate$1","sup","comp","adjectives$2","suffixes","_rules$2","addE","trySuffix","pluralize","_rules$1","invertObj","invert","toSingular_1","rules","to","_transform","guessVerb","_guess","guessTense","three","two","one","toInfinitive$1","irregs","rule","toInfinitive_1$1","irregulars$3","_isVerbose","World","verbose","bool","wordObj","cleaned","addConjugations","addPlurals","taggers","compounds","postProcessors","JSON","parse","stringify","w2","World_1","_01Utils","from","addParent","reverse","doShallow","wordcount","_02Accessors","first","eq","firstTerms","firstTerm","lastTerms","termList","num","getGroups","allGroups","_groups$j","getOneName","_loop2","sentence","cacheRequired$1","cacheRequired","needTags","needWords","_cache","_cacheRequired","_failFast","_03Match","ifNo","lookAfter","lookBefore","befores","hasAfter","hasBefore","tagTerms","safe","tagList","_setTag","why","_04Tag","detachParent","sub","_this4","_this5","_05Loops","tokenize","buildTree","val","more","rest","fastLookup","everyTerm","_lookup","_06Lookup","isObject","lookup","isObj","byVal","lookUp","uncache","_07Cache","titleCase$1","replaceWith","keepTags","newPhrases","keepCase","tmpDoc","tagger","oldTags","_replace","_01Replace","_02Insert","makeNew","insertAfter","insertAt","insertBefore","arg","toRemove","shouldTrim","showFull","trimPre","trimPost","_01Text","termOffsets","elapsed","offsets","calcOffset","_offset","_02Json","jsonDefaults","setOptions","frequency","freq","already","data","_debug","reset","css","blue","magenta","cyan","black","logClientSide","cli","tagString","debug","topk","_topk","debug_1","out","_03Out","methods$6","alpha","left","right","byFreq","counts","sortSequential","order","alphabetical","seqNames","sequence","sequential","chron","chronological","unique$1","_01Sort","isPunct","quotes","methods$5","termArr","quotations","adverbs","_methods","defaults","emoji","contractions","parentheses","possessives","honorifics","mapping","medium","heavy","normalize","strip","contraction","expand","unwrap","possessive","_02Normalize","_03Split","foundEm","parts","splitAfter","splitBefore","segment","eachTerm","toCamelCase","_04Case","_05Whitespace","hyphenate","dehyphenate","deHyphenate","toQuotations","toQuotation","toParentheses","removed","increase","_06Join","postPunct","setContraction","suffix","contract","_07Contract","methods$4","methods$3","emojis","atmentions","atMentions","phoneNumbers","money","places","organizations","clauses","entities","yup","people","ignore","things","topics","_simple","underOver","tryMultiple","checkLexicon","foundWords","noPrefix","_01Lexicon","apostrophes","perSec","checkPunctuation","endChar","_02Punctuation","startsWith","romanNumeral","romanNumValid","checkRegex$1","checkRegex","_03Prefixes","Adj$1","Inf$1","Pres$1","Sing$1","Past$1","Exp","Actor$1","Noun$1","Last$1","endsWith","Adj","Inf","Pres","Sing","Past","Avb","Plrl","Vb","Last","suffixMap","ea","ia","ic","ly","oed","ued","xed","azy","eer","ped","ffy","ify","ing","ize","lar","mum","nes","nny","oid","ous","que","rol","sis","zes","amed","aped","ched","lked","nded","cted","dged","akis","cede","chuk","czyk","ects","ends","enko","ette","fies","fore","gate","gone","ices","ints","ines","ions","less","llen","made","nsen","oses","ould","sson","tage","teen","tion","tive","tors","vice","tized","urned","eased","ances","bound","ettes","fully","ishes","ities","marek","nssen","ology","ports","rough","tches","tieth","tures","wards","where","auskas","keeper","logist","teenth","opoulos","borough","sdottir","endRegexs","_char","knownSuffixes","_04Suffixes","emoticons","emojiReg","isCommaEmoji","raw","isEmoticon","tagEmoji","_05Emoji","lookups","_01Init","afterThisWord","it","there","because","but","who","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","markov","beforeThisPos","afterThisPos","afterKeys","beforeKeys","checkNeighbours","foundTag","_tag","_tag2","_foundTag","_tag3","_ret","_01Neighbours","hasNumber","checkCase","_02Case","hasPrefix","prefix","checkPrefix","stem","_03Stem","isPlural$3","isSingular$1","isPlural_1$2","isSingular","isPlural","noPlurals","notPlural","notSingular","checkPlural","_04Plurals","orgWords","maybeOrg","Comma","tagOrgs","_05Organizations","oneLetterAcronym","periodSeperated","oneLetterWord","A","checkAcronym","_06Acronyms","step","neighbours","fallbacks","_02Fallbacks","hasNegative","irregulars$2","wont","cant","cannot","dont","dun","doAint","noun","checkNegative","_01Negative","contraction$1","easy","ll","ve","re","checkApostrophe","_02Simple","irregulars$1","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","checkIrregulars","_03Irregulars","hasApostropheS","banList","that","hereThere","here","everywhere","isPossessive","twoTerm","isHas","checkPossessive","_04Possessive","hasPerfect","useDid","how","what","checkPerfect","_05PerfectTense","isRange","timeRange","checkRange","_06Ranges","french","qu","checkFrench","_07French","isNumber","isOrdinal","isTime","createPhrase","_03Contractions","hasWord","hasTag","miscCorrection","notIf","fixMisc","_unique","list$5","_01Misc","_ambig","adverbAdjective","personDate","personMonth","personAdjective","personVerb","personPlace","personNoun","dates","list$4","_02Dates","adjectives$1","list$3","_03Adjective","_04Noun","_05Adverb","_06Value","list$2","_07Verbs","list$1","_08Place","_09Org","months","_10People","allLists","lists","newM","enumerated","required","matches_1","hasEvery","chances","runner","allChances","worthIt","tryDoc","runner_1","corrections","_04Correction","_02Tagger","addMethod$a","addMethod","Doc","Abbreviations","_Doc","_super","stripPeriods","addPeriods","addMethod$9","Acronyms","addMethod$8","commas","conjunctions","condition","tooLong","Clauses","addMethod$7","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","addMethod$6","beforeLast","conjunction","hasOxford","Lists","items","hasOxfordComma","addOxfordComma","needsComma","removeOxfordComma","nounList","adjList","verbList","noPlural","hasPlural","hasPlural_1","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","getArticle","isPlural$2","_rules","endS","isPlural$1","isPlural_1$1","exceptions","he","she","they","we","toPossessive","toPossessive_1","parse$1","parse_1","methods$2","article","agree","an","adj","methods_1","addMethod$5","Nouns","keep_anaphora","open","close","addMethod$4","Parentheses","addMethod$3","Possessives","pairs","hasOpen","addMethod$2","Quotations","want","verb","toInfinitive_1","findNoun","vb","auxiliary","isPlural_1","toNegative","_inf","_inf2","toNegative_1","getSubject","behind","lastNoun","getSubject_1","parseVerb","adverb","particle","subject","adverbAfter","toBe","isI","isNegative","toBe_1","doModal","doModal_1","og","past","_infinitive","infinitive","space","conjugate_1","useParticiple$1","useParticiple","toParticiple","participle","_toParticiple","makeNeutral","methods$1","advb","toPastTense","toPresentTense","_this6","toFutureTense","_this7","_this8","toGerund","_this9","_this10","noAux","isPositive","isImperative","_this11","toPositive","addMethod$1","Verbs","negate","gerund","People","subclass","extend","addFn","Subset","methods","selections","aliases","untag","and","onlyIf","Doc_1","smallTagger","tiny","worldInstance","nlp","parseMatch","version","load","plugin","src","fromTemplate","tmpl","template","description","preProcess","findPivot","byClause","safeCuts","isIndependent","hardCuts","second","pop","lastTry","isGood","doSentence","pivot","safeCut","hardCut","like","dislike","require$$0","hasYear","fromCategory","cats","categories","cat","aWords","bWords","changeCat","byCategory","chooseCat","change","category","seemsGood","models","summary","fromSentence","copula"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-summary.js","sources":["../node_modules/compromise/builds/compromise.mjs","../src/template/index.js","../src/sentence/00-preProcess.js","../src/sentence/01-pivot.js","../src/sentence/02-byClause.js","../src/sentence/03-safeCuts.js","../src/sentence/04-hardCuts.js","../src/sentence/05-lastTry.js","../src/sentence/_isGood.js","../src/sentence/index.js","../src/category/regs.js","../src/category/01-choose.js","../src/category/02-change.js","../src/category/index.js","../src/index.js"],"sourcesContent":["/* compromise 13.10.5 MIT */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\n//this is a not-well-thought-out way to reduce our dependence on `object===object` stuff\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term\n\nfunction makeId(str) {\n str = str || '_';\n var text = str + '-';\n\n for (var i = 0; i < 7; i++) {\n text += chars[Math.floor(Math.random() * chars.length)];\n }\n\n return text;\n}\n\nvar _id = makeId;\n\n//a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii.\n//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n//http://en.wikipedia.org/wiki/List_of_Unicode_characters\n//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\nvar compact = {\n '!': '¡',\n '?': '¿Ɂ',\n '\"': '“”\"❝❞',\n \"'\": '‘‛❛❜',\n '-': '—–',\n a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ',\n b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ',\n d: 'ÐĎďĐđƉƊȡƋƌǷ',\n e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ',\n f: 'ƑƒϜϝӺӻҒғſ',\n g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n I: 'ÌÍÎÏ',\n i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії',\n j: 'ĴĵǰȷɈɉϳЈј',\n k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n m: 'ΜϺϻМмӍӎ',\n n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ',\n p: 'ƤƿΡρϷϸϼРрҎҏÞ',\n q: 'Ɋɋ',\n r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ',\n v: 'νѴѵѶѷ',\n w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ'\n}; //decompress data into two hashes\n\nvar unicode = {};\nObject.keys(compact).forEach(function (k) {\n compact[k].split('').forEach(function (s) {\n unicode[s] = k;\n });\n});\n\nvar killUnicode = function killUnicode(str) {\n var chars = str.split('');\n chars.forEach(function (s, i) {\n if (unicode[s]) {\n chars[i] = unicode[s];\n }\n });\n return chars.join('');\n};\n\nvar unicode_1 = killUnicode; // console.log(killUnicode('bjŏȒk—Ɏó'));\n\nvar periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/;\nvar oneLetterAcronym$1 = /^[A-Z]\\.,?$/;\nvar noPeriodAcronym = /[A-Z]{2,}('s|,)?$/;\nvar lowerCaseAcronym = /([a-z]\\.)+[a-z]\\.?$/;\n\nvar isAcronym$2 = function isAcronym(str) {\n //like N.D.A\n if (periodAcronym.test(str) === true) {\n return true;\n } //like c.e.o\n\n\n if (lowerCaseAcronym.test(str) === true) {\n return true;\n } //like 'F.'\n\n\n if (oneLetterAcronym$1.test(str) === true) {\n return true;\n } //like NDA\n\n\n if (noPeriodAcronym.test(str) === true) {\n return true;\n }\n\n return false;\n};\n\nvar isAcronym_1$1 = isAcronym$2;\n\nvar hasSlash$1 = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/;\n/** some basic operations on a string to reduce noise */\n\nvar clean = function clean(str) {\n str = str || '';\n str = str.toLowerCase();\n str = str.trim();\n var original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork\n\n str = unicode_1(str); //rough handling of slashes - 'see/saw'\n\n if (hasSlash$1.test(str) === true) {\n str = str.replace(/\\/.*/, '');\n } //#tags, @mentions\n\n\n str = str.replace(/^[#@]/, ''); //punctuation\n\n str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes\n\n str = str.replace(/[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]+/g, \"'\"); // coerce double curly quotes\n\n str = str.replace(/[\\u0022\\u00AB\\u00BB\\u201C\\u201D\\u201E\\u201F\\u2033\\u2034\\u2036\\u2037\\u2E42\\u301D\\u301E\\u301F\\uFF02]+/g, '\"'); //coerce Unicode ellipses\n\n str = str.replace(/\\u2026/g, '...'); //en-dash\n\n str = str.replace(/\\u2013/g, '-'); //lookin'->looking (make it easier for conjugation)\n\n str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment\n\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n str = str.replace('-', '');\n } //compact acronyms\n\n\n if (isAcronym_1$1(str)) {\n str = str.replace(/\\./g, '');\n } //strip leading & trailing grammatical punctuation\n\n\n if (/^[:;]/.test(str) === false) {\n str = str.replace(/\\.{3,}$/g, '');\n str = str.replace(/[\",\\.!:;\\?\\)]+$/g, '');\n str = str.replace(/^['\"\\(]+/g, '');\n } // remove zero-width characters\n\n\n str = str.replace(/[\\u200B-\\u200D\\uFEFF]/g, ''); //do this again..\n\n str = str.trim(); //oh shucks,\n\n if (str === '') {\n str = original;\n } //nice-numbers\n\n\n str = str.replace(/([0-9]),([0-9])/g, '$1$2');\n return str;\n};\n\nvar clean_1 = clean; // console.log(normalize('Dr. V Cooper'));\n\n/** reduced is one step further than clean */\nvar reduced = function reduced(str) {\n // remove apostrophes\n str = str.replace(/['’]s$/, '');\n str = str.replace(/s['’]$/, 's');\n return str;\n};\n\nvar reduce = reduced;\n\n//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n//we have slightly different rules for start/end - like #hashtags.\n\nvar startings = /^[ \\n\\t\\.\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u0027\\u201C\\u201F\\u201B\\u201E\\u2E42\\u201A\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/;\nvar endings = /[ \\n\\t\\.'\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u201D\\u00B4\\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\n\nvar hasSlash = /\\//;\nvar hasApostrophe = /['’]/;\nvar hasAcronym = /^[a-z]\\.([a-z]\\.)+/i;\nvar minusNumber = /^[-+\\.][0-9]/;\nvar shortYear = /^'[0-9]{2}/;\n/** turn given text into a parsed-up object\n * seperate the 'meat' of the word from the whitespace+punctuation\n */\n\nvar parseTerm = function parseTerm(str) {\n var original = str;\n var pre = '';\n var post = '';\n str = str.replace(startings, function (found) {\n pre = found; // support '-40'\n\n if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) {\n pre = '';\n return found;\n } // support years like '97\n\n\n if (pre === \"'\" && shortYear.test(str)) {\n pre = '';\n return found;\n }\n\n return '';\n });\n str = str.replace(endings, function (found) {\n post = found; // keep s-apostrophe - \"flanders'\" or \"chillin'\"\n\n if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) {\n post = post.replace(hasApostrophe, '');\n return \"'\";\n } //keep end-period in acronym\n\n\n if (hasAcronym.test(str) === true) {\n post = post.replace(/\\./, '');\n return '.';\n }\n\n return '';\n }); //we went too far..\n\n if (str === '') {\n // do a very mild parse, and hope for the best.\n original = original.replace(/ *$/, function (after) {\n post = after || '';\n return '';\n });\n str = original;\n pre = '';\n post = post;\n } // create the various forms of our text,\n\n\n var clean = clean_1(str);\n var parsed = {\n text: str,\n clean: clean,\n reduced: reduce(clean),\n pre: pre,\n post: post\n }; // support aliases for slashes\n\n if (hasSlash.test(str)) {\n str.split(hasSlash).forEach(function (word) {\n parsed.alias = parsed.alias || {};\n parsed.alias[word.trim()] = true;\n });\n }\n\n return parsed;\n};\n\nvar parse$2 = parseTerm;\n\nfunction createCommonjsModule(fn) {\n var module = { exports: {} };\n\treturn fn(module, module.exports), module.exports;\n}\n\nvar _01Case = createCommonjsModule(function (module, exports) {\n var titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\n var upperCase = /^[A-Z]+s?$/;\n /** convert all text to uppercase */\n\n exports.toUpperCase = function () {\n this.text = this.text.toUpperCase();\n return this;\n };\n /** convert all text to lowercase */\n\n\n exports.toLowerCase = function () {\n this.text = this.text.toLowerCase();\n return this;\n };\n /** only set the first letter to uppercase\n * leave any existing uppercase alone\n */\n\n\n exports.toTitleCase = function () {\n this.text = this.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, function (x) {\n return x.toUpperCase();\n }); //support unicode?\n\n return this;\n };\n /** if all letters are uppercase */\n\n\n exports.isUpperCase = function () {\n return upperCase.test(this.text);\n };\n /** if the first letter is uppercase, and the rest are lowercase */\n\n\n exports.isTitleCase = function () {\n return titleCase.test(this.text);\n };\n\n exports.titleCase = exports.isTitleCase;\n});\n\nvar _02Punctuation$1 = createCommonjsModule(function (module, exports) {\n // these methods are called with '@hasComma' in the match syntax\n // various unicode quotation-mark formats\n var startQuote = /(\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F)/;\n var endQuote = /(\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E)/;\n /** search the term's 'post' punctuation */\n\n exports.hasPost = function (punct) {\n return this.post.indexOf(punct) !== -1;\n };\n /** search the term's 'pre' punctuation */\n\n\n exports.hasPre = function (punct) {\n return this.pre.indexOf(punct) !== -1;\n };\n /** does it have a quotation symbol? */\n\n\n exports.hasQuote = function () {\n return startQuote.test(this.pre) || endQuote.test(this.post);\n };\n\n exports.hasQuotation = exports.hasQuote;\n /** does it have a comma? */\n\n exports.hasComma = function () {\n return this.hasPost(',');\n };\n /** does it end in a period? */\n\n\n exports.hasPeriod = function () {\n return this.hasPost('.') === true && this.hasPost('...') === false;\n };\n /** does it end in an exclamation */\n\n\n exports.hasExclamation = function () {\n return this.hasPost('!');\n };\n /** does it end with a question mark? */\n\n\n exports.hasQuestionMark = function () {\n return this.hasPost('?') || this.hasPost('¿');\n };\n /** is there a ... at the end? */\n\n\n exports.hasEllipses = function () {\n return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…');\n };\n /** is there a semicolon after this word? */\n\n\n exports.hasSemicolon = function () {\n return this.hasPost(';');\n };\n /** is there a slash '/' in this word? */\n\n\n exports.hasSlash = function () {\n return /\\//.test(this.text);\n };\n /** a hyphen connects two words like-this */\n\n\n exports.hasHyphen = function () {\n var hyphen = /^(-|–|—)$/;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** a dash separates words - like that */\n\n\n exports.hasDash = function () {\n var hyphen = / (-|–|—) /;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** is it multiple words combinded */\n\n\n exports.hasContraction = function () {\n return Boolean(this.implicit);\n };\n /** try to sensibly put this punctuation mark into the term */\n\n\n exports.addPunctuation = function (punct) {\n // dont add doubles\n if (punct === ',' || punct === ';') {\n this.post = this.post.replace(punct, '');\n }\n\n this.post = punct + this.post;\n return this;\n };\n});\n\n// fuzzy-match (damerau-levenshtein)\n// Based on tad-lispy /node-damerau-levenshtein\n// https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js\n// count steps (insertions, deletions, substitutions, or transpositions)\nvar editDistance = function editDistance(strA, strB) {\n var aLength = strA.length,\n bLength = strB.length; // fail-fast\n\n if (aLength === 0) {\n return bLength;\n }\n\n if (bLength === 0) {\n return aLength;\n } // If the limit is not defined it will be calculate from this and that args.\n\n\n var limit = (bLength > aLength ? bLength : aLength) + 1;\n\n if (Math.abs(aLength - bLength) > (limit || 100)) {\n return limit || 100;\n } // init the array\n\n\n var matrix = [];\n\n for (var i = 0; i < limit; i++) {\n matrix[i] = [i];\n matrix[i].length = limit;\n }\n\n for (var _i = 0; _i < limit; _i++) {\n matrix[0][_i] = _i;\n } // Calculate matrix.\n\n\n var j, a_index, b_index, cost, min, t;\n\n for (var _i2 = 1; _i2 <= aLength; ++_i2) {\n a_index = strA[_i2 - 1];\n\n for (j = 1; j <= bLength; ++j) {\n // Check the jagged distance total so far\n if (_i2 === j && matrix[_i2][j] > 4) {\n return aLength;\n }\n\n b_index = strB[j - 1];\n cost = a_index === b_index ? 0 : 1; // Step 5\n // Calculate the minimum (much faster than Math.min(...)).\n\n min = matrix[_i2 - 1][j] + 1; // Deletion.\n\n if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion.\n\n if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution.\n // Update matrix.\n\n var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min;\n\n if (shouldUpdate) {\n matrix[_i2][j] = t;\n } else {\n matrix[_i2][j] = min;\n }\n }\n } // return number of steps\n\n\n return matrix[aLength][bLength];\n}; // score similarity by from 0-1 (steps/length)\n\n\nvar fuzzyMatch = function fuzzyMatch(strA, strB) {\n var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n\n if (strA === strB) {\n return 1;\n } //don't even bother on tiny strings\n\n\n if (strA.length < minLength || strB.length < minLength) {\n return 0;\n }\n\n var steps = editDistance(strA, strB);\n var length = Math.max(strA.length, strB.length);\n var relative = length === 0 ? 0 : steps / length;\n var similarity = 1 - relative;\n return similarity;\n};\n\nvar _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match\n\nvar wrapMatch = function wrapMatch() {};\n/** ignore optional/greedy logic, straight-up term match*/\n\n\nvar doesMatch = function doesMatch(t, reg, index, length) {\n // support id matches\n if (reg.id === t.id) {\n return true;\n } // support '.'\n\n\n if (reg.anything === true) {\n return true;\n } // support '^' (in parentheses)\n\n\n if (reg.start === true && index !== 0) {\n return false;\n } // support '$' (in parentheses)\n\n\n if (reg.end === true && index !== length - 1) {\n return false;\n } //support a text match\n\n\n if (reg.word !== undefined) {\n //match contractions\n if (t.implicit !== null && t.implicit === reg.word) {\n return true;\n } // term aliases for slashes and things\n\n\n if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) {\n return true;\n } // support ~ match\n\n\n if (reg.soft === true && reg.word === t.root) {\n return true;\n } // support fuzzy match param\n\n\n if (reg.fuzzy !== undefined) {\n var score = _fuzzy(reg.word, t.reduced);\n\n if (score > reg.fuzzy) {\n return true;\n } // support fuzzy + soft match\n\n\n if (reg.soft === true) {\n score = _fuzzy(reg.word, t.root);\n\n if (score > reg.fuzzy) {\n return true;\n }\n }\n } //match either .clean or .text\n\n\n return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced;\n } //support #Tag\n\n\n if (reg.tag !== undefined) {\n return t.tags[reg.tag] === true;\n } //support @method\n\n\n if (reg.method !== undefined) {\n if (typeof t[reg.method] === 'function' && t[reg.method]() === true) {\n return true;\n }\n\n return false;\n } //support /reg/\n\n\n if (reg.regex !== undefined) {\n return reg.regex.test(t.clean);\n } // support optimized (one|two)\n\n\n if (reg.fastOr !== undefined) {\n if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) {\n return true;\n }\n\n return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text);\n } //support slower (one|two)\n\n\n if (reg.choices !== undefined) {\n // try to support && operator\n if (reg.operator === 'and') {\n // must match them all\n return reg.choices.every(function (r) {\n return wrapMatch(t, r, index, length);\n });\n } // or must match one\n\n\n return reg.choices.some(function (r) {\n return wrapMatch(t, r, index, length);\n });\n }\n\n return false;\n}; // wrap result for !negative match logic\n\n\nwrapMatch = function wrapMatch(t, reg, index, length) {\n var result = doesMatch(t, reg, index, length);\n\n if (reg.negative === true) {\n return !result;\n }\n\n return result;\n};\n\nvar _doesMatch = wrapMatch;\n\nvar boring = {};\n/** check a match object against this term */\n\nvar doesMatch_1 = function doesMatch_1(reg, index, length) {\n return _doesMatch(this, reg, index, length);\n};\n/** does this term look like an acronym? */\n\n\nvar isAcronym_1 = function isAcronym_1() {\n return isAcronym_1$1(this.text);\n};\n/** is this term implied by a contraction? */\n\n\nvar isImplicit = function isImplicit() {\n return this.text === '' && Boolean(this.implicit);\n};\n/** does the term have at least one good tag? */\n\n\nvar isKnown = function isKnown() {\n return Object.keys(this.tags).some(function (t) {\n return boring[t] !== true;\n });\n};\n/** cache the root property of the term */\n\n\nvar setRoot = function setRoot(world) {\n var transform = world.transforms;\n var str = this.implicit || this.clean;\n\n if (this.tags.Plural) {\n str = transform.toSingular(str, world);\n }\n\n if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) {\n var tense = null;\n\n if (this.tags.PastTense) {\n tense = 'PastTense';\n } else if (this.tags.Gerund) {\n tense = 'Gerund';\n } else if (this.tags.PresentTense) {\n tense = 'PresentTense';\n } else if (this.tags.Participle) {\n tense = 'Participle';\n } else if (this.tags.Actor) {\n tense = 'Actor';\n }\n\n str = transform.toInfinitive(str, world, tense);\n }\n\n this.root = str;\n};\n\nvar _03Misc = {\n doesMatch: doesMatch_1,\n isAcronym: isAcronym_1,\n isImplicit: isImplicit,\n isKnown: isKnown,\n setRoot: setRoot\n};\n\nvar hasSpace$1 = /[\\s-]/;\nvar isUpperCase = /^[A-Z-]+$/; // const titleCase = str => {\n// return str.charAt(0).toUpperCase() + str.substr(1)\n// }\n\n/** return various text formats of this term */\n\nvar textOut = function textOut(options, showPre, showPost) {\n options = options || {};\n var word = this.text;\n var before = this.pre;\n var after = this.post; // -word-\n\n if (options.reduced === true) {\n word = this.reduced || '';\n }\n\n if (options.root === true) {\n word = this.root || '';\n }\n\n if (options.implicit === true && this.implicit) {\n word = this.implicit || '';\n }\n\n if (options.normal === true) {\n word = this.clean || this.text || '';\n }\n\n if (options.root === true) {\n word = this.root || this.reduced || '';\n }\n\n if (options.unicode === true) {\n word = unicode_1(word);\n } // cleanup case\n\n\n if (options.titlecase === true) {\n if (this.tags.ProperNoun && !this.titleCase()) ; else if (this.tags.Acronym) {\n word = word.toUpperCase(); //uppercase acronyms\n } else if (isUpperCase.test(word) && !this.tags.Acronym) {\n // lowercase everything else\n word = word.toLowerCase();\n }\n }\n\n if (options.lowercase === true) {\n word = word.toLowerCase();\n } // remove the '.'s from 'F.B.I.' (safely)\n\n\n if (options.acronyms === true && this.tags.Acronym) {\n word = word.replace(/\\./g, '');\n } // -before/after-\n\n\n if (options.whitespace === true || options.root === true) {\n before = '';\n after = ' ';\n\n if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) {\n after = '';\n }\n }\n\n if (options.punctuation === true && !options.root) {\n //normalized end punctuation\n if (this.hasPost('.') === true) {\n after = '.' + after;\n } else if (this.hasPost('?') === true) {\n after = '?' + after;\n } else if (this.hasPost('!') === true) {\n after = '!' + after;\n } else if (this.hasPost(',') === true) {\n after = ',' + after;\n } else if (this.hasEllipses() === true) {\n after = '...' + after;\n }\n }\n\n if (showPre !== true) {\n before = '';\n }\n\n if (showPost !== true) {\n // let keep = after.match(/\\)/) || ''\n after = ''; //keep //after.replace(/[ .?!,]+/, '')\n } // remove the '.' from 'Mrs.' (safely)\n\n\n if (options.abbreviations === true && this.tags.Abbreviation) {\n after = after.replace(/^\\./, '');\n }\n\n return before + word + after;\n};\n\nvar _04Text = {\n textOut: textOut\n};\n\nvar boringTags = {\n Auxiliary: 1,\n Possessive: 1\n};\n/** a subjective ranking of tags kinda tfidf-based */\n\nvar rankTags = function rankTags(term, world) {\n var tags = Object.keys(term.tags);\n var tagSet = world.tags;\n tags = tags.sort(function (a, b) {\n //bury the tags we dont want\n if (boringTags[b] || !tagSet[b]) {\n return -1;\n } // unknown tags are interesting\n\n\n if (!tagSet[b]) {\n return 1;\n }\n\n if (!tagSet[a]) {\n return 0;\n } // then sort by #of parent tags (most-specific tags first)\n\n\n if (tagSet[a].lineage.length > tagSet[b].lineage.length) {\n return 1;\n }\n\n if (tagSet[a].isA.length > tagSet[b].isA.length) {\n return -1;\n }\n\n return 0;\n });\n return tags;\n};\n\nvar _bestTag = rankTags;\n\nvar jsonDefault = {\n text: true,\n tags: true,\n implicit: true,\n whitespace: true,\n clean: false,\n id: false,\n index: false,\n offset: false,\n bestTag: false\n};\n/** return various metadata for this term */\n\nvar json$1 = function json(options, world) {\n options = options || {};\n options = Object.assign({}, jsonDefault, options);\n var result = {}; // default on\n\n if (options.text) {\n result.text = this.text;\n }\n\n if (options.normal) {\n result.normal = this.clean;\n }\n\n if (options.tags) {\n result.tags = Object.keys(this.tags);\n } // default off\n\n\n if (options.clean) {\n result.clean = this.clean;\n }\n\n if (options.id || options.offset) {\n result.id = this.id;\n }\n\n if (options.implicit && this.implicit !== null) {\n result.implicit = this.implicit;\n }\n\n if (options.whitespace) {\n result.pre = this.pre;\n result.post = this.post;\n }\n\n if (options.bestTag) {\n result.bestTag = _bestTag(this, world)[0];\n }\n\n return result;\n};\n\nvar _05Json$1 = {\n json: json$1\n};\n\nvar methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1);\n\nfunction isClientSide() {\n return typeof window !== 'undefined' && window.document;\n}\n/** add spaces at the end */\n\n\nvar padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n};\n/** output for verbose-mode */\n\n\nvar logTag = function logTag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 15) + '\\x1b[0m + \\x1b[32m' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason + '';\n }\n\n console.log(log);\n};\n/** output for verbose mode */\n\n\nvar logUntag = function logUntag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 3) + ' \\x1b[31m - #' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason;\n }\n\n console.log(log);\n};\n\nvar isArray$3 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n\nvar titleCase$4 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar fns$1 = {\n logTag: logTag,\n logUntag: logUntag,\n isArray: isArray$3,\n titleCase: titleCase$4\n};\n\n/** add a tag, and its descendents, to a term */\n\nvar addTag = function addTag(t, tag, reason, world) {\n var tagset = world.tags; //support '.' or '-' notation for skipping the tag\n\n if (tag === '' || tag === '.' || tag === '-') {\n return;\n }\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n }\n\n tag = fns$1.titleCase(tag); //if we already got this one\n\n if (t.tags[tag] === true) {\n return;\n } // log it?\n\n\n var isVerbose = world.isVerbose();\n\n if (isVerbose === true) {\n fns$1.logTag(t, tag, reason);\n } //add tag\n\n\n t.tags[tag] = true; //whee!\n //check tagset for any additional things to do...\n\n if (tagset.hasOwnProperty(tag) === true) {\n //add parent Tags\n tagset[tag].isA.forEach(function (down) {\n t.tags[down] = true;\n\n if (isVerbose === true) {\n fns$1.logTag(t, '→ ' + down);\n }\n }); //remove any contrary tags\n\n t.unTag(tagset[tag].notA, '←', world);\n }\n};\n/** support an array of tags */\n\n\nvar addTags = function addTags(term, tags, reason, world) {\n if (typeof tags !== 'string') {\n for (var i = 0; i < tags.length; i++) {\n addTag(term, tags[i], reason, world);\n } // tags.forEach(tag => addTag(term, tag, reason, world))\n\n } else {\n addTag(term, tags, reason, world);\n }\n};\n\nvar add = addTags;\n\nvar lowerCase = /^[a-z]/;\n\nvar titleCase$3 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** remove this tag, and its descentents from the term */\n\n\nvar unTag$1 = function unTag(t, tag, reason, world) {\n var isVerbose = world.isVerbose(); //support '*' for removing all tags\n\n if (tag === '*') {\n t.tags = {};\n return t;\n }\n\n tag = tag.replace(/^#/, '');\n\n if (lowerCase.test(tag) === true) {\n tag = titleCase$3(tag);\n } // remove the tag\n\n\n if (t.tags[tag] === true) {\n delete t.tags[tag]; //log in verbose-mode\n\n if (isVerbose === true) {\n fns$1.logUntag(t, tag, reason);\n }\n } //delete downstream tags too\n\n\n var tagset = world.tags;\n\n if (tagset[tag]) {\n var lineage = tagset[tag].lineage;\n\n for (var i = 0; i < lineage.length; i++) {\n if (t.tags[lineage[i]] === true) {\n delete t.tags[lineage[i]];\n\n if (isVerbose === true) {\n fns$1.logUntag(t, ' - ' + lineage[i]);\n }\n }\n }\n }\n\n return t;\n}; //handle an array of tags\n\n\nvar untagAll = function untagAll(term, tags, reason, world) {\n if (typeof tags !== 'string' && tags) {\n for (var i = 0; i < tags.length; i++) {\n unTag$1(term, tags[i], reason, world);\n }\n\n return;\n }\n\n unTag$1(term, tags, reason, world);\n};\n\nvar unTag_1$1 = untagAll;\n\nvar canBe$2 = function canBe(term, tag, world) {\n var tagset = world.tags; // cleanup tag\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n } //fail-fast\n\n\n if (tagset[tag] === undefined) {\n return true;\n } //loop through tag's contradictory tags\n\n\n var enemies = tagset[tag].notA || [];\n\n for (var i = 0; i < enemies.length; i++) {\n if (term.tags[enemies[i]] === true) {\n return false;\n }\n }\n\n if (tagset[tag].isA !== undefined) {\n return canBe(term, tagset[tag].isA, world); //recursive\n }\n\n return true;\n};\n\nvar canBe_1$1 = canBe$2;\n\n/** add a tag or tags, and their descendents to this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\nvar tag_1 = function tag_1(tags, reason, world) {\n add(this, tags, reason, world);\n return this;\n};\n/** only tag this term if it's consistent with it's current tags */\n\n\nvar tagSafe$1 = function tagSafe(tags, reason, world) {\n if (canBe_1$1(this, tags, world)) {\n add(this, tags, reason, world);\n }\n\n return this;\n};\n/** remove a tag or tags, and their descendents from this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\n\nvar unTag_1 = function unTag_1(tags, reason, world) {\n unTag_1$1(this, tags, reason, world);\n return this;\n};\n/** is this tag consistent with the word's current tags?\n * @param {string | string[]} tags - a tag or tags\n * @returns {boolean}\n */\n\n\nvar canBe_1 = function canBe_1(tags, world) {\n return canBe_1$1(this, tags, world);\n};\n\nvar tag$1 = {\n tag: tag_1,\n tagSafe: tagSafe$1,\n unTag: unTag_1,\n canBe: canBe_1\n};\n\nvar Term = /*#__PURE__*/function () {\n function Term() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n _classCallCheck(this, Term);\n\n text = String(text);\n var obj = parse$2(text); // the various forms of our text\n\n this.text = obj.text || '';\n this.clean = obj.clean;\n this.reduced = obj.reduced;\n this.root = null;\n this.implicit = null;\n this.pre = obj.pre || '';\n this.post = obj.post || '';\n this.tags = {};\n this.prev = null;\n this.next = null;\n this.id = _id(obj.clean);\n this.isA = 'Term'; // easier than .constructor...\n // support alternative matches\n\n if (obj.alias) {\n this.alias = obj.alias;\n }\n }\n /** set the text of the Term to something else*/\n\n\n _createClass(Term, [{\n key: \"set\",\n value: function set(str) {\n var obj = parse$2(str);\n this.text = obj.text;\n this.clean = obj.clean;\n return this;\n }\n }]);\n\n return Term;\n}();\n/** create a deep-copy of this term */\n\n\nTerm.prototype.clone = function () {\n var term = new Term(this.text);\n term.pre = this.pre;\n term.post = this.post;\n term.clean = this.clean;\n term.reduced = this.reduced;\n term.root = this.root;\n term.implicit = this.implicit;\n term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc)\n // term.id = this.id\n\n return term;\n};\n\nObject.assign(Term.prototype, methods$8);\nObject.assign(Term.prototype, tag$1);\nvar Term_1 = Term;\n\n/** return a flat array of Term objects */\nvar terms = function terms(n) {\n if (this.length === 0) {\n return [];\n } // use cache, if it exists\n\n\n if (this.cache.terms) {\n if (n !== undefined) {\n return this.cache.terms[n];\n }\n\n return this.cache.terms;\n }\n\n var terms = [this.pool.get(this.start)];\n\n for (var i = 0; i < this.length - 1; i += 1) {\n var id = terms[terms.length - 1].next;\n\n if (id === null) {\n // throw new Error('linked-list broken')\n console.error(\"Compromise error: Linked list broken in phrase '\" + this.start + \"'\");\n break;\n }\n\n var term = this.pool.get(id);\n terms.push(term); //return this one?\n\n if (n !== undefined && n === i) {\n return terms[n];\n }\n }\n\n if (n === undefined) {\n this.cache.terms = terms;\n }\n\n if (n !== undefined) {\n return terms[n];\n }\n\n return terms;\n};\n/** return a shallow or deep copy of this phrase */\n\n\nvar clone$1 = function clone(isShallow) {\n var _this = this;\n\n if (isShallow) {\n var p = this.buildFrom(this.start, this.length);\n p.cache = this.cache;\n return p;\n } //how do we clone part of the pool?\n\n\n var terms = this.terms();\n var newTerms = terms.map(function (t) {\n return t.clone();\n }); // console.log(newTerms)\n //connect these new ids up\n\n newTerms.forEach(function (t, i) {\n //add it to the pool..\n _this.pool.add(t);\n\n if (newTerms[i + 1]) {\n t.next = newTerms[i + 1].id;\n }\n\n if (newTerms[i - 1]) {\n t.prev = newTerms[i - 1].id;\n }\n });\n return this.buildFrom(newTerms[0].id, newTerms.length);\n};\n/** return last term object */\n\n\nvar lastTerm = function lastTerm() {\n var terms = this.terms();\n return terms[terms.length - 1];\n};\n/** quick lookup for a term id */\n\n\nvar hasId = function hasId(wantId) {\n if (this.length === 0 || !wantId) {\n return false;\n }\n\n if (this.start === wantId) {\n return true;\n } // use cache, if available\n\n\n if (this.cache.terms) {\n var _terms = this.cache.terms;\n\n for (var i = 0; i < _terms.length; i++) {\n if (_terms[i].id === wantId) {\n return true;\n }\n }\n\n return false;\n } // otherwise, go through each term\n\n\n var lastId = this.start;\n\n for (var _i = 0; _i < this.length - 1; _i += 1) {\n var term = this.pool.get(lastId);\n\n if (term === undefined) {\n console.error(\"Compromise error: Linked list broken. Missing term '\".concat(lastId, \"' in phrase '\").concat(this.start, \"'\\n\")); // throw new Error('linked List error')\n\n return false;\n }\n\n if (term.next === wantId) {\n return true;\n }\n\n lastId = term.next;\n }\n\n return false;\n};\n/** how many seperate, non-empty words is it? */\n\n\nvar wordCount = function wordCount() {\n return this.terms().filter(function (t) {\n return t.text !== '';\n }).length;\n};\n/** get the full-sentence this phrase belongs to */\n\n\nvar fullSentence = function fullSentence() {\n var t = this.terms(0); //find first term in sentence\n\n while (t.prev) {\n t = this.pool.get(t.prev);\n }\n\n var start = t.id;\n var len = 1; //go to end of sentence\n\n while (t.next) {\n t = this.pool.get(t.next);\n len += 1;\n }\n\n return this.buildFrom(start, len);\n};\n\nvar _01Utils$1 = {\n terms: terms,\n clone: clone$1,\n lastTerm: lastTerm,\n hasId: hasId,\n wordCount: wordCount,\n fullSentence: fullSentence\n};\n\nvar trimEnd = function trimEnd(str) {\n return str.replace(/ +$/, '');\n};\n/** produce output in the given format */\n\n\nvar text$1 = function text() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var isFirst = arguments.length > 1 ? arguments[1] : undefined;\n var isLast = arguments.length > 2 ? arguments[2] : undefined;\n\n if (typeof options === 'string') {\n if (options === 'normal') {\n options = {\n whitespace: true,\n unicode: true,\n lowercase: true,\n punctuation: true,\n acronyms: true,\n abbreviations: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'clean') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'reduced') {\n options = {\n punctuation: false,\n //Hmm: is this reversed?\n titlecase: false,\n lowercase: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: true\n };\n } else if (options === 'implicit') {\n options = {\n punctuation: true,\n implicit: true,\n whitespace: true,\n trim: true\n };\n } else if (options === 'root') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n root: true\n };\n } else {\n options = {};\n }\n }\n\n var terms = this.terms(); //this this phrase a complete sentence?\n\n var isFull = false;\n\n if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) {\n isFull = true;\n }\n\n var text = terms.reduce(function (str, t, i) {\n // don't output intro space for a contraction-match i'm good => \"[am] good\"\n if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) {\n return str;\n }\n\n options.last = isLast && i === terms.length - 1;\n var showPre = true;\n var showPost = true;\n\n if (isFull === false) {\n // dont show beginning whitespace\n if (i === 0 && isFirst) {\n showPre = false;\n } // dont show end-whitespace\n\n\n if (i === terms.length - 1 && isLast) {\n showPost = false;\n }\n }\n\n var txt = t.textOut(options, showPre, showPost); // console.log(terms)\n // if (options.titlecase && i === 0) {\n // txt = titleCase(txt)\n // }\n\n return str + txt;\n }, ''); //full-phrases show punctuation, but not whitespace\n\n if (isFull === true && isLast) {\n text = trimEnd(text);\n }\n\n if (options.trim === true) {\n text = text.trim();\n }\n\n return text;\n};\n\nvar _02Text = {\n text: text$1\n};\n\n/** remove start and end whitespace */\nvar trim = function trim() {\n var terms = this.terms();\n\n if (terms.length > 0) {\n //trim starting\n terms[0].pre = terms[0].pre.replace(/^\\s+/, ''); //trim ending\n\n var lastTerm = terms[terms.length - 1];\n lastTerm.post = lastTerm.post.replace(/\\s+$/, '');\n }\n\n return this;\n};\n\nvar _03Change = {\n trim: trim\n};\n\nvar endOfSentence = /[.?!]\\s*$/; // replacing a 'word.' with a 'word!'\n\nvar combinePost = function combinePost(before, after) {\n //only transfer the whitespace\n if (endOfSentence.test(after)) {\n var whitespace = before.match(/\\s*$/);\n return after + whitespace;\n }\n\n return before;\n}; //add whitespace to the start of the second bit\n\n\nvar addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) {\n // add any existing pre-whitespace to beginning\n newTerms[0].pre = beforeTerms[0].pre;\n var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms\n\n var newTerm = newTerms[newTerms.length - 1];\n newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation\n\n lastTerm.post = ''; //before ←[space] - after\n\n if (lastTerm.post === '') {\n lastTerm.post += ' ';\n }\n}; //insert this segment into the linked-list\n\n\nvar stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) {\n var lastBefore = beforeTerms[beforeTerms.length - 1];\n var lastNew = newTerms[newTerms.length - 1];\n var afterId = lastBefore.next; //connect ours in (main → newPhrase)\n\n lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after)\n\n lastNew.next = afterId; //do it backwards, too\n\n if (afterId) {\n // newPhrase ← after\n var afterTerm = pool.get(afterId);\n afterTerm.prev = lastNew.id;\n } // before ← newPhrase\n\n\n var beforeId = beforeTerms[0].id;\n\n if (beforeId) {\n var newTerm = newTerms[0];\n newTerm.prev = beforeId;\n }\n}; // avoid stretching a phrase twice.\n\n\nvar unique$5 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another.\n\n\nvar appendPhrase = function appendPhrase(before, newPhrase, doc) {\n var beforeTerms = before.terms();\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list\n\n stitchIn$1(beforeTerms, newTerms, before.pool); // stretch!\n // make each effected phrase longer\n\n var toStretch = [before];\n var hasId = before.start;\n var docs = [doc];\n docs = docs.concat(doc.parents()); // find them all!\n\n docs.forEach(function (parent) {\n // only the phrases that should change\n var shouldChange = parent.list.filter(function (p) {\n return p.hasId(hasId);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count a phrase\n\n toStretch = unique$5(toStretch);\n toStretch.forEach(function (p) {\n p.length += newPhrase.length;\n });\n before.cache = {};\n return before;\n};\n\nvar append = appendPhrase;\n\nvar hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one\n// '[new] [◻old]' -or- '[old] [◻new] [old]'\n\nvar addWhitespace = function addWhitespace(newTerms) {\n //add a space before our new text?\n // add a space after our text\n var lastTerm = newTerms[newTerms.length - 1];\n\n if (hasSpace.test(lastTerm.post) === false) {\n lastTerm.post += ' ';\n }\n\n return;\n}; //insert this segment into the linked-list\n\n\nvar stitchIn = function stitchIn(main, newPhrase, newTerms) {\n // [newPhrase] → [main]\n var lastTerm = newTerms[newTerms.length - 1];\n lastTerm.next = main.start; // [before] → [main]\n\n var pool = main.pool;\n var start = pool.get(main.start);\n\n if (start.prev) {\n var before = pool.get(start.prev);\n before.next = newPhrase.start;\n } //do it backwards, too\n // before ← newPhrase\n\n\n newTerms[0].prev = main.terms(0).prev; // newPhrase ← main\n\n main.terms(0).prev = lastTerm.id;\n};\n\nvar unique$4 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another\n\n\nvar joinPhrase = function joinPhrase(original, newPhrase, doc) {\n var starterId = original.start;\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace(newTerms); //insert this segment into the linked-list\n\n stitchIn(original, newPhrase, newTerms); //increase the length of our phrases\n\n var toStretch = [original];\n var docs = [doc];\n docs = docs.concat(doc.parents());\n docs.forEach(function (d) {\n // only the phrases that should change\n var shouldChange = d.list.filter(function (p) {\n return p.hasId(starterId) || p.hasId(newPhrase.start);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count\n\n toStretch = unique$4(toStretch); // stretch these phrases\n\n toStretch.forEach(function (p) {\n p.length += newPhrase.length; // change the start too, if necessary\n\n if (p.start === starterId) {\n p.start = newPhrase.start;\n }\n\n p.cache = {};\n });\n return original;\n};\n\nvar prepend = joinPhrase;\n\n//recursively decrease the length of all the parent phrases\nvar shrinkAll = function shrinkAll(doc, id, deleteLength, after) {\n var arr = doc.parents();\n arr.push(doc);\n arr.forEach(function (d) {\n //find our phrase to shrink\n var phrase = d.list.find(function (p) {\n return p.hasId(id);\n });\n\n if (!phrase) {\n return;\n }\n\n phrase.length -= deleteLength; // does it start with this soon-removed word?\n\n if (phrase.start === id) {\n phrase.start = after.id;\n }\n\n phrase.cache = {};\n }); // cleanup empty phrase objects\n\n doc.list = doc.list.filter(function (p) {\n if (!p.start || !p.length) {\n return false;\n }\n\n return true;\n });\n};\n/** wrap the linked-list around these terms\n * so they don't appear any more\n */\n\n\nvar deletePhrase = function deletePhrase(phrase, doc) {\n var pool = doc.pool();\n var terms = phrase.terms(); //grab both sides of the chain,\n\n var prev = pool.get(terms[0].prev) || {};\n var after = pool.get(terms[terms.length - 1].next) || {};\n\n if (terms[0].implicit && prev.implicit) {\n prev.set(prev.implicit);\n prev.post += ' ';\n } // //first, change phrase lengths\n\n\n shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after]\n\n if (prev) {\n prev.next = after.id;\n } // connect [prev]<-[after]\n\n\n if (after) {\n after.prev = prev.id;\n } // lastly, actually delete the terms from the pool?\n // for (let i = 0; i < terms.length; i++) {\n // pool.remove(terms[i].id)\n // }\n\n};\n\nvar _delete$1 = deletePhrase;\n\n/** put this text at the end */\n\nvar append_1 = function append_1(newPhrase, doc) {\n append(this, newPhrase, doc);\n return this;\n};\n/** add this text to the beginning */\n\n\nvar prepend_1 = function prepend_1(newPhrase, doc) {\n prepend(this, newPhrase, doc);\n return this;\n};\n\nvar _delete = function _delete(doc) {\n _delete$1(this, doc);\n return this;\n}; // stich-in newPhrase, stretch 'doc' + parents\n\n\nvar replace$1 = function replace(newPhrase, doc) {\n //add it do the end\n var firstLength = this.length;\n append(this, newPhrase, doc); //delete original terms\n\n var tmp = this.buildFrom(this.start, this.length);\n tmp.length = firstLength;\n _delete$1(tmp, doc);\n};\n/**\n * Turn this phrase object into 3 phrase objects\n */\n\n\nvar splitOn = function splitOn(p) {\n var terms = this.terms();\n var result = {\n before: null,\n match: null,\n after: null\n };\n var index = terms.findIndex(function (t) {\n return t.id === p.start;\n });\n\n if (index === -1) {\n return result;\n } //make all three sections into phrase-objects\n\n\n var start = terms.slice(0, index);\n\n if (start.length > 0) {\n result.before = this.buildFrom(start[0].id, start.length);\n }\n\n var match = terms.slice(index, index + p.length);\n\n if (match.length > 0) {\n result.match = this.buildFrom(match[0].id, match.length);\n }\n\n var end = terms.slice(index + p.length, terms.length);\n\n if (end.length > 0) {\n result.after = this.buildFrom(end[0].id, end.length, this.pool);\n }\n\n return result;\n};\n\nvar _04Insert = {\n append: append_1,\n prepend: prepend_1,\n \"delete\": _delete,\n replace: replace$1,\n splitOn: splitOn\n};\n\n/** return json metadata for this phrase */\nvar json = function json() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var res = {}; // text data\n\n if (options.text) {\n res.text = this.text();\n }\n\n if (options.normal) {\n res.normal = this.text('normal');\n }\n\n if (options.clean) {\n res.clean = this.text('clean');\n }\n\n if (options.reduced) {\n res.reduced = this.text('reduced');\n }\n\n if (options.implicit) {\n res.implicit = this.text('implicit');\n }\n\n if (options.root) {\n res.root = this.text('root');\n }\n\n if (options.trim) {\n if (res.text) {\n res.text = res.text.trim();\n }\n\n if (res.normal) {\n res.normal = res.normal.trim();\n }\n\n if (res.reduced) {\n res.reduced = res.reduced.trim();\n }\n } // terms data\n\n\n if (options.terms) {\n if (options.terms === true) {\n options.terms = {};\n }\n\n res.terms = this.terms().map(function (t) {\n return t.json(options.terms, world);\n });\n }\n\n return res;\n};\n\nvar _05Json = {\n json: json\n};\n\n/** match any terms after this phrase */\nvar lookAhead = function lookAhead(regs) {\n // if empty match string, return everything after\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getAfter = function getAfter(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getAfter(term.next); //recursion\n }\n };\n\n var all = this.terms();\n var lastTerm = all[all.length - 1];\n getAfter(lastTerm.next);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[0].id, terms.length);\n return p.match(regs);\n};\n/** match any terms before this phrase */\n\n\nvar lookBehind = function lookBehind(regs) {\n // if empty match string, return everything before\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getBefore = function getBefore(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getBefore(term.prev); //recursion\n }\n };\n\n var term = pool.get(this.start);\n getBefore(term.prev);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[terms.length - 1].id, terms.length);\n return p.match(regs);\n};\n\nvar _06Lookahead = {\n lookAhead: lookAhead,\n lookBehind: lookBehind\n};\n\nvar methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead);\n\n// try to avoid doing the match\nvar failFast$1 = function failFast(p, regs) {\n if (regs.length === 0) {\n return true;\n }\n\n for (var i = 0; i < regs.length; i += 1) {\n var reg = regs[i]; //logical quick-ones\n\n if (reg.optional !== true && reg.negative !== true) {\n //start/end impossibilites\n if (reg.start === true && i > 0) {\n return true;\n }\n } //this is not possible\n\n\n if (reg.anything === true && reg.negative === true) {\n return true;\n }\n }\n\n return false;\n};\n\nvar _02FailFast = failFast$1;\n\nvar _matchLogic = createCommonjsModule(function (module, exports) {\n //found a match? it's greedy? keep going!\n exports.getGreedy = function (state, endReg) {\n // for greedy checking, we no longer care about the reg.start\n // value, and leaving it can cause failures for anchored greedy\n // matches. ditto for end-greedy matches: we need an earlier non-\n // ending match to succceed until we get to the actual end.\n var reg = Object.assign({}, state.regs[state.r], {\n start: false,\n end: false\n });\n var start = state.t;\n\n for (; state.t < state.terms.length; state.t += 1) {\n //stop for next-reg match\n if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) {\n return state.t;\n }\n\n var count = state.t - start + 1; // is it max-length now?\n\n if (reg.max !== undefined && count === reg.max) {\n return state.t;\n } //stop here\n\n\n if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null;\n }\n\n return state.t;\n }\n }\n\n return state.t;\n }; //'unspecific greedy' is a weird situation.\n\n\n exports.greedyTo = function (state, nextReg) {\n var t = state.t; //if there's no next one, just go off the end!\n\n if (!nextReg) {\n return state.terms.length;\n } //otherwise, we're looking for the next one\n\n\n for (; t < state.terms.length; t += 1) {\n if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) {\n return t;\n }\n } //guess it doesn't exist, then.\n\n\n return null;\n }; //we have a special case where an end-anchored greedy match may need to\n //start matching before the actual end; we do this by (temporarily!)\n //removing the \"end\" property from the matching token... since this is\n //very situation-specific, we *only* do this when we really need to.\n\n\n exports.isEndGreedy = function (reg, state) {\n if (reg.end === true && reg.greedy === true) {\n if (state.start_i + state.t < state.phrase_length - 1) {\n var tmpReg = Object.assign({}, reg, {\n end: false\n });\n\n if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) {\n return true;\n }\n }\n }\n\n return false;\n }; // match complex OR cases like (a|b|foo bar)\n\n\n exports.doOrBlock = function (state) {\n var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var block = state.regs[state.r];\n var wasFound = false; // do each multiword sequence\n\n for (var c = 0; c < block.choices.length; c += 1) {\n // try to match this list of tokens\n var regs = block.choices[c];\n wasFound = regs.every(function (cr, w_index) {\n var extra = 0;\n var t = state.t + w_index + skipN + extra;\n\n if (state.terms[t] === undefined) {\n return false;\n }\n\n var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)'\n\n if (foundBlock === true && cr.greedy === true) {\n for (var i = 1; i < state.terms.length; i += 1) {\n var term = state.terms[t + i];\n\n if (term) {\n var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length);\n\n if (keepGoing === true) {\n extra += 1;\n } else {\n break;\n }\n }\n }\n }\n\n skipN += extra;\n return foundBlock;\n });\n\n if (wasFound) {\n skipN += regs.length;\n break;\n }\n } // we found a match - is it greedy though?\n\n\n if (wasFound && block.greedy === true) {\n return exports.doOrBlock(state, skipN); // try it again!\n }\n\n return skipN;\n }; // match AND cases like (#Noun && foo)\n\n\n exports.doAndBlock = function (state) {\n var longest = 0; // all blocks must match, and we return the greediest match\n\n var reg = state.regs[state.r];\n var allDidMatch = reg.choices.every(function (block) {\n // for multi-word blocks, all must match\n var allWords = block.every(function (cr, w_index) {\n var tryTerm = state.t + w_index;\n\n if (state.terms[tryTerm] === undefined) {\n return false;\n }\n\n return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length);\n });\n\n if (allWords === true && block.length > longest) {\n longest = block.length;\n }\n\n return allWords;\n });\n\n if (allDidMatch === true) {\n return longest;\n }\n\n return false;\n }; // get or create named group\n\n\n exports.getGroup = function (state, term_index, name) {\n if (state.groups[state.groupId]) {\n return state.groups[state.groupId];\n }\n\n var termId = state.terms[term_index].id;\n state.groups[state.groupId] = {\n group: String(name),\n start: termId,\n length: 0\n };\n return state.groups[state.groupId];\n };\n});\n\n/** tries to match a sequence of terms, starting from here */\n\nvar tryHere = function tryHere(terms, regs, start_i, phrase_length) {\n // all the variables that matter\n var state = {\n t: 0,\n //the term index we're on\n terms: terms,\n //the working slice of term objects\n r: 0,\n // the reg index we're on\n regs: regs,\n //our match conditions\n groups: {},\n //all named-group matches\n start_i: start_i,\n // term index we're starting from\n phrase_length: phrase_length,\n // # of terms in the sentence\n hasGroup: false,\n groupId: null,\n previousGroup: null\n }; // we must satisfy each rule in 'regs'\n\n for (; state.r < regs.length; state.r += 1) {\n var reg = regs[state.r]; // Check if this reg has a named capture group\n\n state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same\n\n if (state.hasGroup === true) {\n var prev = regs[state.r - 1];\n\n if (prev && prev.named === reg.named && state.previousGroup) {\n state.groupId = state.previousGroup;\n } else {\n state.groupId = _id(reg.named);\n state.previousGroup = state.groupId;\n }\n } //have we run-out of terms?\n\n\n if (!state.terms[state.t]) {\n //are all remaining regs optional or negative?\n var haveNeeds = regs.slice(state.r).some(function (remain) {\n return !remain.optional;\n });\n\n if (haveNeeds === false) {\n break; //done!\n }\n\n return null; // die\n } //support 'unspecific greedy' .* properly\n\n\n if (reg.anything === true && reg.greedy === true) {\n var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough\n\n if (reg.min !== undefined && skipto - state.t < reg.min) {\n return null;\n } // reduce it back, if it's too long\n\n\n if (reg.max !== undefined && skipto - state.t > reg.max) {\n state.t = state.t + reg.max;\n continue;\n }\n\n if (skipto === null) {\n return null; //couldn't find it\n } // is it really this easy?....\n\n\n if (state.hasGroup === true) {\n var g = _matchLogic.getGroup(state, state.t, reg.named);\n g.length = skipto - state.t;\n }\n\n state.t = skipto;\n continue;\n } // support multi-word OR (a|b|foo bar)\n\n\n if (reg.choices !== undefined && reg.operator === 'or') {\n var skipNum = _matchLogic.doOrBlock(state);\n\n if (skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g.length += skipNum;\n }\n\n state.t += skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // support AND (#Noun && foo) blocks\n\n\n if (reg.choices !== undefined && reg.operator === 'and') {\n var _skipNum = _matchLogic.doAndBlock(state);\n\n if (_skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g2 = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g2.length += _skipNum;\n }\n\n state.t += _skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // ok, finally test the term/reg\n\n\n var term = state.terms[state.t];\n var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length);\n\n if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) {\n var startAt = state.t; // if it's a negative optional match... :0\n\n if (reg.optional && regs[state.r + 1] && reg.negative) {\n continue;\n } // okay, it was a match, but if it's optional too,\n // we should check the next reg too, to skip it?\n\n\n if (reg.optional && regs[state.r + 1]) {\n // does the next reg match it too?\n var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length);\n\n if (reg.negative || nextRegMatched) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n var nextTerm = state.terms[state.t + 1];\n\n if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) {\n state.r += 1;\n }\n }\n } //advance to the next term!\n\n\n state.t += 1; //check any ending '$' flags\n\n if (reg.end === true) {\n //if this isn't the last term, refuse the match\n if (state.t !== state.terms.length && reg.greedy !== true) {\n return null; //die\n }\n } //try keep it going!\n\n\n if (reg.greedy === true) {\n state.t = _matchLogic.getGreedy(state, regs[state.r + 1]);\n\n if (state.t === null) {\n return null; //greedy was too short\n }\n\n if (reg.min && reg.min > state.t) {\n return null; //greedy was too short\n } // if this was also an end-anchor match, check to see we really\n // reached the end\n\n\n if (reg.end === true && state.start_i + state.t !== phrase_length) {\n return null; //greedy didn't reach the end\n }\n }\n\n if (state.hasGroup === true) {\n // Get or create capture group\n var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length\n\n\n if (state.t > 1 && reg.greedy) {\n _g3.length += state.t - startAt;\n } else {\n _g3.length++;\n }\n }\n\n continue;\n } // ok, it doesn't match.\n // did it *actually match* a negative?\n\n\n if (reg.negative) {\n var tmpReg = Object.assign({}, reg);\n tmpReg.negative = false; // try removing it\n\n var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length);\n\n if (foundNeg === true) {\n return null; //bye!\n }\n } //bah, who cares, keep going\n\n\n if (reg.optional === true) {\n continue;\n } // should we skip-over an implicit word?\n\n\n if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) {\n // if the last match was implicit too, we're missing a word.\n if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) {\n return null;\n } // does the next one match?\n\n\n if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) {\n state.t += 2;\n continue;\n }\n }\n\n return null; //die\n } //return our result\n\n\n return {\n match: state.terms.slice(0, state.t),\n groups: state.groups\n };\n};\n\nvar _03TryMatch = tryHere;\n\n// final checks on the validity of our results\nvar postProcess$1 = function postProcess(terms, regs, matches) {\n if (!matches || matches.length === 0) {\n return matches;\n } // ensure end reg has the end term\n\n\n var atEnd = regs.some(function (r) {\n return r.end;\n });\n\n if (atEnd) {\n var lastTerm = terms[terms.length - 1];\n matches = matches.filter(function (_ref) {\n var arr = _ref.match;\n return arr.indexOf(lastTerm) !== -1;\n });\n }\n\n return matches;\n};\n\nvar _04PostProcess = postProcess$1;\n\n// supported suffix-flags:\n// suffixes: ? ] + * $ {2,6} ~\n// [\\?\\]\\+\\*\\$~]*\n// prefixes: ! [ ^\n// [\\!\\[\\^]*\n// match 'foo /yes/' and not 'foo/no/bar'\nvar bySlashes = /(?:^|\\s)([\\!\\[\\^]*(?:<[^<]*>)?\\/.*?[^\\\\\\/]\\/[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // match '(yes) but not foo(no)bar'\n\nvar byParentheses = /([\\!\\[\\^]*(?:<[^<]*>)?\\([^\\)]+[^\\\\\\)]\\)[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // okay\n\nvar byWord = / /g;\n\nvar isBlock = function isBlock(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\(/.test(str) && /\\)[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar isReg = function isReg(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\//.test(str) && /\\/[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar cleanUp = function cleanUp(arr) {\n arr = arr.map(function (str) {\n return str.trim();\n });\n arr = arr.filter(function (str) {\n return str;\n });\n return arr;\n};\n\nvar parseBlocks = function parseBlocks(txt) {\n // parse by /regex/ first\n var arr = txt.split(bySlashes);\n var res = []; // parse by (blocks), next\n\n arr.forEach(function (str) {\n if (isReg(str)) {\n res.push(str);\n return;\n }\n\n res = res.concat(str.split(byParentheses));\n });\n res = cleanUp(res); // split by spaces, now\n\n var _final = [];\n res.forEach(function (str) {\n if (isBlock(str)) {\n _final.push(str);\n } else if (isReg(str)) {\n _final.push(str);\n } else {\n _final = _final.concat(str.split(byWord));\n }\n });\n _final = cleanUp(_final);\n return _final;\n};\n\nvar _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses))\n\n/* break-down a match expression into this:\n{\n word:'',\n tag:'',\n regex:'',\n\n start:false,\n end:false,\n negative:false,\n anything:false,\n greedy:false,\n optional:false,\n\n named:'',\n choices:[],\n}\n*/\nvar hasMinMax = /\\{([0-9]+,?[0-9]*)\\}/;\nvar andSign = /&&/;\nvar captureName = new RegExp(/^<\\s*?(\\S+)\\s*?>/);\n\nvar titleCase$2 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar end = function end(str) {\n return str[str.length - 1];\n};\n\nvar start = function start(str) {\n return str[0];\n};\n\nvar stripStart = function stripStart(str) {\n return str.substr(1);\n};\n\nvar stripEnd = function stripEnd(str) {\n return str.substr(0, str.length - 1);\n};\n\nvar stripBoth = function stripBoth(str) {\n str = stripStart(str);\n str = stripEnd(str);\n return str;\n}; //\n\n\nvar parseToken = function parseToken(w) {\n var obj = {}; //collect any flags (do it twice)\n\n for (var i = 0; i < 2; i += 1) {\n //end-flag\n if (end(w) === '$') {\n obj.end = true;\n w = stripEnd(w);\n } //front-flag\n\n\n if (start(w) === '^') {\n obj.start = true;\n w = stripStart(w);\n } //capture group (this one can span multiple-terms)\n\n\n if (start(w) === '[' || end(w) === ']') {\n obj.named = true;\n\n if (start(w) === '[') {\n obj.groupType = end(w) === ']' ? 'single' : 'start';\n } else {\n obj.groupType = 'end';\n }\n\n w = w.replace(/^\\[/, '');\n w = w.replace(/\\]$/, ''); // Use capture group name\n\n if (start(w) === '<') {\n var res = captureName.exec(w);\n\n if (res.length >= 2) {\n obj.named = res[1];\n w = w.replace(res[0], '');\n }\n }\n } //back-flags\n\n\n if (end(w) === '+') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (end(w) === '?') {\n obj.optional = true;\n w = stripEnd(w);\n }\n\n if (start(w) === '!') {\n obj.negative = true; // obj.optional = true\n\n w = stripStart(w);\n } //wrapped-flags\n\n\n if (start(w) === '(' && end(w) === ')') {\n // support (one && two)\n if (andSign.test(w)) {\n obj.choices = w.split(andSign);\n obj.operator = 'and';\n } else {\n obj.choices = w.split('|');\n obj.operator = 'or';\n } //remove '(' and ')'\n\n\n obj.choices[0] = stripStart(obj.choices[0]);\n var last = obj.choices.length - 1;\n obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results\n\n obj.choices = obj.choices.map(function (s) {\n return s.trim();\n });\n obj.choices = obj.choices.filter(function (s) {\n return s;\n }); //recursion alert!\n\n obj.choices = obj.choices.map(function (str) {\n return str.split(/ /g).map(parseToken);\n });\n w = '';\n } //regex\n\n\n if (start(w) === '/' && end(w) === '/') {\n w = stripBoth(w);\n obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp\n\n return obj;\n } //soft-match\n\n\n if (start(w) === '~' && end(w) === '~') {\n w = stripBoth(w);\n obj.soft = true;\n obj.word = w;\n return obj;\n }\n } // support #Tag{1,9}\n\n\n if (hasMinMax.test(w) === true) {\n w = w.replace(hasMinMax, function (a, b) {\n var arr = b.split(/,/g);\n\n if (arr.length === 1) {\n // '{3}'\tExactly three times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[0]);\n } else {\n // '{2,4}' Two to four times\n // '{3,}' Three or more times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[1] || 999);\n } // use same method as '+'\n\n\n obj.greedy = true; // 0 as min means the same as '?'\n\n obj.optional = true;\n return '';\n });\n } //do the actual token content\n\n\n if (start(w) === '#') {\n obj.tag = stripStart(w);\n obj.tag = titleCase$2(obj.tag);\n return obj;\n } //dynamic function on a term object\n\n\n if (start(w) === '@') {\n obj.method = stripStart(w);\n return obj;\n }\n\n if (w === '.') {\n obj.anything = true;\n return obj;\n } //support alone-astrix\n\n\n if (w === '*') {\n obj.anything = true;\n obj.greedy = true;\n obj.optional = true;\n return obj;\n }\n\n if (w) {\n //somehow handle encoded-chars?\n w = w.replace('\\\\*', '*');\n w = w.replace('\\\\.', '.');\n obj.word = w.toLowerCase();\n }\n\n return obj;\n};\n\nvar _02ParseToken = parseToken;\n\n// name any [unnamed] capture-groups with a number\nvar nameGroups = function nameGroups(tokens) {\n var convert = false;\n var index = -1;\n var current; //'fill in' capture groups between start-end\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]; // Give name to un-named single tokens\n\n if (token.groupType === 'single' && token.named === true) {\n index += 1;\n token.named = index;\n continue;\n } // Start converting tokens\n\n\n if (token.groupType === 'start') {\n convert = true;\n\n if (typeof token.named === 'string' || typeof token.named === 'number') {\n current = token.named;\n } else {\n index += 1;\n current = index;\n }\n } // Ensure this token has the right name\n\n\n if (convert) {\n token.named = current;\n } // Stop converting tokens\n\n\n if (token.groupType === 'end') {\n convert = false;\n }\n }\n\n return tokens;\n}; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word\n\n\nvar doFastOrMode = function doFastOrMode(tokens) {\n return tokens.map(function (token) {\n if (token.choices !== undefined) {\n // are they all straight-up words? then optimize them.\n var shouldPack = token.choices.every(function (block) {\n if (block.length !== 1) {\n return false;\n }\n\n var reg = block[0];\n\n if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) {\n return true; //reg is simple-enough\n }\n\n return false;\n });\n\n if (shouldPack === true) {\n var oneOf = {};\n token.choices.forEach(function (block) {\n oneOf[block[0].word] = true;\n });\n token.fastOr = oneOf;\n delete token.choices;\n }\n }\n\n return token;\n });\n}; // allow multiword OR (foo|one two)\n// const doMultiWord = function (tokens) {\n// return tokens.map(token => {\n// if (token.choices !== undefined) {\n// let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false\n// if (isMulti !== false) {\n// token.multiword = true\n// // turn all choices into arrays\n// token.choices = token.choices.map(choice => {\n// if (choice.word) {\n// choice.sequence = choice.word.split(hasASpace)\n// delete choice.word\n// }\n// return choice\n// })\n// }\n// }\n// return token\n// })\n// }\n// const doBlockMode = function (tokens) {\n// return tokens.map(token => {\n// // we've already setup fastOr mode\n// if (token.choices !== undefined) {\n// // console.log(token)\n// }\n// return token\n// })\n// }\n\n\nvar postProcess = function postProcess(tokens) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // ensure all capture groups are filled between start and end\n // give all capture groups names\n var count = tokens.filter(function (t) {\n return t.groupType;\n }).length;\n\n if (count > 0) {\n tokens = nameGroups(tokens);\n } // convert 'choices' format to 'fastOr' format\n\n\n if (!opts.fuzzy) {\n tokens = doFastOrMode(tokens);\n } // support multiword OR (foo bar|baz)\n // tokens = doMultiWord(tokens)\n // support (one two three)\n // tokens = doBlockMode(tokens)\n\n\n return tokens;\n};\n\nvar _03PostProcess = postProcess;\n\nvar isArray$2 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn an array into a 'choices' list\n\n\nvar byArray = function byArray(arr) {\n var blocks = arr.map(function (s) {\n return [{\n word: s\n }];\n });\n return [{\n choices: blocks,\n operator: 'or'\n }];\n}; // turn a Doc object into a reg of ids to lookup\n\n\nvar fromDoc = function fromDoc(doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return [];\n }\n\n var regs = [];\n doc.list.forEach(function (p) {\n var ids = [];\n p.terms().forEach(function (t) {\n ids.push(t.id);\n });\n regs.push(ids);\n });\n return [{\n idBlocks: regs\n }];\n}; // add fuzziness etc to each reg\n\n\nvar addOptions = function addOptions(tokens, opts) {\n // add default fuzzy-search limit\n if (opts.fuzzy === true) {\n opts.fuzzy = 0.85;\n }\n\n if (typeof opts.fuzzy === 'number') {\n tokens = tokens.map(function (reg) {\n // add a fuzzy-match on 'word' tokens\n if (opts.fuzzy > 0 && reg.word) {\n reg.fuzzy = opts.fuzzy;\n } //add it to or|and choices too\n\n\n if (reg.choices) {\n reg.choices.forEach(function (block) {\n block.forEach(function (r) {\n r.fuzzy = opts.fuzzy;\n });\n });\n }\n\n return reg;\n });\n }\n\n return tokens;\n};\n/** parse a match-syntax string into json */\n\n\nvar syntax = function syntax(input) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // fail-fast\n if (input === null || input === undefined || input === '') {\n return [];\n } //try to support a ton of different formats:\n\n\n if (_typeof(input) === 'object') {\n if (isArray$2(input)) {\n if (input.length === 0 || !input[0]) {\n return [];\n } //is it a pre-parsed reg-list?\n\n\n if (_typeof(input[0]) === 'object') {\n return input;\n } //support a flat array of normalized words\n\n\n if (typeof input[0] === 'string') {\n return byArray(input);\n }\n } //support passing-in a compromise object as a match\n\n\n if (input && input.isA === 'Doc') {\n return fromDoc(input);\n }\n\n return [];\n }\n\n if (typeof input === 'number') {\n input = String(input); //go for it?\n }\n\n var tokens = _01ParseBlocks(input); //turn them into objects\n\n tokens = tokens.map(function (str) {\n return _02ParseToken(str);\n }); //clean up anything weird\n\n tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc\n\n tokens = addOptions(tokens, opts); // console.log(tokens)\n\n return tokens;\n};\n\nvar matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)'))\n\n// match an explicit sequence of term ids\n// take a phrase and find any of the idBlocks in it\nvar idLookup = function idLookup(terms, regs) {\n var matches = [];\n var blocklist = regs[0].idBlocks;\n\n var _loop = function _loop(_t) {\n blocklist.forEach(function (block) {\n if (block.length === 0) {\n t = _t;\n return;\n }\n\n var foundAll = block.every(function (id, i) {\n t = _t;\n return terms[_t + i].id === id;\n });\n\n if (foundAll) {\n matches.push({\n match: terms.slice(_t, _t + block.length)\n }); // skip top-loop forward\n\n _t += block.length - 1;\n }\n });\n t = _t;\n };\n\n for (var t = 0; t < terms.length; t += 1) {\n _loop(t);\n }\n\n return matches;\n};\n\nvar idLookup_1 = idLookup;\n\n/** returns a simple array of arrays */\n\nvar matchAll = function matchAll(p, regs) {\n var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n //if we forgot to parse it..\n if (typeof regs === 'string') {\n regs = matchSyntax(regs);\n } //try to dismiss it, at-once\n\n\n if (_02FailFast(p, regs) === true) {\n return [];\n } //any match needs to be this long, at least\n\n\n var minLength = regs.filter(function (r) {\n return r.optional !== true && r.negative !== true;\n }).length;\n var terms = p.terms();\n var matches = []; // these id-lookups can be super-fast\n\n if (regs[0].idBlocks) {\n var res = idLookup_1(terms, regs);\n\n if (res && res.length > 0) {\n return _04PostProcess(terms, regs, res);\n }\n } //optimisation for '^' start logic\n\n\n if (regs[0].start === true) {\n var _res = _03TryMatch(terms, regs, 0, terms.length);\n\n if (_res && _res.match && _res.match.length > 0) {\n _res.match = _res.match.filter(function (m) {\n return m;\n });\n matches.push(_res);\n }\n\n return _04PostProcess(terms, regs, matches);\n } //try starting, from every term\n\n\n for (var i = 0; i < terms.length; i += 1) {\n // slice may be too short\n if (i + minLength > terms.length) {\n break;\n } //try it!\n\n\n var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length);\n\n if (_res2 && _res2.match && _res2.match.length > 0) {\n //zoom forward!\n i += _res2.match.length - 1; //[capture-groups] return some null responses\n\n _res2.match = _res2.match.filter(function (m) {\n return m;\n });\n matches.push(_res2); //ok, maybe that's enough?\n\n if (matchOne === true) {\n return _04PostProcess(terms, regs, matches);\n }\n }\n }\n\n return _04PostProcess(terms, regs, matches);\n};\n\nvar _01MatchAll = matchAll;\n\n/** return anything that doesn't match.\n * returns a simple array of arrays\n */\n\nvar notMatch = function notMatch(p, regs) {\n var found = {};\n var arr = _01MatchAll(p, regs);\n arr.forEach(function (_ref) {\n var ts = _ref.match;\n ts.forEach(function (t) {\n found[t.id] = true;\n });\n }); //return anything not found\n\n var terms = p.terms();\n var result = [];\n var current = [];\n terms.forEach(function (t) {\n if (found[t.id] === true) {\n if (current.length > 0) {\n result.push(current);\n current = [];\n }\n\n return;\n }\n\n current.push(t);\n });\n\n if (current.length > 0) {\n result.push(current);\n }\n\n return result;\n};\n\nvar not$1 = notMatch;\n\n/** return an array of matching phrases */\n\nvar match_1 = function match_1(regs) {\n var _this = this;\n\n var justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var matches = _01MatchAll(this, regs, justOne); //make them phrase objects\n\n matches = matches.map(function (_ref) {\n var match = _ref.match,\n groups = _ref.groups;\n\n var p = _this.buildFrom(match[0].id, match.length, groups);\n\n p.cache.terms = match;\n return p;\n });\n return matches;\n};\n/** return boolean if one match is found */\n\n\nvar has = function has(regs) {\n var matches = _01MatchAll(this, regs, true);\n return matches.length > 0;\n};\n/** remove all matches from the result */\n\n\nvar not = function not(regs) {\n var _this2 = this;\n\n var matches = not$1(this, regs); //make them phrase objects\n\n matches = matches.map(function (list) {\n return _this2.buildFrom(list[0].id, list.length);\n });\n return matches;\n};\n/** return a list of phrases that can have this tag */\n\n\nvar canBe$1 = function canBe(tag, world) {\n var _this3 = this;\n\n var results = [];\n var terms = this.terms();\n var previous = false;\n\n for (var i = 0; i < terms.length; i += 1) {\n var can = terms[i].canBe(tag, world);\n\n if (can === true) {\n if (previous === true) {\n //add it to the end\n results[results.length - 1].push(terms[i]);\n } else {\n results.push([terms[i]]); //make a new one\n }\n\n previous = can;\n }\n } //turn them into Phrase objects\n\n\n results = results.filter(function (a) {\n return a.length > 0;\n }).map(function (arr) {\n return _this3.buildFrom(arr[0].id, arr.length);\n });\n return results;\n};\n\nvar match = {\n match: match_1,\n has: has,\n not: not,\n canBe: canBe$1\n};\n\nvar Phrase = function Phrase(id, length, pool) {\n _classCallCheck(this, Phrase);\n\n this.start = id;\n this.length = length;\n this.isA = 'Phrase'; // easier than .constructor...\n\n Object.defineProperty(this, 'pool', {\n enumerable: false,\n writable: true,\n value: pool\n });\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, 'groups', {\n enumerable: false,\n writable: true,\n value: {}\n });\n};\n/** create a new Phrase object from an id and length */\n\n\nPhrase.prototype.buildFrom = function (id, length, groups) {\n var p = new Phrase(id, length, this.pool); //copy-over or replace capture-groups too\n\n if (groups && Object.keys(groups).length > 0) {\n p.groups = groups;\n } else {\n p.groups = this.groups;\n }\n\n return p;\n}; //apply methods\n\n\nObject.assign(Phrase.prototype, match);\nObject.assign(Phrase.prototype, methods$7); //apply aliases\n\nvar aliases$1 = {\n term: 'terms'\n};\nObject.keys(aliases$1).forEach(function (k) {\n return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]];\n});\nvar Phrase_1 = Phrase;\n\n/** a key-value store of all terms in our Document */\nvar Pool = /*#__PURE__*/function () {\n function Pool() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Pool);\n\n //quiet this property in console.logs\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: words\n });\n }\n /** throw a new term object in */\n\n\n _createClass(Pool, [{\n key: \"add\",\n value: function add(term) {\n this.words[term.id] = term;\n return this;\n }\n /** find a term by it's id */\n\n }, {\n key: \"get\",\n value: function get(id) {\n return this.words[id];\n }\n /** find a term by it's id */\n\n }, {\n key: \"remove\",\n value: function remove(id) {\n delete this.words[id];\n }\n }, {\n key: \"merge\",\n value: function merge(pool) {\n Object.assign(this.words, pool.words);\n return this;\n }\n /** helper method */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length\n };\n }\n }]);\n\n return Pool;\n}();\n/** make a deep-copy of all terms */\n\n\nPool.prototype.clone = function () {\n var _this = this;\n\n var keys = Object.keys(this.words);\n var words = keys.reduce(function (h, k) {\n var t = _this.words[k].clone();\n\n h[t.id] = t;\n return h;\n }, {});\n return new Pool(words);\n};\n\nvar Pool_1 = Pool;\n\n//add forward/backward 'linked-list' prev/next ids\nvar linkTerms = function linkTerms(terms) {\n terms.forEach(function (term, i) {\n if (i > 0) {\n term.prev = terms[i - 1].id;\n }\n\n if (terms[i + 1]) {\n term.next = terms[i + 1].id;\n }\n });\n};\n\nvar _linkTerms = linkTerms;\n\n//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.\n// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n// @spencermountain 2017 MIT\n//proper nouns with exclamation marks\n// const blacklist = {\n// yahoo: true,\n// joomla: true,\n// jeopardy: true,\n// }\n//regs-\nvar initSplit = /(\\S.+?[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049])(?=\\s+|$)/g;\nvar hasSomething = /\\S/;\nvar isAcronym$1 = /[ .][A-Z]\\.? *$/i;\nvar hasEllipse = /(?:\\u2026|\\.{2,}) *$/;\nvar newLine = /((?:\\r?\\n|\\r)+)/; // Match different new-line formats\n\nvar hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i;\nvar startWhitespace = /^\\s+/; // Start with a regex:\n\nvar naiive_split = function naiive_split(text) {\n var all = []; //first, split by newline\n\n var lines = text.split(newLine);\n\n for (var i = 0; i < lines.length; i++) {\n //split by period, question-mark, and exclamation-mark\n var arr = lines[i].split(initSplit);\n\n for (var o = 0; o < arr.length; o++) {\n all.push(arr[o]);\n }\n }\n\n return all;\n};\n/** does this look like a sentence? */\n\n\nvar isSentence = function isSentence(str, abbrevs) {\n // check for 'F.B.I.'\n if (isAcronym$1.test(str) === true) {\n return false;\n } //check for '...'\n\n\n if (hasEllipse.test(str) === true) {\n return false;\n } // must have a letter\n\n\n if (hasLetter.test(str) === false) {\n return false;\n }\n\n var txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '');\n var words = txt.split(' ');\n var lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.'\n\n if (abbrevs.hasOwnProperty(lastWord)) {\n return false;\n } // //check for jeopardy!\n // if (blacklist.hasOwnProperty(lastWord)) {\n // return false\n // }\n\n\n return true;\n};\n\nvar splitSentences = function splitSentences(text, world) {\n var abbrevs = world.cache.abbreviations;\n text = text || '';\n text = String(text);\n var sentences = []; // First do a greedy-split..\n\n var chunks = []; // Ensure it 'smells like' a sentence\n\n if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n return sentences;\n } // cleanup unicode-spaces\n\n\n text = text.replace('\\xa0', ' '); // Start somewhere:\n\n var splits = naiive_split(text); // Filter-out the crap ones\n\n for (var i = 0; i < splits.length; i++) {\n var s = splits[i];\n\n if (s === undefined || s === '') {\n continue;\n } //this is meaningful whitespace\n\n\n if (hasSomething.test(s) === false) {\n //add it to the last one\n if (chunks[chunks.length - 1]) {\n chunks[chunks.length - 1] += s;\n continue;\n } else if (splits[i + 1]) {\n //add it to the next one\n splits[i + 1] = s + splits[i + 1];\n continue;\n }\n } //else, only whitespace, no terms, no sentence\n\n\n chunks.push(s);\n } //detection of non-sentence chunks:\n //loop through these chunks, and join the non-sentence chunks back together..\n\n\n for (var _i = 0; _i < chunks.length; _i++) {\n var c = chunks[_i]; //should this chunk be combined with the next one?\n\n if (chunks[_i + 1] && isSentence(c, abbrevs) === false) {\n chunks[_i + 1] = c + (chunks[_i + 1] || '');\n } else if (c && c.length > 0) {\n //&& hasLetter.test(c)\n //this chunk is a proper sentence..\n sentences.push(c);\n chunks[_i] = '';\n }\n } //if we never got a sentence, return the given text\n\n\n if (sentences.length === 0) {\n return [text];\n } //move whitespace to the ends of sentences, when possible\n //['hello',' world'] -> ['hello ','world']\n\n\n for (var _i2 = 1; _i2 < sentences.length; _i2 += 1) {\n var ws = sentences[_i2].match(startWhitespace);\n\n if (ws !== null) {\n sentences[_i2 - 1] += ws[0];\n sentences[_i2] = sentences[_i2].replace(startWhitespace, '');\n }\n }\n\n return sentences;\n};\n\nvar _01Sentences = splitSentences; // console.log(sentence_parser('john f. kennedy'));\n\nvar wordlike = /\\S/;\nvar isBoundary = /^[!?.]+$/;\nvar naiiveSplit = /(\\S+)/;\nvar isSlash = /[a-z] ?\\/ ?[a-z]*$/;\nvar notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '\"', \"'\", '`'];\nnotWord = notWord.reduce(function (h, c) {\n h[c] = true;\n return h;\n}, {});\n\nvar hasHyphen = function hasHyphen(str) {\n //dont split 're-do'\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n return false;\n } //letter-number 'aug-20'\n\n\n var reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)(-|–|—)([a-z0-9\\u00C0-\\u00FF].*)/i;\n\n if (reg.test(str) === true) {\n return true;\n } //number-letter '20-aug'\n\n\n var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\\u00C0-\\u00FF`\"'/-]+$)/i;\n\n if (reg2.test(str) === true) {\n return true;\n } //support weird number-emdash combo '2010–2011'\n // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i\n // if (reg2.test(str)) {\n // return true\n // }\n\n\n return false;\n}; // 'he / she' should be one word\n\n\nvar combineSlashes = function combineSlashes(arr) {\n for (var i = 1; i < arr.length - 1; i++) {\n if (isSlash.test(arr[i])) {\n arr[i - 1] += arr[i] + arr[i + 1];\n arr[i] = null;\n arr[i + 1] = null;\n }\n }\n\n return arr;\n};\n\nvar splitHyphens = function splitHyphens(word) {\n var arr = []; //support multiple-hyphenated-terms\n\n var hyphens = word.split(/[-–—]/);\n var whichDash = '-';\n var found = word.match(/[-–—]/);\n\n if (found && found[0]) {\n whichDash = found;\n }\n\n for (var o = 0; o < hyphens.length; o++) {\n if (o === hyphens.length - 1) {\n arr.push(hyphens[o]);\n } else {\n arr.push(hyphens[o] + whichDash);\n }\n }\n\n return arr;\n};\n\nvar isArray$1 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn a string into an array of strings (naiive for now, lumped later)\n\n\nvar splitWords = function splitWords(str) {\n var result = [];\n var arr = []; //start with a naiive split\n\n str = str || '';\n\n if (typeof str === 'number') {\n str = String(str);\n }\n\n if (isArray$1(str)) {\n return str;\n }\n\n var words = str.split(naiiveSplit);\n\n for (var i = 0; i < words.length; i++) {\n //split 'one-two'\n if (hasHyphen(words[i]) === true) {\n arr = arr.concat(splitHyphens(words[i]));\n continue;\n }\n\n arr.push(words[i]);\n } //greedy merge whitespace+arr to the right\n\n\n var carry = '';\n\n for (var _i = 0; _i < arr.length; _i++) {\n var word = arr[_i]; //if it's more than a whitespace\n\n if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n //put whitespace on end of previous term, if possible\n if (result.length > 0) {\n result[result.length - 1] += carry;\n result.push(word);\n } else {\n //otherwise, but whitespace before\n result.push(carry + word);\n }\n\n carry = '';\n } else {\n carry += word;\n }\n } //handle last one\n\n\n if (carry) {\n if (result.length === 0) {\n result[0] = '';\n }\n\n result[result.length - 1] += carry; //put it on the end\n } // combine 'one / two'\n\n\n result = combineSlashes(result); // remove empty results\n\n result = result.filter(function (s) {\n return s;\n });\n return result;\n};\n\nvar _02Words = splitWords;\n\nvar isArray = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n/** turn a string into an array of Phrase objects */\n\n\nvar fromText = function fromText() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var pool = arguments.length > 2 ? arguments[2] : undefined;\n var sentences = null; //a bit of validation, first\n\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text);\n } else if (isArray(text)) {\n sentences = text;\n }\n } //tokenize into words\n\n\n sentences = sentences || _01Sentences(text, world);\n sentences = sentences.map(function (str) {\n return _02Words(str);\n }); //turn them into proper objects\n\n pool = pool || new Pool_1();\n var phrases = sentences.map(function (terms) {\n terms = terms.map(function (str) {\n var term = new Term_1(str);\n pool.add(term);\n return term;\n }); //add next/previous ids\n\n _linkTerms(terms); //return phrase objects\n\n var p = new Phrase_1(terms[0].id, terms.length, pool);\n p.cache.terms = terms;\n return p;\n }); //return them ready for a Document object\n\n return phrases;\n};\n\nvar _01Tokenizer = fromText;\n\nvar fromJSON = function fromJSON(json, world) {\n var pool = new Pool_1();\n var phrases = json.map(function (p, k) {\n var terms = p.terms.map(function (o, i) {\n var term = new Term_1(o.text);\n term.pre = o.pre !== undefined ? o.pre : '';\n\n if (o.post === undefined) {\n o.post = ' '; //no given space for very last term\n\n if (i >= p.terms.length - 1) {\n o.post = '. ';\n\n if (k >= p.terms.length - 1) {\n o.post = '.';\n }\n }\n }\n\n term.post = o.post !== undefined ? o.post : ' ';\n\n if (o.tags) {\n o.tags.forEach(function (tag) {\n return term.tag(tag, '', world);\n });\n }\n\n pool.add(term);\n return term;\n }); //add prev/next links\n\n _linkTerms(terms); // return a proper Phrase object\n\n return new Phrase_1(terms[0].id, terms.length, pool);\n });\n return phrases;\n};\n\nvar fromJSON_1 = fromJSON;\n\nvar _version = '13.10.5';\n\nvar entity = ['Person', 'Place', 'Organization'];\nvar nouns$1 = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural'\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun'\n },\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization', 'Date']\n },\n FirstName: {\n isA: 'Person'\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName']\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName']\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName']\n },\n NickName: {\n isA: 'Person',\n notA: ['FirstName', 'LastName']\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName', 'Value']\n },\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization']\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City']\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country']\n },\n Region: {\n isA: ['Place', 'ProperNoun']\n },\n Address: {\n isA: 'Place'\n },\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place']\n },\n SportsTeam: {\n isA: 'Organization'\n },\n School: {\n isA: 'Organization'\n },\n Company: {\n isA: 'Organization'\n },\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular']\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun'\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place']\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity\n },\n //`john's`\n Possessive: {\n isA: 'Noun' // notA: 'Pronoun',\n\n }\n};\n\nvar verbs$1 = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value']\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'FutureTense']\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund']\n },\n //close the door!\n Imperative: {\n isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'],\n\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense']\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense']\n },\n // will walk\n FutureTense: {\n isA: 'Verb'\n },\n // is\n Copula: {\n isA: 'Verb'\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive']\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund'\n },\n Pluperfect: {\n isA: 'Verb'\n },\n // shown\n Participle: {\n isA: 'PastTense'\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb'\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb'\n },\n //this can be an adverb\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value']\n }\n};\n\nvar values = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal']\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal']\n },\n Fraction: {\n isA: 'Value',\n notA: ['Noun']\n },\n RomanNumeral: {\n isA: 'Cardinal',\n //can be a person, too\n notA: ['Ordinal', 'TextValue']\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue']\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue']\n },\n Money: {\n isA: 'Cardinal'\n },\n Percent: {\n isA: 'Value'\n }\n};\n\nvar anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord'];\nvar misc$1 = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value']\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective']\n },\n // better\n Comparative: {\n isA: ['Adjective']\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative']\n },\n NumberRange: {\n isA: ['Contraction']\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value']\n },\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Adverb', 'Preposition', 'Adjective']\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time']\n },\n WeekDay: {\n isA: ['Date', 'Noun']\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n notA: ['Adjective', 'ProperNoun']\n },\n // '9:20pm'\n Time: {\n isA: ['Date'],\n notA: ['AtMention']\n },\n //glue\n Determiner: {\n notA: anything\n },\n Conjunction: {\n notA: anything\n },\n Preposition: {\n notA: anything\n },\n // what, who, why\n QuestionWord: {\n notA: ['Determiner']\n },\n // peso, euro\n Currency: {\n isA: ['Noun']\n },\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb']\n },\n // dr.\n Abbreviation: {},\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email']\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n //non-exclusive\n Acronym: {\n notA: ['Plural', 'RomanNumeral']\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value']\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value']\n }\n};\n\n// i just made these up\nvar colorMap = {\n Noun: 'blue',\n Verb: 'green',\n Negative: 'green',\n Date: 'red',\n Value: 'red',\n Adjective: 'magenta',\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan'\n};\n/** add a debug color to some tags */\n\nvar addColors = function addColors(tags) {\n Object.keys(tags).forEach(function (k) {\n // assigned from plugin, for example\n if (tags[k].color) {\n tags[k].color = tags[k].color;\n return;\n } // defined above\n\n\n if (colorMap[k]) {\n tags[k].color = colorMap[k];\n return;\n }\n\n tags[k].isA.some(function (t) {\n if (colorMap[t]) {\n tags[k].color = colorMap[t];\n return true;\n }\n\n return false;\n });\n });\n return tags;\n};\n\nvar _color = addColors;\n\nvar unique$3 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; //add 'downward' tags (that immediately depend on this one)\n\n\nvar inferIsA = function inferIsA(tags) {\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k];\n var len = tag.isA.length;\n\n for (var i = 0; i < len; i++) {\n var down = tag.isA[i];\n\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA);\n }\n } // clean it up\n\n\n tag.isA = unique$3(tag.isA);\n });\n return tags;\n};\n\nvar _isA = inferIsA;\n\nvar unique$2 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; // crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\n\n\nvar inferNotA = function inferNotA(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.notA = tag.notA || [];\n tag.isA.forEach(function (down) {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n var notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || [];\n tag.notA = tag.notA.concat(notA);\n }\n }); // any tag that lists us as a conflict, we conflict it back.\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key);\n }\n } // clean it up\n\n\n tag.notA = unique$2(tag.notA);\n });\n return tags;\n};\n\nvar _notA = inferNotA;\n\n// a lineage is all 'incoming' tags that have this as 'isA'\nvar inferLineage = function inferLineage(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.lineage = []; // find all tags with it in their 'isA' set\n\n for (var i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i]);\n }\n }\n });\n return tags;\n};\n\nvar _lineage = inferLineage;\n\nvar validate = function validate(tags) {\n // cleanup format\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k]; // ensure isA is an array\n\n tag.isA = tag.isA || [];\n\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA];\n } // ensure notA is an array\n\n\n tag.notA = tag.notA || [];\n\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA];\n }\n });\n return tags;\n}; // build-out the tag-graph structure\n\n\nvar inferTags = function inferTags(tags) {\n // validate data\n tags = validate(tags); // build its 'down tags'\n\n tags = _isA(tags); // infer the conflicts\n\n tags = _notA(tags); // debug tag color\n\n tags = _color(tags); // find incoming links\n\n tags = _lineage(tags);\n return tags;\n};\n\nvar inference = inferTags;\n\nvar addIn = function addIn(obj, tags) {\n Object.keys(obj).forEach(function (k) {\n tags[k] = obj[k];\n });\n};\n\nvar build = function build() {\n var tags = {};\n addIn(nouns$1, tags);\n addIn(verbs$1, tags);\n addIn(values, tags);\n addIn(misc$1, tags); // do the graph-stuff\n\n tags = inference(tags);\n return tags;\n};\n\nvar tags = build();\n\nvar _data = {\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc\",\n \"Copula\": \"true¦a1is,w0;as,ere;m,re\",\n \"PastTense\": \"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan\",\n \"Condition\": \"true¦if,lest,unless\",\n \"Preposition\": \"true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Gerund\": \"true¦accord0be0develop0go0result0stain0;ing\",\n \"Negative\": \"true¦n0;ever,o0;!n,t\",\n \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n \"Plural\": \"true¦records\",\n \"Conjunction\": \"true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Abbreviation\": \"true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:15;1:12;2:18;a15b0Sc0Jd0Ce09f04gZhViUjel0kitty,lSmOnNoMpHquestionGrEs9t6u4w3;ay,om02;nc0Zs 3;doll0Kst0M; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoMt3uper bowl,yst14;ep4ri2u3;de0Xff;faSmoS;st1ze;al0i2o3;om,se;! mark;a6i1la5r4u3;dPrpoH;eroga00ie0Gobl0U;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em\",\n \"FemaleName\": \"true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt\",\n \"Honorific\": \"true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al\",\n \"SportsTeam\": \"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls\",\n \"Uncountable\": \"true¦0:1I;1:16;2:1X;a1Rb1Jc1Ad17e10f0Ug0Nh0Ii0Ej0Dknowled1Ql08mYnews,oXpTrOsDt8vi7w3;a5ea0Bi4oo3;d,l;ldlife,ne;rmth,t0;neg17ol0Ctae;e6h5oothpaste,r3una;affTou3;ble,sers,t;ermod1Mund0;a,nnis;aBcene0Aeri1hAil9kittl1now,o8p6t4u3;g10nshi0Q;ati1Le3;am,el;ace1Ee3;ci1ed;ap,cc0;k,v0;eep,ingl1;d0Dfe18l3nd,tish;m11t;a6e4ic3;e,ke0M;c3laxa0Isearch;ogni0Hrea0H;bi1in;aPe5hys2last9o3ress04;l3rk,w0;it2yA;a12trZ;bstetr2il,xygen;aAe8ilk,o5u3;mps,s3;ic;n3o0I;ey,o3;gamy;a3chan2;sl1t;chine3il,themat2; learn0Bry;aught0e5i4ogi0Su3;ck,g0I;ce,ghtn08ngui0QteratN;a3isM;th0;ewelAusti0L;ce,mp3nformaUtself;a3ortan0J;ti3;en0H;a6isto5o3;ck3mework,n3spitali0B;ey;ry;ir,libut,ppiD;ene6o4r3um,ymna0D;aCound;l3ssip;d,f; 3t2;editQpo3;ol;i7lour,o4urnit3;ure;od,rgive3uri0wl;ne3;ss;c9sh;conom2duca8lectr7n5quip6th2very3;body,o3thH;ne;joy3tertain3;ment;iciPon2;tiI;ar4iabet1raugh4;es;ts;aAelcius,h6iv2l5o3urrency;al,ld w3nfusiDttD;ar;ass2oth5;aos,e3;e4w3;ing;se;r7sh;a7eef,i4lood,owls,read,utt0;er;lliar4s3;on;ds;g3ss;ga3;ge;c8dvi7ero5ir4mnes3rt,thlet2;ty;craft;b2d3naut2;ynam2;ce;id,ou3;st2;ics\",\n \"Infinitive\": \"true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s\",\n \"Organization\": \"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c\",\n \"Demonym\": \"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n \"Possessive\": \"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne\",\n \"Currency\": \"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s\",\n \"City\": \"true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",\n \"Country\": \"true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an\",\n \"Region\": \"true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma\",\n \"Place\": \"true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s\",\n \"MaleName\": \"true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:B6;7:CW;8:C8;9:DK;A:DL;B:A6;C:C2;aCObBLcAJd9He8Nf85g7Ih6Ui6Ej5Ek52l4Dm35n2To2Np2Fqu2Dr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Tkaria,n5W;hEkD;!aCM;ar5WeCL;aLoFuD;sDu2KvBY;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBMssX;avi3ho4;aMeKiFoDyaC2;jcie8Clfgang,odrow,utD;!er;lDnst1;bFey,frD1lD;aBDiD;am,e,s;e9Fur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5C;avAWeDist0oy,um0;ntAOv5Zy;bGdFmDny;!as,mDoharu;aCTie,y;!d;iBy;mDt5;!my,othy;adFeoEia8GomD;!as;!do8P;!de5;dGrD;en9LrD;an9KeDy;ll,n9J;!dy;dgh,ha,iDnn3req,tsu4T;cB5ka;aTcotRePhLiJoHpenc3tDur1Vylve9Kzym1;anFeDua8D;f0phBTvDwa8C;e62ie;!islaw,l8;lom1nBFuD;leyma7ta;dDlBm1yabonga;!dhart7Bn8;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y7;aDbasti0k2Al4Rrg4Oth,ymoAU;m5n;!tD;!ie,y;lEmDnti2Eq5Bul;!ke5MmCu4;ik,vato7X;aYeUheAAiQoHuEyD;an,ou;b7NdEf5pe7SssD;!elBZ;ol3Fy;an,bKcJdIel,geHh0landBQmGnFry,sEyD;!ce;coe,s;!aAHnC;an,eo;l47r;e5Og3n8olfo,ri7A;co,ky;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on\",\n \"LastName\": \"true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta\",\n \"WeekDay\": \"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",\n \"Month\": \"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il\",\n \"Date\": \"true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w\",\n \"FirstName\": \"true¦aKblair,cGdevFgabrieEhinaDjBk8l7m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is\",\n \"Person\": \"true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er\",\n \"Verb\": \"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en\",\n \"PhrasalVerb\": \"true¦0:7E;1:72;2:7Q;3:7G;4:6V;5:7T;6:7I;7:6O;8:71;9:6P;A:5T;B:7C;C:7J;D:6Q;E:7L;F:7D;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietDr1Ms0FtVuTvacuum 1wLyammerBzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r7s7;eel Fip G;aJiIn2L;gh 0Crd0;n Fr 3S;it 60k7lk6rm 6Bsh 7Lt6Ov53;rgeBsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleDp G;ckDde 02;neDp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov8up;aIe 4Vll52;m 1r 01;ckBke Jlk I;ov8u53;aIba4d2in,o3Fup;ba4ft8p58w3;a0Nc0Me0Gh0Ci09l05m04n03o02pXquare WtOuMwI;earKiI;ngJtch I;aw3ba4o75; by;ck Iit 1m 1ss0;in,up;aNe10iMoKrIucH;aigh1ZiI;ke 6En3C;p Irm22;by,in,oC;nHr 1tc3V;cHmp0nd Ir6Xve6y 1;ba4d2up;d2oCup;arHeLiKlJrIurB;ingBuc7;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row F;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v8;gn 4WngJt Iz7;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v7;aTeQiPoLuI;b 4Sle0n Istl7;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arEin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleBess JiLoI;p 1;ah1Ron;iIp 5Fr3XurDwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leBn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt F;arrowDerd0oI;d6teD;aQeNiMoKuI;ddl7lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur7lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft8ba4d2forw2Jin45ov8uI;nd8p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arEd2;av1Mt 36velI; o3T;c7p 1sh ItchBugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic7mpA;ke30tD;c39zz 1;aUePiMoJuI;nkerDrry 1s0Z;lIneArse2W;d Ie 1;ba4d2fast,o05up;de Jt I;ba4on,up;aw3o5;aIlp0;d Kl 2Ar It 1;fIof;rom;in,oXu1H;cHm 1nJve Iz25;it,to;d Ig 2EkerK;d2in,o5;aWeQive Oloss 22oKrJunI; f0Q;in3Gow 2A; Iof 0Y;aJb1Dit,oIrEt0Su18;ff,n,v8;bo5ft8hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrEup;ff,n,ut,v8;cJhIl1WrEt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownBy 1;aw3oC;eIshe1N; 1z7;lKol I;aIwi1G;bo5rE;d 9low 1;aJeIip0;sh0;g 9ke0mIrI;e G;gPlNnLrJsIzzle0;h G;e Im 1;aw3ba4up;d0isI;h 1;e Il 19;aw3fN;ht ba4ure0;eNnJsI;s 1;cKd I;fIoC;or;e F;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v8;a4ehi20;e J;at0dge0nd Iy7;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl7;aYhVlean 9oIross Fut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd8;ogeth8;ut,v8;th,wI;ard;a4y;pIrEw3;art;eIipA;ck FeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Ft6;ry JvI;e 01;aw3o18;l ImD;aIba4d2o16up;rEw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t F;in,o5up;e I;ov8;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrEw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgDil 9n7oLssKttlJunce Ix F;aw3ba4;e 9; arE;k Ft 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov8up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h F;ainBe F;g FkB; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arEo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt\",\n \"Comparable\": \"true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd\",\n \"TextOrdinal\": \"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th\",\n \"Cardinal\": \"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s\",\n \"Expression\": \"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la\",\n \"Adverb\": \"true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Determiner\": \"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n};\n\nvar seq = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n cache$1 = seq.split(\"\").reduce(function (n, o, e) {\n return n[o] = e, n;\n}, {}),\n toAlphaCode = function toAlphaCode(n) {\n if (void 0 !== seq[n]) return seq[n];\n var o = 1,\n e = 36,\n t = \"\";\n\n for (; n >= e; n -= e, o++, e *= 36) {\n }\n\n for (; o--;) {\n var _o = n % 36;\n\n t = String.fromCharCode((_o < 10 ? 48 : 55) + _o) + t, n = (n - _o) / 36;\n }\n\n return t;\n},\n fromAlphaCode = function fromAlphaCode(n) {\n if (void 0 !== cache$1[n]) return cache$1[n];\n var o = 0,\n e = 1,\n t = 36,\n r = 1;\n\n for (; e < n.length; o += t, e++, t *= 36) {\n }\n\n for (var _e = n.length - 1; _e >= 0; _e--, r *= 36) {\n var _t = n.charCodeAt(_e) - 48;\n\n _t > 10 && (_t -= 7), o += _t * r;\n }\n\n return o;\n};\n\nvar encoding = {\n toAlphaCode: toAlphaCode,\n fromAlphaCode: fromAlphaCode\n},\n symbols = function symbols(n) {\n var o = new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");\n\n for (var e = 0; e < n.nodes.length; e++) {\n var t = o.exec(n.nodes[e]);\n\n if (!t) {\n n.symCount = e;\n break;\n }\n\n n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]);\n }\n\n n.nodes = n.nodes.slice(n.symCount, n.nodes.length);\n};\n\nvar indexFromRef = function indexFromRef(n, o, e) {\n var t = encoding.fromAlphaCode(o);\n return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount;\n},\n toArray = function toArray(n) {\n var o = [],\n e = function e(t, r) {\n var s = n.nodes[t];\n \"!\" === s[0] && (o.push(r), s = s.slice(1));\n var c = s.split(/([A-Z0-9,]+)/g);\n\n for (var _s = 0; _s < c.length; _s += 2) {\n var u = c[_s],\n i = c[_s + 1];\n if (!u) continue;\n var l = r + u;\n\n if (\",\" === i || void 0 === i) {\n o.push(l);\n continue;\n }\n\n var f = indexFromRef(n, i, t);\n e(f, l);\n }\n };\n\n return e(0, \"\"), o;\n},\n unpack = function unpack(n) {\n var o = {\n nodes: n.split(\";\"),\n syms: [],\n symCount: 0\n };\n return n.match(\":\") && symbols(o), toArray(o);\n};\n\nvar unpack_1$1 = unpack,\n unpack_1$1$1 = function unpack_1$1$1(n) {\n var o = n.split(\"|\").reduce(function (n, o) {\n var e = o.split(\"¦\");\n return n[e[0]] = e[1], n;\n }, {}),\n e = {};\n return Object.keys(o).forEach(function (n) {\n var t = unpack_1$1(o[n]);\n \"true\" === n && (n = !0);\n\n for (var _o2 = 0; _o2 < t.length; _o2++) {\n var r = t[_o2];\n !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n;\n }\n }), e;\n};\n\nvar efrtUnpack_min = unpack_1$1$1;\n\n//words that can't be compressed, for whatever reason\nvar misc = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n 'motel 6': 'Organization',\n g8: 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date',\n her: ['Possessive', 'Pronoun'],\n his: ['Possessive', 'Pronoun'],\n their: ['Possessive', 'Pronoun'],\n themselves: ['Possessive', 'Pronoun'],\n your: ['Possessive', 'Pronoun'],\n our: ['Possessive', 'Pronoun'],\n my: ['Possessive', 'Pronoun'],\n its: ['Possessive', 'Pronoun']\n};\n\nvar fancy = {\n Unit: function Unit(lex, w) {\n lex[w] = ['Abbreviation', 'Unit'];\n },\n Cardinal: function Cardinal(lex, w) {\n lex[w] = ['TextValue', 'Cardinal'];\n },\n TextOrdinal: function TextOrdinal(lex, w) {\n lex[w] = ['Ordinal', 'TextValue'];\n lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths'\n },\n // add plural/singular forms\n Singular: function Singular(lex, w, world) {\n lex[w] = 'Singular';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || 'Plural';\n },\n // conjugate these verbs\n Infinitive: function Infinitive(lex, w, world) {\n lex[w] = 'Infinitive';\n var conj = world.transforms.conjugate(w, world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]];\n lex[str] = lex[str] || tags[i]; // only if it's safe\n }\n },\n // conjugate other Adjectival forms\n Comparable: function Comparable(lex, w, world) {\n lex[w] = 'Comparable';\n var conj = world.transforms.adjectives(w);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var word = conj[tags[i]];\n lex[word] = lex[word] || tags[i]; // only if it's safe\n }\n },\n //conjugate phrasal-verbs\n PhrasalVerb: function PhrasalVerb(lex, w, world) {\n // whole thing\n lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form\n\n var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive'\n // //conjugate first word\n\n var conj = world.transforms.conjugate(words[0], world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]] + ' ' + words[1];\n lex[str] = lex[str] || ['PhrasalVerb', tags[i]];\n world.hasCompound[conj[tags[i]]] = true;\n }\n },\n // inflect our demonyms - 'germans'\n Demonym: function Demonym(lex, w, world) {\n lex[w] = 'Demonym';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe\n }\n}; // let a user explode their lexicon, too\n\nvar addWords = function addWords(wordsObj, lex, world) {\n Object.keys(wordsObj).forEach(function (word) {\n var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer\n\n if (tag === 'Abbreviation' || tag === 'Unit') {\n world.cache.abbreviations[word] = true;\n } // cache multi-words\n\n\n var multi = word.split(' ');\n\n if (multi.length > 1) {\n world.hasCompound[multi[0]] = true;\n } // do some ad-hoc work before adding it\n\n\n if (fancy[tag] !== undefined) {\n fancy[tag](lex, word, world);\n return;\n } //set it in our lexicon, basic\n\n\n if (lex[word] === undefined) {\n lex[word] = tag;\n return;\n } // if we already have that word\n\n\n if (typeof lex[word] === 'string') {\n lex[word] = [lex[word]];\n }\n\n if (typeof tag === 'string') {\n lex[word].push(tag);\n } else {\n lex[word] = lex[word].concat(tag);\n }\n });\n}; // we do some ad-hoc stuff here, building-up our word-list\n\n\nvar buildOut = function buildOut(world) {\n //our bag of words\n var lexicon = Object.assign({}, misc); // start adding words to the lex\n\n Object.keys(_data).forEach(function (tag) {\n var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks\n\n Object.keys(wordsObj).forEach(function (w) {\n wordsObj[w] = tag;\n });\n addWords(wordsObj, lexicon, world);\n }); // console.log(Object.keys(lexicon).length)\n\n return lexicon;\n};\n\nvar unpack_1 = {\n buildOut: buildOut,\n addWords: addWords\n};\n\n// add words from plurals and conjugations data\nvar addIrregulars = function addIrregulars(world) {\n //add irregular plural nouns\n var nouns = world.irregulars.nouns;\n var words = Object.keys(nouns);\n\n for (var i = 0; i < words.length; i++) {\n var w = words[i];\n world.words[w] = 'Singular';\n world.words[nouns[w]] = 'Plural';\n } // add irregular verb conjugations\n\n\n var verbs = world.irregulars.verbs;\n var keys = Object.keys(verbs);\n\n var _loop = function _loop(_i) {\n var inf = keys[_i]; //add only if it it's safe...\n\n world.words[inf] = world.words[inf] || 'Infinitive';\n var forms = world.transforms.conjugate(inf, world);\n forms = Object.assign(forms, verbs[inf]); //add the others\n\n Object.keys(forms).forEach(function (tag) {\n world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle\n\n if (world.words[forms[tag]] === 'Participle') {\n world.words[forms[tag]] = tag;\n }\n });\n };\n\n for (var _i = 0; _i < keys.length; _i++) {\n _loop(_i);\n }\n};\n\nvar addIrregulars_1 = addIrregulars;\n\n//nouns with irregular plural/singular forms\n//used in noun.inflect, and also in the lexicon.\nvar plurals = {\n addendum: 'addenda',\n alga: 'algae',\n alumna: 'alumnae',\n alumnus: 'alumni',\n analysis: 'analyses',\n antenna: 'antennae',\n appendix: 'appendices',\n avocado: 'avocados',\n axis: 'axes',\n bacillus: 'bacilli',\n barracks: 'barracks',\n beau: 'beaux',\n bus: 'buses',\n cactus: 'cacti',\n chateau: 'chateaux',\n child: 'children',\n circus: 'circuses',\n clothes: 'clothes',\n corpus: 'corpora',\n criterion: 'criteria',\n curriculum: 'curricula',\n database: 'databases',\n deer: 'deer',\n diagnosis: 'diagnoses',\n echo: 'echoes',\n embargo: 'embargoes',\n epoch: 'epochs',\n foot: 'feet',\n formula: 'formulae',\n fungus: 'fungi',\n genus: 'genera',\n goose: 'geese',\n halo: 'halos',\n hippopotamus: 'hippopotami',\n index: 'indices',\n larva: 'larvae',\n leaf: 'leaves',\n libretto: 'libretti',\n loaf: 'loaves',\n man: 'men',\n matrix: 'matrices',\n memorandum: 'memoranda',\n modulus: 'moduli',\n mosquito: 'mosquitoes',\n mouse: 'mice',\n // move: 'moves',\n nebula: 'nebulae',\n nucleus: 'nuclei',\n octopus: 'octopi',\n opus: 'opera',\n ovum: 'ova',\n ox: 'oxen',\n parenthesis: 'parentheses',\n person: 'people',\n phenomenon: 'phenomena',\n prognosis: 'prognoses',\n quiz: 'quizzes',\n radius: 'radii',\n referendum: 'referenda',\n rodeo: 'rodeos',\n sex: 'sexes',\n shoe: 'shoes',\n sombrero: 'sombreros',\n stimulus: 'stimuli',\n stomach: 'stomachs',\n syllabus: 'syllabi',\n synopsis: 'synopses',\n tableau: 'tableaux',\n thesis: 'theses',\n thief: 'thieves',\n tooth: 'teeth',\n tornado: 'tornados',\n tuxedo: 'tuxedos',\n vertebra: 'vertebrae' // virus: 'viri',\n // zero: 'zeros',\n\n};\n\n// a list of irregular verb conjugations\n// used in verbs().conjugate()\n// but also added to our lexicon\n//use shorter key-names\nvar mapping$1 = {\n g: 'Gerund',\n prt: 'Participle',\n perf: 'PerfectTense',\n pst: 'PastTense',\n fut: 'FuturePerfect',\n pres: 'PresentTense',\n pluperf: 'Pluperfect',\n a: 'Actor'\n}; // '_' in conjugations is the infinitive form\n// (order matters, to the lexicon)\n\nvar conjugations = {\n act: {\n a: '_or'\n },\n ache: {\n pst: 'ached',\n g: 'aching'\n },\n age: {\n g: 'ageing',\n pst: 'aged',\n pres: 'ages'\n },\n aim: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n arise: {\n prt: '_n',\n pst: 'arose'\n },\n babysit: {\n a: '_ter',\n pst: 'babysat'\n },\n ban: {\n a: '',\n g: '_ning',\n pst: '_ned'\n },\n be: {\n a: '',\n g: 'am',\n prt: 'been',\n pst: 'was',\n pres: 'is'\n },\n beat: {\n a: '_er',\n g: '_ing',\n prt: '_en'\n },\n become: {\n prt: '_'\n },\n begin: {\n g: '_ning',\n prt: 'begun',\n pst: 'began'\n },\n being: {\n g: 'are',\n pst: 'were',\n pres: 'are'\n },\n bend: {\n prt: 'bent'\n },\n bet: {\n a: '_ter',\n prt: '_'\n },\n bind: {\n pst: 'bound'\n },\n bite: {\n g: 'biting',\n prt: 'bitten',\n pst: 'bit'\n },\n bleed: {\n pst: 'bled',\n prt: 'bled'\n },\n blow: {\n prt: '_n',\n pst: 'blew'\n },\n boil: {\n a: '_er'\n },\n brake: {\n prt: 'broken'\n },\n \"break\": {\n pst: 'broke'\n },\n breed: {\n pst: 'bred'\n },\n bring: {\n pst: 'brought',\n prt: 'brought'\n },\n broadcast: {\n pst: '_'\n },\n budget: {\n pst: '_ed'\n },\n build: {\n pst: 'built',\n prt: 'built'\n },\n burn: {\n prt: '_ed'\n },\n burst: {\n prt: '_'\n },\n buy: {\n pst: 'bought',\n prt: 'bought'\n },\n can: {\n a: '',\n fut: '_',\n g: '',\n pst: 'could',\n perf: 'could',\n pluperf: 'could',\n pres: '_'\n },\n \"catch\": {\n pst: 'caught'\n },\n choose: {\n g: 'choosing',\n prt: 'chosen',\n pst: 'chose'\n },\n cling: {\n prt: 'clung'\n },\n come: {\n prt: '_',\n pst: 'came',\n g: 'coming'\n },\n compete: {\n a: 'competitor',\n g: 'competing',\n pst: '_d'\n },\n cost: {\n pst: '_'\n },\n creep: {\n prt: 'crept'\n },\n cut: {\n prt: '_'\n },\n deal: {\n pst: '_t',\n prt: '_t'\n },\n develop: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n die: {\n g: 'dying',\n pst: '_d'\n },\n dig: {\n g: '_ging',\n pst: 'dug',\n prt: 'dug'\n },\n dive: {\n prt: '_d'\n },\n \"do\": {\n pst: 'did',\n pres: '_es'\n },\n draw: {\n prt: '_n',\n pst: 'drew'\n },\n dream: {\n prt: '_t'\n },\n drink: {\n prt: 'drunk',\n pst: 'drank'\n },\n drive: {\n g: 'driving',\n prt: '_n',\n pst: 'drove'\n },\n drop: {\n g: '_ping',\n pst: '_ped'\n },\n eat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n pst: 'ate'\n },\n edit: {\n pst: '_ed',\n g: '_ing'\n },\n egg: {\n pst: '_ed'\n },\n fall: {\n prt: '_en',\n pst: 'fell'\n },\n feed: {\n prt: 'fed',\n pst: 'fed'\n },\n feel: {\n a: '_er',\n pst: 'felt'\n },\n fight: {\n pst: 'fought',\n prt: 'fought'\n },\n find: {\n pst: 'found'\n },\n flee: {\n g: '_ing',\n prt: 'fled'\n },\n fling: {\n prt: 'flung'\n },\n fly: {\n prt: 'flown',\n pst: 'flew'\n },\n forbid: {\n pst: 'forbade'\n },\n forget: {\n g: '_ing',\n prt: 'forgotten',\n pst: 'forgot'\n },\n forgive: {\n g: 'forgiving',\n prt: '_n',\n pst: 'forgave'\n },\n free: {\n a: '',\n g: '_ing'\n },\n freeze: {\n g: 'freezing',\n prt: 'frozen',\n pst: 'froze'\n },\n get: {\n pst: 'got',\n prt: 'gotten'\n },\n give: {\n g: 'giving',\n prt: '_n',\n pst: 'gave'\n },\n go: {\n prt: '_ne',\n pst: 'went',\n pres: 'goes'\n },\n grow: {\n prt: '_n'\n },\n guide: {\n pst: '_d'\n },\n hang: {\n pst: 'hung',\n prt: 'hung'\n },\n have: {\n g: 'having',\n pst: 'had',\n prt: 'had',\n pres: 'has'\n },\n hear: {\n pst: '_d',\n prt: '_d'\n },\n hide: {\n prt: 'hidden',\n pst: 'hid'\n },\n hit: {\n prt: '_'\n },\n hold: {\n pst: 'held',\n prt: 'held'\n },\n hurt: {\n pst: '_',\n prt: '_'\n },\n ice: {\n g: 'icing',\n pst: '_d'\n },\n imply: {\n pst: 'implied',\n pres: 'implies'\n },\n is: {\n a: '',\n g: 'being',\n pst: 'was',\n pres: '_'\n },\n keep: {\n prt: 'kept'\n },\n kneel: {\n prt: 'knelt'\n },\n know: {\n prt: '_n'\n },\n lay: {\n pst: 'laid',\n prt: 'laid'\n },\n lead: {\n pst: 'led',\n prt: 'led'\n },\n leap: {\n prt: '_t'\n },\n leave: {\n pst: 'left',\n prt: 'left'\n },\n lend: {\n prt: 'lent'\n },\n lie: {\n g: 'lying',\n pst: 'lay'\n },\n light: {\n pst: 'lit',\n prt: 'lit'\n },\n log: {\n g: '_ging',\n pst: '_ged'\n },\n loose: {\n prt: 'lost'\n },\n lose: {\n g: 'losing',\n pst: 'lost'\n },\n make: {\n pst: 'made',\n prt: 'made'\n },\n mean: {\n pst: '_t',\n prt: '_t'\n },\n meet: {\n a: '_er',\n g: '_ing',\n pst: 'met',\n prt: 'met'\n },\n miss: {\n pres: '_'\n },\n name: {\n g: 'naming'\n },\n patrol: {\n g: '_ling',\n pst: '_led'\n },\n pay: {\n pst: 'paid',\n prt: 'paid'\n },\n prove: {\n prt: '_n'\n },\n puke: {\n g: 'puking'\n },\n put: {\n prt: '_'\n },\n quit: {\n prt: '_'\n },\n read: {\n pst: '_',\n prt: '_'\n },\n ride: {\n prt: 'ridden'\n },\n reside: {\n pst: '_d'\n },\n ring: {\n pst: 'rang',\n prt: 'rung'\n },\n rise: {\n fut: 'will have _n',\n g: 'rising',\n prt: '_n',\n pst: 'rose',\n pluperf: 'had _n'\n },\n rub: {\n g: '_bing',\n pst: '_bed'\n },\n run: {\n g: '_ning',\n prt: '_',\n pst: 'ran'\n },\n say: {\n pst: 'said',\n prt: 'said',\n pres: '_s'\n },\n seat: {\n pst: 'sat',\n prt: 'sat'\n },\n see: {\n g: '_ing',\n prt: '_n',\n pst: 'saw'\n },\n seek: {\n prt: 'sought'\n },\n sell: {\n pst: 'sold',\n prt: 'sold'\n },\n send: {\n prt: 'sent'\n },\n set: {\n prt: '_'\n },\n sew: {\n prt: '_n'\n },\n shake: {\n prt: '_n'\n },\n shave: {\n prt: '_d'\n },\n shed: {\n g: '_ding',\n pst: '_',\n pres: '_s'\n },\n shine: {\n pst: 'shone',\n prt: 'shone'\n },\n shoot: {\n pst: 'shot',\n prt: 'shot'\n },\n show: {\n pst: '_ed'\n },\n shut: {\n prt: '_'\n },\n sing: {\n prt: 'sung',\n pst: 'sang'\n },\n sink: {\n pst: 'sank',\n pluperf: 'had sunk'\n },\n sit: {\n pst: 'sat'\n },\n ski: {\n pst: '_ied'\n },\n slay: {\n prt: 'slain'\n },\n sleep: {\n prt: 'slept'\n },\n slide: {\n pst: 'slid',\n prt: 'slid'\n },\n smash: {\n pres: '_es'\n },\n sneak: {\n prt: 'snuck'\n },\n speak: {\n fut: 'will have spoken',\n prt: 'spoken',\n pst: 'spoke',\n perf: 'have spoken',\n pluperf: 'had spoken'\n },\n speed: {\n prt: 'sped'\n },\n spend: {\n prt: 'spent'\n },\n spill: {\n prt: '_ed',\n pst: 'spilt'\n },\n spin: {\n g: '_ning',\n pst: 'spun',\n prt: 'spun'\n },\n spit: {\n prt: 'spat'\n },\n split: {\n prt: '_'\n },\n spread: {\n pst: '_'\n },\n spring: {\n prt: 'sprung'\n },\n stand: {\n pst: 'stood'\n },\n steal: {\n a: '_er',\n pst: 'stole'\n },\n stick: {\n pst: 'stuck'\n },\n sting: {\n pst: 'stung'\n },\n stink: {\n pst: 'stunk',\n prt: 'stunk'\n },\n stream: {\n a: '_er'\n },\n strew: {\n prt: '_n'\n },\n strike: {\n g: 'striking',\n pst: 'struck'\n },\n suit: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n sware: {\n prt: 'sworn'\n },\n swear: {\n pst: 'swore'\n },\n sweep: {\n prt: 'swept'\n },\n swim: {\n g: '_ming',\n pst: 'swam'\n },\n swing: {\n pst: 'swung'\n },\n take: {\n fut: 'will have _n',\n pst: 'took',\n perf: 'have _n',\n pluperf: 'had _n'\n },\n teach: {\n pst: 'taught',\n pres: '_es'\n },\n tear: {\n pst: 'tore'\n },\n tell: {\n pst: 'told'\n },\n think: {\n pst: 'thought'\n },\n thrive: {\n prt: '_d'\n },\n tie: {\n g: 'tying',\n pst: '_d'\n },\n undergo: {\n prt: '_ne'\n },\n understand: {\n pst: 'understood'\n },\n upset: {\n prt: '_'\n },\n wait: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n wake: {\n pst: 'woke'\n },\n wear: {\n pst: 'wore'\n },\n weave: {\n prt: 'woven'\n },\n wed: {\n pst: 'wed'\n },\n weep: {\n prt: 'wept'\n },\n win: {\n g: '_ning',\n pst: 'won'\n },\n wind: {\n prt: 'wound'\n },\n withdraw: {\n pst: 'withdrew'\n },\n wring: {\n prt: 'wrung'\n },\n write: {\n g: 'writing',\n prt: 'written',\n pst: 'wrote'\n }\n}; //uncompress our ad-hoc compression scheme\n\nvar keys = Object.keys(conjugations);\n\nvar _loop = function _loop(i) {\n var inf = keys[i];\n var _final = {};\n Object.keys(conjugations[inf]).forEach(function (key) {\n var str = conjugations[inf][key]; //swap-in infinitives for '_'\n\n str = str.replace('_', inf);\n var full = mapping$1[key];\n _final[full] = str;\n }); //over-write original\n\n conjugations[inf] = _final;\n};\n\nfor (var i = 0; i < keys.length; i++) {\n _loop(i);\n}\n\nvar conjugations_1 = conjugations;\n\nvar endsWith$1 = {\n b: [{\n reg: /([^aeiou][aeiou])b$/i,\n repl: {\n pr: '$1bs',\n pa: '$1bbed',\n gr: '$1bbing'\n }\n }],\n d: [{\n reg: /(end)$/i,\n repl: {\n pr: '$1s',\n pa: 'ent',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(eed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(ed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ded',\n ar: '$1der',\n gr: '$1ding'\n }\n }, {\n reg: /([^aeiou][ou])d$/i,\n repl: {\n pr: '$1ds',\n pa: '$1dded',\n gr: '$1dding'\n }\n }],\n e: [{\n reg: /(eave)$/i,\n repl: {\n pr: '$1s',\n pa: '$1d',\n gr: 'eaving',\n ar: '$1r'\n }\n }, {\n reg: /(ide)$/i,\n repl: {\n pr: '$1s',\n pa: 'ode',\n gr: 'iding',\n ar: 'ider'\n }\n }, {\n //shake\n reg: /(t|sh?)(ake)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1ook',\n gr: '$1aking',\n ar: '$1$2r'\n }\n }, {\n //awake\n reg: /w(ake)$/i,\n repl: {\n pr: 'w$1s',\n pa: 'woke',\n gr: 'waking',\n ar: 'w$1r'\n }\n }, {\n //make\n reg: /m(ake)$/i,\n repl: {\n pr: 'm$1s',\n pa: 'made',\n gr: 'making',\n ar: 'm$1r'\n }\n }, {\n reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing' // prt: '$1en',\n\n }\n }, {\n reg: /([bd]l)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(om)e$/i,\n repl: {\n pr: '$1es',\n pa: 'ame',\n gr: '$1ing'\n }\n }],\n g: [{\n reg: /([^aeiou][ou])g$/i,\n repl: {\n pr: '$1gs',\n pa: '$1gged',\n gr: '$1gging'\n }\n }],\n h: [{\n reg: /(..)([cs]h)$/i,\n repl: {\n pr: '$1$2es',\n pa: '$1$2ed',\n gr: '$1$2ing'\n }\n }],\n k: [{\n reg: /(ink)$/i,\n repl: {\n pr: '$1s',\n pa: 'unk',\n gr: '$1ing',\n ar: '$1er'\n }\n }],\n m: [{\n reg: /([^aeiou][aeiou])m$/i,\n repl: {\n pr: '$1ms',\n pa: '$1mmed',\n gr: '$1mming'\n }\n }],\n n: [{\n reg: /(en)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n p: [{\n reg: /(e)(ep)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1pt',\n gr: '$1$2ing',\n ar: '$1$2er'\n }\n }, {\n reg: /([^aeiou][aeiou])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1pped',\n gr: '$1pping'\n }\n }, {\n reg: /([aeiu])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1p',\n gr: '$1pping'\n }\n }],\n r: [{\n reg: /([td]er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n s: [{\n reg: /(ish|tch|ess)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n t: [{\n reg: /(ion|end|e[nc]t)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(.eat)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /([aeiu])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1t',\n gr: '$1tting'\n }\n }, {\n reg: /([^aeiou][aeiou])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1tted',\n gr: '$1tting'\n }\n }],\n w: [{\n reg: /(.llow)$/i,\n //follow, allow\n repl: {\n pr: '$1s',\n pa: '$1ed'\n }\n }, {\n reg: /(..)(ow)$/i,\n //grow\n repl: {\n pr: '$1$2s',\n pa: '$1ew',\n gr: '$1$2ing',\n prt: '$1$2n'\n }\n }],\n y: [{\n reg: /(i|f|rr)y$/i,\n repl: {\n pr: '$1ies',\n pa: '$1ied',\n gr: '$1ying'\n }\n }],\n z: [{\n reg: /([aeiou]zz)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }]\n};\nvar suffixes$1 = endsWith$1;\n\nvar posMap = {\n pr: 'PresentTense',\n pa: 'PastTense',\n gr: 'Gerund',\n prt: 'Participle',\n ar: 'Actor'\n};\n\nvar doTransform = function doTransform(str, obj) {\n var found = {};\n var keys = Object.keys(obj.repl);\n\n for (var i = 0; i < keys.length; i += 1) {\n var pos = keys[i];\n found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]);\n }\n\n return found;\n}; //look at the end of the word for clues\n\n\nvar checkSuffix = function checkSuffix() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var c = str[str.length - 1];\n\n if (suffixes$1.hasOwnProperty(c) === true) {\n for (var r = 0; r < suffixes$1[c].length; r += 1) {\n var reg = suffixes$1[c][r].reg;\n\n if (reg.test(str) === true) {\n return doTransform(str, suffixes$1[c][r]);\n }\n }\n }\n\n return {};\n};\n\nvar _01Suffixes = checkSuffix;\n\n//non-specifc, 'hail-mary' transforms from infinitive, into other forms\nvar hasY = /[bcdfghjklmnpqrstvwxz]y$/;\nvar generic = {\n Gerund: function Gerund(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf.replace(/e$/, 'ing');\n }\n\n return inf + 'ing';\n },\n PresentTense: function PresentTense(inf) {\n if (inf.charAt(inf.length - 1) === 's') {\n return inf + 'es';\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ies';\n }\n\n return inf + 's';\n },\n PastTense: function PastTense(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf + 'd';\n }\n\n if (inf.substr(-2) === 'ed') {\n return inf;\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ied';\n }\n\n return inf + 'ed';\n }\n};\nvar _02Generic = generic;\n\n//we assume the input word is a proper infinitive\n\nvar conjugate$2 = function conjugate() {\n var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var found = {}; // 1. look at irregulars\n //the lexicon doesn't pass this in\n\n if (world && world.irregulars) {\n if (world.irregulars.verbs.hasOwnProperty(inf) === true) {\n found = Object.assign({}, world.irregulars.verbs[inf]);\n }\n } //2. rule-based regex\n\n\n found = Object.assign({}, _01Suffixes(inf), found); //3. generic transformations\n //'buzzing'\n\n if (found.Gerund === undefined) {\n found.Gerund = _02Generic.Gerund(inf);\n } //'buzzed'\n\n\n if (found.PastTense === undefined) {\n found.PastTense = _02Generic.PastTense(inf);\n } //'buzzes'\n\n\n if (found.PresentTense === undefined) {\n found.PresentTense = _02Generic.PresentTense(inf);\n }\n\n return found;\n};\n\nvar conjugate_1$1 = conjugate$2; // console.log(conjugate('bake'))\n\n//turn 'quick' into 'quickest'\nvar do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/];\nvar dont_rules$1 = [/ary$/];\nvar irregulars$5 = {\n nice: 'nicest',\n late: 'latest',\n hard: 'hardest',\n inner: 'innermost',\n outer: 'outermost',\n far: 'furthest',\n worse: 'worst',\n bad: 'worst',\n good: 'best',\n big: 'biggest',\n large: 'largest'\n};\nvar transforms$2 = [{\n reg: /y$/i,\n repl: 'iest'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1ttest'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1dest'\n}, {\n reg: /nge$/i,\n repl: 'ngest'\n}, {\n reg: /([aeiou])te$/i,\n repl: '$1test'\n}];\n\nvar to_superlative = function to_superlative(str) {\n //irregulars\n if (irregulars$5.hasOwnProperty(str)) {\n return irregulars$5[str];\n } //known transforms\n\n\n for (var i = 0; i < transforms$2.length; i++) {\n if (transforms$2[i].reg.test(str)) {\n return str.replace(transforms$2[i].reg, transforms$2[i].repl);\n }\n } //dont-rules\n\n\n for (var _i = 0; _i < dont_rules$1.length; _i++) {\n if (dont_rules$1[_i].test(str) === true) {\n return null;\n }\n } //do-rules\n\n\n for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) {\n if (do_rules$1[_i2].test(str) === true) {\n if (str.charAt(str.length - 1) === 'e') {\n return str + 'st';\n }\n\n return str + 'est';\n }\n }\n\n return str + 'est';\n};\n\nvar toSuperlative = to_superlative;\n\n//turn 'quick' into 'quickly'\nvar do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/];\nvar dont_rules = [/ary$/, /ous$/];\nvar irregulars$4 = {\n grey: 'greyer',\n gray: 'grayer',\n green: 'greener',\n yellow: 'yellower',\n red: 'redder',\n good: 'better',\n well: 'better',\n bad: 'worse',\n sad: 'sadder',\n big: 'bigger'\n};\nvar transforms$1 = [{\n reg: /y$/i,\n repl: 'ier'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1tter'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1der'\n}, {\n reg: /nge$/i,\n repl: 'nger'\n}];\n\nvar to_comparative = function to_comparative(str) {\n //known-irregulars\n if (irregulars$4.hasOwnProperty(str)) {\n return irregulars$4[str];\n } //known-transforms\n\n\n for (var i = 0; i < transforms$1.length; i++) {\n if (transforms$1[i].reg.test(str) === true) {\n return str.replace(transforms$1[i].reg, transforms$1[i].repl);\n }\n } //dont-patterns\n\n\n for (var _i = 0; _i < dont_rules.length; _i++) {\n if (dont_rules[_i].test(str) === true) {\n return null;\n }\n } //do-patterns\n\n\n for (var _i2 = 0; _i2 < do_rules.length; _i2++) {\n if (do_rules[_i2].test(str) === true) {\n return str + 'er';\n }\n } //easy-one\n\n\n if (/e$/.test(str) === true) {\n return str + 'r';\n }\n\n return str + 'er';\n};\n\nvar toComparative = to_comparative;\n\nvar fns = {\n toSuperlative: toSuperlative,\n toComparative: toComparative\n};\n/** conjugate an adjective into other forms */\n\nvar conjugate$1 = function conjugate(w) {\n var res = {}; // 'greatest'\n\n var sup = fns.toSuperlative(w);\n\n if (sup) {\n res.Superlative = sup;\n } // 'greater'\n\n\n var comp = fns.toComparative(w);\n\n if (comp) {\n res.Comparative = comp;\n }\n\n return res;\n};\n\nvar adjectives$2 = conjugate$1;\n\n/** patterns for turning 'bus' to 'buses'*/\nvar suffixes = {\n a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']],\n e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']],\n f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']],\n i: [[/(octop|vir)i$/i, '$1i']],\n m: [[/([ti])um$/i, '$1a']],\n n: [[/^(oxen)$/i, '$1']],\n o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']],\n s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']],\n x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']],\n y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n z: [[/(quiz)$/i, '$1zes']]\n};\nvar _rules$2 = suffixes;\n\nvar addE = /(x|ch|sh|s|z)$/;\n\nvar trySuffix = function trySuffix(str) {\n var c = str[str.length - 1];\n\n if (_rules$2.hasOwnProperty(c) === true) {\n for (var i = 0; i < _rules$2[c].length; i += 1) {\n var reg = _rules$2[c][i][0];\n\n if (reg.test(str) === true) {\n return str.replace(reg, _rules$2[c][i][1]);\n }\n }\n }\n\n return null;\n};\n/** Turn a singular noun into a plural\n * assume the given string is singular\n */\n\n\nvar pluralize = function pluralize() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var irregulars = world.irregulars.nouns; // check irregulars list\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //we have some rules to try-out\n\n\n var plural = trySuffix(str);\n\n if (plural !== null) {\n return plural;\n } //like 'church'\n\n\n if (addE.test(str)) {\n return str + 'es';\n } // ¯\\_(ツ)_/¯\n\n\n return str + 's';\n};\n\nvar toPlural = pluralize;\n\n//patterns for turning 'dwarves' to 'dwarf'\nvar _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],\n[/(eas)es$/i, '$1e'], //diseases\n[/(..[aeiou]s)es$/i, '$1'], //geniouses\n[/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']];\n\nvar invertObj = function invertObj(obj) {\n return Object.keys(obj).reduce(function (h, k) {\n h[obj[k]] = k;\n return h;\n }, {});\n};\n\nvar toSingular = function toSingular(str, world) {\n var irregulars = world.irregulars.nouns;\n var invert = invertObj(irregulars); //(not very efficient)\n // check irregulars list\n\n if (invert.hasOwnProperty(str)) {\n return invert[str];\n } // go through our regexes\n\n\n for (var i = 0; i < _rules$1.length; i++) {\n if (_rules$1[i][0].test(str) === true) {\n str = str.replace(_rules$1[i][0], _rules$1[i][1]);\n return str;\n }\n }\n\n return str;\n};\n\nvar toSingular_1 = toSingular;\n\n//rules for turning a verb into infinitive form\nvar rules = {\n Participle: [{\n reg: /own$/i,\n to: 'ow'\n }, {\n reg: /(.)un([g|k])$/i,\n to: '$1in$2'\n }],\n Actor: [{\n reg: /(er)er$/i,\n to: '$1'\n }],\n PresentTense: [{\n reg: /(..)(ies)$/i,\n to: '$1y'\n }, {\n reg: /(tch|sh)es$/i,\n to: '$1'\n }, {\n reg: /(ss|zz)es$/i,\n to: '$1'\n }, {\n reg: /([tzlshicgrvdnkmu])es$/i,\n to: '$1e'\n }, {\n reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,\n to: '$1'\n }, {\n reg: /(ow)s$/i,\n to: '$1'\n }, {\n reg: /(op)s$/i,\n to: '$1'\n }, {\n reg: /([eirs])ts$/i,\n to: '$1t'\n }, {\n reg: /(ll)s$/i,\n to: '$1'\n }, {\n reg: /(el)s$/i,\n to: '$1'\n }, {\n reg: /(ip)es$/i,\n to: '$1e'\n }, {\n reg: /ss$/i,\n to: 'ss'\n }, {\n reg: /s$/i,\n to: ''\n }],\n Gerund: [{\n //popping -> pop\n reg: /(..)(p|d|t|g){2}ing$/i,\n to: '$1$2'\n }, {\n //fuzzing -> fuzz\n reg: /(ll|ss|zz)ing$/i,\n to: '$1'\n }, {\n reg: /([^aeiou])ying$/i,\n to: '$1y'\n }, {\n reg: /([^ae]i.)ing$/i,\n to: '$1e'\n }, {\n //eating, reading\n reg: /(ea[dklnrtv])ing$/i,\n to: '$1'\n }, {\n //washing -> wash\n reg: /(ch|sh)ing$/i,\n to: '$1'\n }, //soft-e forms:\n {\n //z : hazing (not buzzing)\n reg: /(z)ing$/i,\n to: '$1e'\n }, {\n //a : baking, undulating\n reg: /(a[gdkvtc])ing$/i,\n to: '$1e'\n }, {\n //u : conjuring, tubing\n reg: /(u[rtcbn])ing$/i,\n to: '$1e'\n }, {\n //o : forboding, poking, hoping, boring (not hooping)\n reg: /([^o]o[bdknprv])ing$/i,\n to: '$1e'\n }, {\n //ling : tingling, wrinkling, circling, scrambling, bustling\n reg: /([tbckg]l)ing$/i,\n //dp\n to: '$1e'\n }, {\n //cing : bouncing, denouncing\n reg: /(c|s)ing$/i,\n //dp\n to: '$1e'\n }, // {\n // //soft-e :\n // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i,\n // to: '$1e',\n // },\n {\n //fallback\n reg: /(..)ing$/i,\n to: '$1'\n }],\n PastTense: [{\n reg: /(ued)$/i,\n to: 'ue'\n }, {\n reg: /a([^aeiouy])ed$/i,\n to: 'a$1e'\n }, {\n reg: /([aeiou]zz)ed$/i,\n to: '$1'\n }, {\n reg: /(e|i)lled$/i,\n to: '$1ll'\n }, {\n reg: /(.)(sh|ch)ed$/i,\n to: '$1$2'\n }, {\n reg: /(tl|gl)ed$/i,\n to: '$1e'\n }, {\n reg: /(um?pt?)ed$/i,\n to: '$1'\n }, {\n reg: /(ss)ed$/i,\n to: '$1'\n }, {\n reg: /pped$/i,\n to: 'p'\n }, {\n reg: /tted$/i,\n to: 't'\n }, {\n reg: /(..)gged$/i,\n to: '$1g'\n }, {\n reg: /(..)lked$/i,\n to: '$1lk'\n }, {\n reg: /([^aeiouy][aeiou])ked$/i,\n to: '$1ke'\n }, {\n reg: /(.[aeiou])led$/i,\n to: '$1l'\n }, {\n reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,\n to: '$1$2'\n }, {\n reg: /(.ut)ed$/i,\n to: '$1e'\n }, {\n reg: /(.pt)ed$/i,\n to: '$1'\n }, {\n reg: /(us)ed$/i,\n to: '$1e'\n }, {\n reg: /(dd)ed$/i,\n to: '$1'\n }, {\n reg: /(..[^aeiouy])ed$/i,\n to: '$1e'\n }, {\n reg: /(..)ied$/i,\n to: '$1y'\n }, {\n reg: /(.o)ed$/i,\n to: '$1o'\n }, {\n reg: /(..i)ed$/i,\n to: '$1'\n }, {\n reg: /(.a[^aeiou])ed$/i,\n to: '$1'\n }, {\n //owed, aced\n reg: /([aeiou][^aeiou])ed$/i,\n to: '$1e'\n }, {\n reg: /([rl])ew$/i,\n to: '$1ow'\n }, {\n reg: /([pl])t$/i,\n to: '$1t'\n }]\n};\nvar _transform = rules;\n\nvar guessVerb = {\n Gerund: ['ing'],\n Actor: ['erer'],\n Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'],\n PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'],\n PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns']\n}; //flip it into a lookup object\n\nguessVerb = Object.keys(guessVerb).reduce(function (h, k) {\n guessVerb[k].forEach(function (a) {\n return h[a] = k;\n });\n return h;\n}, {});\nvar _guess = guessVerb;\n\n/** it helps to know what we're conjugating from */\n\nvar guessTense = function guessTense(str) {\n var three = str.substr(str.length - 3);\n\n if (_guess.hasOwnProperty(three) === true) {\n return _guess[three];\n }\n\n var two = str.substr(str.length - 2);\n\n if (_guess.hasOwnProperty(two) === true) {\n return _guess[two];\n }\n\n var one = str.substr(str.length - 1);\n\n if (one === 's') {\n return 'PresentTense';\n }\n\n return null;\n};\n\nvar toInfinitive$1 = function toInfinitive(str, world, tense) {\n if (!str) {\n return '';\n } //1. look at known irregulars\n\n\n if (world.words.hasOwnProperty(str) === true) {\n var irregs = world.irregulars.verbs;\n var keys = Object.keys(irregs);\n\n for (var i = 0; i < keys.length; i++) {\n var forms = Object.keys(irregs[keys[i]]);\n\n for (var o = 0; o < forms.length; o++) {\n if (str === irregs[keys[i]][forms[o]]) {\n return keys[i];\n }\n }\n }\n } // give'r!\n\n\n tense = tense || guessTense(str);\n\n if (tense && _transform[tense]) {\n for (var _i = 0; _i < _transform[tense].length; _i++) {\n var rule = _transform[tense][_i];\n\n if (rule.reg.test(str) === true) {\n // console.log(rule.reg)\n return str.replace(rule.reg, rule.to);\n }\n }\n }\n\n return str;\n};\n\nvar toInfinitive_1$1 = toInfinitive$1;\n\nvar irregulars$3 = {\n nouns: plurals,\n verbs: conjugations_1\n}; //these behaviours are configurable & shared across some plugins\n\nvar transforms = {\n conjugate: conjugate_1$1,\n adjectives: adjectives$2,\n toPlural: toPlural,\n toSingular: toSingular_1,\n toInfinitive: toInfinitive_1$1\n};\nvar _isVerbose = false;\n/** all configurable linguistic data */\n\nvar World = /*#__PURE__*/function () {\n function World() {\n _classCallCheck(this, World);\n\n // quiet these properties from a console.log\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'hasCompound', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'irregulars', {\n enumerable: false,\n value: irregulars$3,\n writable: true\n });\n Object.defineProperty(this, 'tags', {\n enumerable: false,\n value: Object.assign({}, tags),\n writable: true\n });\n Object.defineProperty(this, 'transforms', {\n enumerable: false,\n value: transforms,\n writable: true\n });\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true\n }); // cache our abbreviations for our sentence-parser\n\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: {}\n }\n }); // add our compressed data to lexicon\n\n this.words = unpack_1.buildOut(this); // add our irregulars to lexicon\n\n addIrregulars_1(this);\n }\n /** more logs for debugging */\n\n\n _createClass(World, [{\n key: \"verbose\",\n value: function verbose(bool) {\n _isVerbose = bool;\n return this;\n }\n }, {\n key: \"isVerbose\",\n value: function isVerbose() {\n return _isVerbose;\n }\n /** put new words into our lexicon, properly */\n\n }, {\n key: \"addWords\",\n value: function addWords(wordObj) {\n // clean them up a bit\n var cleaned = {};\n Object.keys(wordObj).forEach(function (w) {\n var tag = wordObj[w];\n w = w.toLowerCase().trim();\n cleaned[w] = tag;\n });\n unpack_1.addWords(cleaned, this.words, this);\n }\n /** add new custom conjugations */\n\n }, {\n key: \"addConjugations\",\n value: function addConjugations(obj) {\n Object.assign(this.irregulars.verbs, obj);\n return this;\n }\n /** add new custom plural/singular pairs */\n\n }, {\n key: \"addPlurals\",\n value: function addPlurals(obj) {\n Object.assign(this.irregulars.nouns, obj);\n return this;\n }\n /** extend the compromise tagset */\n\n }, {\n key: \"addTags\",\n value: function addTags(tags) {\n tags = Object.assign({}, tags);\n this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags\n\n this.tags = inference(this.tags);\n return this;\n }\n /** call methods after tagger runs */\n\n }, {\n key: \"postProcess\",\n value: function postProcess(fn) {\n this.taggers.push(fn);\n return this;\n }\n /** helper method for logging + debugging */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length,\n plurals: Object.keys(this.irregulars.nouns).length,\n conjugations: Object.keys(this.irregulars.verbs).length,\n compounds: Object.keys(this.hasCompound).length,\n postProcessors: this.taggers.length\n };\n }\n }]);\n\n return World;\n}(); // ¯\\_(:/)_/¯\n\n\nvar clone = function clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n/** produce a deep-copy of all lingustic data */\n\n\nWorld.prototype.clone = function () {\n var w2 = new World(); // these are simple to copy:\n\n w2.words = Object.assign({}, this.words);\n w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested:\n\n w2.irregulars = clone(this.irregulars);\n w2.tags = clone(this.tags); // these are functions\n\n w2.transforms = this.transforms;\n w2.taggers = this.taggers;\n return w2;\n};\n\nvar World_1 = World;\n\n/** return the root, first document */\n\nvar _01Utils = createCommonjsModule(function (module, exports) {\n exports.all = function () {\n return this.parents()[0] || this;\n };\n /** return the previous result */\n\n\n exports.parent = function () {\n if (this.from) {\n return this.from;\n }\n\n return this;\n };\n /** return a list of all previous results */\n\n\n exports.parents = function (n) {\n var arr = [];\n\n var addParent = function addParent(doc) {\n if (doc.from) {\n arr.push(doc.from);\n addParent(doc.from);\n }\n };\n\n addParent(this);\n arr = arr.reverse();\n\n if (typeof n === 'number') {\n return arr[n];\n }\n\n return arr;\n };\n /** deep-copy the document, so that no references remain */\n\n\n exports.clone = function (doShallow) {\n var list = this.list.map(function (ts) {\n return ts.clone(doShallow);\n });\n var tmp = this.buildFrom(list);\n return tmp;\n };\n /** how many seperate terms does the document have? */\n\n\n exports.wordCount = function () {\n return this.list.reduce(function (count, p) {\n count += p.wordCount();\n return count;\n }, 0);\n };\n\n exports.wordcount = exports.wordCount;\n /** turn on logging for decision-debugging */\n // exports.verbose = function(bool) {\n // if (bool === undefined) {\n // bool = true\n // }\n // this.world.verbose = bool\n // }\n});\n\n/** use only the first result(s) */\n\nvar _02Accessors = createCommonjsModule(function (module, exports) {\n exports.first = function (n) {\n if (n === undefined) {\n return this.get(0);\n }\n\n return this.slice(0, n);\n };\n /** use only the last result(s) */\n\n\n exports.last = function (n) {\n if (n === undefined) {\n return this.get(this.list.length - 1);\n }\n\n var end = this.list.length;\n return this.slice(end - n, end);\n };\n /** grab a given subset of the results*/\n\n\n exports.slice = function (start, end) {\n var list = this.list.slice(start, end);\n return this.buildFrom(list);\n };\n /* grab nth result */\n\n\n exports.eq = function (n) {\n var p = this.list[n];\n\n if (p === undefined) {\n return this.buildFrom([]);\n }\n\n return this.buildFrom([p]);\n };\n\n exports.get = exports.eq;\n /** grab term[0] for every match */\n\n exports.firstTerms = function () {\n return this.match('^.');\n };\n\n exports.firstTerm = exports.firstTerms;\n /** grab the last term for every match */\n\n exports.lastTerms = function () {\n return this.match('.$');\n };\n\n exports.lastTerm = exports.lastTerms;\n /** return a flat array of term objects */\n\n exports.termList = function (num) {\n var arr = []; //'reduce' but faster\n\n for (var i = 0; i < this.list.length; i++) {\n var terms = this.list[i].terms();\n\n for (var o = 0; o < terms.length; o++) {\n arr.push(terms[o]); //support .termList(4)\n\n if (num !== undefined && arr[num] !== undefined) {\n return arr[num];\n }\n }\n }\n\n return arr;\n };\n /* grab named capture group terms as object */\n\n\n var getGroups = function getGroups(doc) {\n var res = {};\n var allGroups = {};\n\n var _loop = function _loop(i) {\n var phrase = doc.list[i];\n var groups = Object.keys(phrase.groups).map(function (k) {\n return phrase.groups[k];\n });\n\n for (var j = 0; j < groups.length; j++) {\n var _groups$j = groups[j],\n group = _groups$j.group,\n start = _groups$j.start,\n length = _groups$j.length;\n\n if (!allGroups[group]) {\n allGroups[group] = [];\n }\n\n allGroups[group].push(phrase.buildFrom(start, length));\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n var keys = Object.keys(allGroups);\n\n for (var _i = 0; _i < keys.length; _i++) {\n var key = keys[_i];\n res[key] = doc.buildFrom(allGroups[key]);\n }\n\n return res;\n };\n /** lookup a named-group, by its name */\n\n\n var getOneName = function getOneName(doc, name) {\n var arr = [];\n\n var _loop2 = function _loop2(i) {\n var phrase = doc.list[i];\n var keys = Object.keys(phrase.groups);\n keys = keys.filter(function (id) {\n return phrase.groups[id].group === name;\n });\n keys.forEach(function (id) {\n arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length));\n });\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop2(i);\n }\n\n return doc.buildFrom(arr);\n };\n /** grab named capture group results */\n\n\n exports.groups = function (target) {\n if (target === undefined) {\n return getGroups(this);\n }\n\n if (typeof target === 'number') {\n target = String(target);\n }\n\n return getOneName(this, target) || this.buildFrom([]);\n };\n\n exports.group = exports.groups;\n /** get the full-sentence each phrase belongs to */\n\n exports.sentences = function (n) {\n var arr = [];\n this.list.forEach(function (p) {\n arr.push(p.fullSentence());\n });\n\n if (typeof n === 'number') {\n return this.buildFrom([arr[n]]);\n }\n\n return this.buildFrom(arr);\n };\n\n exports.sentence = exports.sentences;\n});\n\n// cache the easier conditions up-front\nvar cacheRequired$1 = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: needTags,\n words: needWords\n };\n}; // try to pre-fail as many matches as possible, without doing them\n\n\nvar failFast = function failFast(doc, regs) {\n if (doc._cache && doc._cache.set === true) {\n var _cacheRequired = cacheRequired$1(regs),\n words = _cacheRequired.words,\n tags = _cacheRequired.tags; //check required words\n\n\n for (var i = 0; i < words.length; i++) {\n if (doc._cache.words[words[i]] === undefined) {\n return false;\n }\n } //check required tags\n\n\n for (var _i = 0; _i < tags.length; _i++) {\n if (doc._cache.tags[tags[_i]] === undefined) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nvar _failFast = failFast;\n\nvar _03Match = createCommonjsModule(function (module, exports) {\n /** return a new Doc, with this one as a parent */\n exports.match = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // support '0' shorthand for named-groups\n if (typeof opts === 'string' || typeof opts === 'number' || opts === null) {\n opts = {\n group: opts\n };\n } //parse-up the input expression\n\n\n var regs = matchSyntax(reg, opts);\n\n if (regs.length === 0) {\n return this.buildFrom([]);\n } //check our cache, if it exists\n\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.match(regs));\n }, []); // support returning named groups\n\n if (opts.group !== undefined && opts.group !== null && opts.group !== '') {\n return this.buildFrom(matches).groups(opts.group);\n }\n\n return this.buildFrom(matches);\n };\n /** return all results except for this */\n\n\n exports.not = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n //parse-up the input expression\n var regs = matchSyntax(reg, opts); //if it's empty, return them all!\n\n if (regs.length === 0 || _failFast(this, regs) === false) {\n return this;\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.not(regs));\n }, []);\n return this.buildFrom(matches);\n };\n /** return only the first match */\n\n\n exports.matchOne = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //check our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n for (var i = 0; i < this.list.length; i++) {\n var match = this.list[i].match(regs, true);\n return this.buildFrom(match);\n }\n\n return this.buildFrom([]);\n };\n /** return each current phrase, only if it contains this match */\n\n\n exports[\"if\"] = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n var found = this.list.filter(function (p) {\n return p.has(regs) === true;\n });\n return this.buildFrom(found);\n };\n /** Filter-out any current phrases that have this match*/\n\n\n exports.ifNo = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts);\n var found = this.list.filter(function (p) {\n return p.has(regs) === false;\n });\n return this.buildFrom(found);\n };\n /**Return a boolean if this match exists */\n\n\n exports.has = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return false;\n }\n\n return this.list.some(function (p) {\n return p.has(regs) === true;\n });\n };\n /** match any terms after our matches, within the sentence */\n\n\n exports.lookAhead = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookAhead(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookAfter = exports.lookAhead;\n /** match any terms before our matches, within the sentence */\n\n exports.lookBehind = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookBehind(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookBefore = exports.lookBehind;\n /** return all terms before a match, in each phrase */\n\n exports.before = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var ids = p.terms().map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //nothing is before a first-term match\n\n if (index === 0 || index === -1) {\n return null;\n }\n\n return p.buildFrom(p.start, index);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return all terms after a match, in each phrase */\n\n\n exports.after = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var terms = p.terms();\n var ids = terms.map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //skip if nothing is after it\n\n if (index === -1 || !terms[index + m.length]) {\n return null;\n } //create the new phrase, after our match.\n\n\n var id = terms[index + m.length].id;\n var len = p.length - index - m.length;\n return p.buildFrom(id, len);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return only results with this match afterwards */\n\n\n exports.hasAfter = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookAfter(reg, opts).found;\n });\n };\n /** return only results with this match before it */\n\n\n exports.hasBefore = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookBefore(reg, opts).found;\n });\n };\n});\n\n/** apply a tag, or tags to all terms */\nvar tagTerms = function tagTerms(tag, doc, safe, reason) {\n var tagList = [];\n\n if (typeof tag === 'string') {\n tagList = tag.split(' ');\n } // doc.parents()[0].reasons.push(reason)\n //do indepenent tags for each term:\n\n\n doc.list.forEach(function (p) {\n var terms = p.terms(); // tagSafe - apply only to fitting terms\n\n if (safe === true) {\n terms = terms.filter(function (t) {\n return t.canBe(tag, doc.world);\n });\n }\n\n terms.forEach(function (t, i) {\n //fancy version:\n if (tagList.length > 1) {\n if (tagList[i] && tagList[i] !== '.') {\n t.tag(tagList[i], reason, doc.world);\n }\n } else {\n //non-fancy version (same tag for all terms)\n t.tag(tag, reason, doc.world);\n }\n });\n });\n return;\n};\n\nvar _setTag = tagTerms;\n\n/** Give all terms the given tag */\n\nvar tag = function tag(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, false, why);\n return this;\n};\n/** Only apply tag to terms if it is consistent with current tags */\n\n\nvar tagSafe = function tagSafe(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, true, why);\n return this;\n};\n/** Remove this term from the given terms */\n\n\nvar unTag = function unTag(tags, why) {\n var _this = this;\n\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t.unTag(tags, why, _this.world);\n });\n });\n return this;\n};\n/** return only the terms that can be this tag*/\n\n\nvar canBe = function canBe(tag) {\n if (!tag) {\n return this;\n }\n\n var world = this.world;\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.canBe(tag, world));\n }, []);\n return this.buildFrom(matches);\n};\n\nvar _04Tag = {\n tag: tag,\n tagSafe: tagSafe,\n unTag: unTag,\n canBe: canBe\n};\n\n/* run each phrase through a function, and create a new document */\nvar map = function map(fn) {\n var _this = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.map(function (p, i) {\n var doc = _this.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n var res = fn(doc, i); // if its a doc, return one result\n\n if (res && res.list && res.list[0]) {\n return res.list[0];\n }\n\n return res;\n }); //remove nulls\n\n list = list.filter(function (x) {\n return x;\n }); // return an empty response\n\n if (list.length === 0) {\n return this.buildFrom(list);\n } // if it is not a list of Phrase objects, then don't try to make a Doc object\n\n\n if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') {\n return list;\n }\n\n return this.buildFrom(list);\n};\n/** run a function on each phrase */\n\n\nvar forEach = function forEach(fn, detachParent) {\n var _this2 = this;\n\n if (!fn) {\n return this;\n }\n\n this.list.forEach(function (p, i) {\n var sub = _this2.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time.\n\n\n if (detachParent === true) {\n sub.from = null; //\n }\n\n fn(sub, i);\n });\n return this;\n};\n/** return only the phrases that return true */\n\n\nvar filter = function filter(fn) {\n var _this3 = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.filter(function (p, i) {\n var doc = _this3.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n return this.buildFrom(list);\n};\n/** return a document with only the first phrase that matches */\n\n\nvar find = function find(fn) {\n var _this4 = this;\n\n if (!fn) {\n return this;\n }\n\n var phrase = this.list.find(function (p, i) {\n var doc = _this4.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n\n if (phrase) {\n return this.buildFrom([phrase]);\n }\n\n return undefined;\n};\n/** return true or false if there is one matching phrase */\n\n\nvar some = function some(fn) {\n var _this5 = this;\n\n if (!fn) {\n return this;\n }\n\n return this.list.some(function (p, i) {\n var doc = _this5.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n};\n/** sample a subset of the results */\n\n\nvar random = function random(n) {\n if (!this.found) {\n return this;\n }\n\n var r = Math.floor(Math.random() * this.list.length);\n\n if (n === undefined) {\n var list = [this.list[r]];\n return this.buildFrom(list);\n } //prevent it from going over the end\n\n\n if (r + n > this.length) {\n r = this.length - n;\n r = r < 0 ? 0 : r;\n }\n\n return this.slice(r, r + n);\n};\n/** combine each phrase into a new data-structure */\n// exports.reduce = function(fn, h) {\n// let list = this.list.reduce((_h, ts) => {\n// let doc = this.buildFrom([ts])\n// doc.from = null //it's not a child/parent\n// return fn(_h, doc)\n// }, h)\n// return this.buildFrom(list)\n// }\n\n\nvar _05Loops = {\n map: map,\n forEach: forEach,\n filter: filter,\n find: find,\n some: some,\n random: random\n};\n\n// const tokenize = require('../../01-tokenizer/02-words')\nvar tokenize = function tokenize(str) {\n return str.split(/[ -]/g);\n}; // take a list of strings\n// look them up in the document\n\n\nvar buildTree = function buildTree(termList) {\n var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var root = {}; // parse our input\n\n termList.forEach(function (str, i) {\n var val = true;\n\n if (values[i] !== undefined) {\n val = values[i];\n } // some rough normalization\n\n\n str = (str || '').toLowerCase();\n str = str.replace(/[,;.!?]+$/, '');\n var arr = tokenize(str).map(function (s) {\n return s.trim();\n });\n root[arr[0]] = root[arr[0]] || {};\n\n if (arr.length === 1) {\n root[arr[0]].value = val;\n } else {\n root[arr[0]].more = root[arr[0]].more || [];\n root[arr[0]].more.push({\n rest: arr.slice(1),\n value: val\n });\n }\n }); // sort by longest-first?\n // console.log(JSON.stringify(root, null, 2))\n\n return root;\n};\n\nvar fastLookup = function fastLookup(termList, values, doc) {\n var root = buildTree(termList, values);\n var found = []; // each phrase\n\n var _loop = function _loop(i) {\n var p = doc.list[i];\n var terms = p.terms();\n var words = terms.map(function (t) {\n return t.reduced;\n }); // each word\n\n var _loop2 = function _loop2(w) {\n if (root[words[w]] !== undefined) {\n // is it a multi-word match?\n if (root[words[w]].more !== undefined) {\n root[words[w]].more.forEach(function (more) {\n // is it too-long?\n if (words[w + more.rest.length] === undefined) {\n return;\n } // compare each subsequent term\n\n\n var everyTerm = more.rest.every(function (word, r) {\n return word === words[w + r + 1];\n });\n\n if (everyTerm === true) {\n found.push({\n id: p.terms()[w].id,\n value: more.value,\n length: more.rest.length + 1\n });\n }\n });\n } // is it a single-word match?\n\n\n if (root[words[w]].value !== undefined) {\n found.push({\n id: p.terms()[w].id,\n value: root[words[w]].value,\n length: 1\n });\n }\n }\n };\n\n for (var w = 0; w < words.length; w++) {\n _loop2(w);\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n return found;\n};\n\nvar _lookup = fastLookup;\n\nvar _06Lookup = createCommonjsModule(function (module, exports) {\n // compare one term and one match\n // const doesMatch = function(term, str) {\n // if (str === '') {\n // return false\n // }\n // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str\n // }\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n };\n /** lookup an array of words or phrases */\n\n\n exports.lookup = function (arr) {\n var _this = this;\n\n var values = []; //is it a {key:val} object?\n\n var isObj = isObject(arr);\n\n if (isObj === true) {\n arr = Object.keys(arr).map(function (k) {\n values.push(arr[k]);\n return k;\n });\n } // support .lookup('foo')\n\n\n if (typeof arr === 'string') {\n arr = [arr];\n } //make sure we go fast.\n\n\n if (this._cache.set !== true) {\n this.cache();\n }\n\n var found = _lookup(arr, values, this);\n var p = this.list[0]; // make object response\n\n if (isObj === true) {\n var byVal = {};\n found.forEach(function (o) {\n byVal[o.value] = byVal[o.value] || [];\n byVal[o.value].push(p.buildFrom(o.id, o.length));\n });\n Object.keys(byVal).forEach(function (k) {\n byVal[k] = _this.buildFrom(byVal[k]);\n });\n return byVal;\n } // otherwise, make array response:\n\n\n found = found.map(function (o) {\n return p.buildFrom(o.id, o.length);\n });\n return this.buildFrom(found);\n };\n\n exports.lookUp = exports.lookup;\n});\n\n/** freeze the current state of the document, for speed-purposes*/\nvar cache = function cache(options) {\n var _this = this;\n\n options = options || {};\n var words = {};\n var tags = {};\n this._cache.words = words;\n this._cache.tags = tags;\n this._cache.set = true;\n this.list.forEach(function (p, i) {\n p.cache = p.cache || {}; //p.terms get cached automatically\n\n var terms = p.terms(); // cache all the terms\n\n terms.forEach(function (t) {\n if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) {\n return; //skip prototype words\n }\n\n words[t.reduced] = words[t.reduced] || [];\n words[t.reduced].push(i);\n Object.keys(t.tags).forEach(function (tag) {\n tags[tag] = tags[tag] || [];\n tags[tag].push(i);\n }); // cache root-form on Term, too\n\n if (options.root) {\n t.setRoot(_this.world);\n words[t.root] = [i];\n }\n });\n });\n return this;\n};\n/** un-freezes the current state of the document, so it may be transformed */\n\n\nvar uncache = function uncache() {\n this._cache = {};\n this.list.forEach(function (p) {\n p.cache = {};\n }); // do parents too?\n\n this.parents().forEach(function (doc) {\n doc._cache = {};\n doc.list.forEach(function (p) {\n p.cache = {};\n });\n });\n return this;\n};\n\nvar _07Cache = {\n cache: cache,\n uncache: uncache\n};\n\nvar titleCase$1 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** substitute-in new content */\n\n\nvar replaceWith = function replaceWith(replace) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!replace) {\n return this[\"delete\"]();\n } //support old-style params\n\n\n if (options === true) {\n options = {\n keepTags: true\n };\n }\n\n if (options === false) {\n options = {\n keepTags: false\n };\n }\n\n options = options || {}; // clear the cache\n\n this.uncache(); // return this\n\n this.list.forEach(function (p) {\n var input = replace; // accept a function for replace\n\n if (typeof replace === 'function') {\n input = replace(p);\n }\n\n var newPhrases; // accept a Doc object to replace\n\n if (input && _typeof(input) === 'object' && input.isA === 'Doc') {\n newPhrases = input.list;\n\n _this.pool().merge(input.pool());\n } else if (typeof input === 'string') {\n //input is a string\n if (options.keepCase !== false && p.terms(0).isTitleCase()) {\n input = titleCase$1(input);\n }\n\n newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases\n\n var tmpDoc = _this.buildFrom(newPhrases);\n\n tmpDoc.tagger();\n newPhrases = tmpDoc.list;\n } else {\n return; //don't even bother\n } // try to keep its old tags, if appropriate\n\n\n if (options.keepTags === true) {\n var oldTags = p.json({\n terms: {\n tags: true\n }\n }).terms;\n newPhrases[0].terms().forEach(function (t, i) {\n if (oldTags[i]) {\n t.tagSafe(oldTags[i].tags, 'keptTag', _this.world);\n }\n });\n }\n\n p.replace(newPhrases[0], _this); //Oneday: support multi-sentence replacements\n });\n return this;\n};\n/** search and replace match with new content */\n\n\nvar replace = function replace(match, _replace, options) {\n // if there's no 2nd param, use replaceWith\n if (_replace === undefined) {\n return this.replaceWith(match, options);\n }\n\n this.match(match).replaceWith(_replace, options);\n return this;\n};\n\nvar _01Replace = {\n replaceWith: replaceWith,\n replace: replace\n};\n\nvar _02Insert = createCommonjsModule(function (module, exports) {\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n }; // if it's empty, just create the phrase\n\n\n var makeNew = function makeNew(str, doc) {\n var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now\n\n var tmpDoc = doc.buildFrom([phrase]);\n tmpDoc.tagger();\n doc.list = tmpDoc.list;\n return doc;\n };\n /** add these new terms to the end*/\n\n\n exports.append = function () {\n var _this = this;\n\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to end of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this.buildFrom([phrase]);\n\n tmpDoc.tagger(); // push it onto the end\n\n p.append(phrase, _this);\n });\n return this;\n };\n\n exports.insertAfter = exports.append;\n exports.insertAt = exports.append;\n /** add these new terms to the front*/\n\n exports.prepend = function (str) {\n var _this2 = this;\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to start of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this2.buildFrom([phrase]);\n\n tmpDoc.tagger(); // add it to the start\n\n p.prepend(phrase, _this2);\n });\n return this;\n };\n\n exports.insertBefore = exports.prepend;\n /** add these new things to the end*/\n\n exports.concat = function () {\n // clear the cache\n this.uncache();\n var list = this.list.slice(0); //repeat for any number of params\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]; //support a fresh string\n\n if (typeof arg === 'string') {\n var arr = _01Tokenizer(arg, this.world); //TODO: phrase.tagger()?\n\n list = list.concat(arr);\n } else if (arg.isA === 'Doc') {\n list = list.concat(arg.list);\n } else if (arg.isA === 'Phrase') {\n list.push(arg);\n }\n }\n\n return this.buildFrom(list);\n };\n /** fully remove these terms from the document */\n\n\n exports[\"delete\"] = function (match) {\n var _this3 = this;\n\n // clear the cache\n this.uncache();\n var toRemove = this;\n\n if (match) {\n toRemove = this.match(match);\n }\n\n toRemove.list.forEach(function (phrase) {\n return phrase[\"delete\"](_this3);\n });\n return this;\n }; // aliases\n\n\n exports.remove = exports[\"delete\"];\n});\n\nvar shouldTrim = {\n clean: true,\n reduced: true,\n root: true\n};\n/** return the document as text */\n\nvar text = function text(options) {\n var _this = this;\n\n options = options || {}; //are we showing every phrase?\n\n var showFull = false;\n\n if (this.parents().length === 0) {\n showFull = true;\n } // cache roots, if necessary\n\n\n if (options === 'root' || _typeof(options) === 'object' && options.root) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var txt = this.list.reduce(function (str, p, i) {\n var trimPre = !showFull && i === 0;\n var trimPost = !showFull && i === _this.list.length - 1;\n return str + p.text(options, trimPre, trimPost);\n }, ''); // clumsy final trim of leading/trailing whitespace\n\n if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) {\n txt = txt.trim();\n }\n\n return txt;\n};\n\nvar _01Text = {\n text: text\n};\n\n// get all character startings in doc\nvar termOffsets = function termOffsets(doc) {\n var elapsed = 0;\n var index = 0;\n var offsets = {};\n doc.termList().forEach(function (term) {\n offsets[term.id] = {\n index: index,\n start: elapsed + term.pre.length,\n length: term.text.length\n };\n elapsed += term.pre.length + term.text.length + term.post.length;\n index += 1;\n });\n return offsets;\n};\n\nvar calcOffset = function calcOffset(doc, result, options) {\n // calculate offsets for each term\n var offsets = termOffsets(doc.all()); // add index values\n\n if (options.terms.index || options.index) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.index = offsets[t.id].index;\n });\n o.index = o.terms[0].index;\n });\n } // add offset values\n\n\n if (options.terms.offset || options.offset) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.offset = offsets[t.id] || {};\n }); // let len = o.terms.reduce((n, t, i) => {\n // n += t.offset.length || 0\n // //add whitespace, too\n // console.log(t.post)\n // return n\n // }, 0)\n // The offset information for the entire doc starts at (or just before)\n // the first term, and is as long as the whole text. The code originally\n // copied the entire offset value from terms[0], but since we're now\n // overriding 2 of the three fields, it's cleaner to just create an all-\n // new object and not pretend it's \"just\" the same as terms[0].\n\n o.offset = {\n index: o.terms[0].offset.index,\n start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text),\n length: o.text.length\n };\n });\n }\n};\n\nvar _offset = calcOffset;\n\nvar _02Json = createCommonjsModule(function (module, exports) {\n var jsonDefaults = {\n text: true,\n terms: true,\n trim: true\n }; //some options have dependents\n\n var setOptions = function setOptions(options) {\n options = Object.assign({}, jsonDefaults, options);\n\n if (options.unique) {\n options.reduced = true;\n } //offset calculation requires these options to be on\n\n\n if (options.offset) {\n options.text = true;\n\n if (!options.terms || options.terms === true) {\n options.terms = {};\n }\n\n options.terms.offset = true;\n }\n\n if (options.index || options.terms.index) {\n options.terms = options.terms === true ? {} : options.terms;\n options.terms.id = true;\n }\n\n return options;\n };\n /** pull out desired metadata from the document */\n\n\n exports.json = function () {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n //support json(3) format\n if (typeof options === 'number' && this.list[options]) {\n return this.list[options].json(jsonDefaults);\n }\n\n options = setOptions(options); // cache root strings beforehand, if necessary\n\n if (options.root === true) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var result = this.list.map(function (p) {\n return p.json(options, _this.world);\n }); // add offset and index data for each term\n\n if (options.terms.offset || options.offset || options.terms.index || options.index) {\n _offset(this, result, options);\n } // add frequency #s\n\n\n if (options.frequency || options.freq || options.count) {\n var obj = {};\n this.list.forEach(function (p) {\n var str = p.text('reduced');\n obj[str] = obj[str] || 0;\n obj[str] += 1;\n });\n this.list.forEach(function (p, i) {\n result[i].count = obj[p.text('reduced')];\n });\n } // remove duplicates\n\n\n if (options.unique) {\n var already = {};\n result = result.filter(function (o) {\n if (already[o.reduced] === true) {\n return false;\n }\n\n already[o.reduced] = true;\n return true;\n });\n }\n\n return result;\n }; //aliases\n\n\n exports.data = exports.json;\n});\n\nvar _debug = createCommonjsModule(function (module) {\n // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\n var reset = '\\x1b[0m';\n\n var padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n };\n\n function isClientSide() {\n return typeof window !== 'undefined' && window.document;\n } // some nice colors for client-side debug\n\n\n var css = {\n green: '#7f9c6c',\n red: '#914045',\n blue: '#6699cc',\n magenta: '#6D5685',\n cyan: '#2D85A8',\n yellow: '#e6d7b3',\n black: '#303b50'\n };\n\n var logClientSide = function logClientSide(doc) {\n var tagset = doc.world.tags;\n doc.list.forEach(function (p) {\n console.log('\\n%c\"' + p.text() + '\"', 'color: #e6d7b3;');\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 8);\n var found = tags.find(function (tag) {\n return tagset[tag] && tagset[tag].color;\n });\n var color = 'steelblue';\n\n if (tagset[found]) {\n color = tagset[found].color;\n color = css[color];\n }\n\n console.log(\" \".concat(word, \" - %c\").concat(tags.join(', ')), \"color: \".concat(color || 'steelblue', \";\"));\n });\n });\n }; //cheaper than requiring chalk\n\n\n var cli = {\n green: function green(str) {\n return '\\x1b[32m' + str + reset;\n },\n red: function red(str) {\n return '\\x1b[31m' + str + reset;\n },\n blue: function blue(str) {\n return '\\x1b[34m' + str + reset;\n },\n magenta: function magenta(str) {\n return '\\x1b[35m' + str + reset;\n },\n cyan: function cyan(str) {\n return '\\x1b[36m' + str + reset;\n },\n yellow: function yellow(str) {\n return '\\x1b[33m' + str + reset;\n },\n black: function black(str) {\n return '\\x1b[30m' + str + reset;\n }\n };\n\n var tagString = function tagString(tags, world) {\n tags = tags.map(function (tag) {\n if (!world.tags.hasOwnProperty(tag)) {\n return tag;\n }\n\n var c = world.tags[tag].color || 'blue';\n return cli[c](tag);\n });\n return tags.join(', ');\n }; //output some helpful stuff to the console\n\n\n var debug = function debug(doc) {\n if (isClientSide()) {\n logClientSide(doc);\n return doc;\n }\n\n console.log(cli.blue('====='));\n doc.list.forEach(function (p) {\n console.log(cli.blue(' -----'));\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n {\n text = cli.yellow(text);\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 18);\n var str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world);\n console.log(str);\n });\n });\n console.log('');\n return doc;\n };\n\n module.exports = debug;\n});\n\nvar topk = function topk(doc) {\n var list = doc.json({\n text: false,\n terms: false,\n reduced: true\n }); // combine them\n\n var obj = {};\n list.forEach(function (o) {\n if (!obj[o.reduced]) {\n o.count = 0;\n obj[o.reduced] = o;\n }\n\n obj[o.reduced].count += 1;\n });\n var arr = Object.keys(obj).map(function (k) {\n return obj[k];\n }); // sort them\n\n arr.sort(function (a, b) {\n if (a.count > b.count) {\n return -1;\n } else if (a.count < b.count) {\n return 1;\n }\n\n return 0;\n });\n return arr;\n};\n\nvar _topk = topk;\n\n/** pretty-print the current document and its tags */\n\nvar debug_1 = function debug_1() {\n _debug(this);\n return this;\n};\n/** some named output formats */\n\n\nvar out = function out(method) {\n if (method === 'text') {\n return this.text();\n }\n\n if (method === 'normal') {\n return this.text('normal');\n }\n\n if (method === 'json') {\n return this.json();\n }\n\n if (method === 'offset' || method === 'offsets') {\n return this.json({\n offset: true\n });\n }\n\n if (method === 'array') {\n return this.json({\n terms: false\n }).map(function (obj) {\n return obj.text;\n }).filter(function (str) {\n return str;\n });\n }\n\n if (method === 'freq' || method === 'frequency') {\n return _topk(this);\n }\n\n if (method === 'terms') {\n var list = [];\n this.json({\n text: false,\n terms: {\n text: true\n }\n }).forEach(function (obj) {\n var terms = obj.terms.map(function (t) {\n return t.text;\n });\n terms = terms.filter(function (t) {\n return t;\n });\n list = list.concat(terms);\n });\n return list;\n }\n\n if (method === 'tags') {\n return this.list.map(function (p) {\n return p.terms().reduce(function (h, t) {\n h[t.clean || t.implicit] = Object.keys(t.tags);\n return h;\n }, {});\n });\n }\n\n if (method === 'debug') {\n _debug(this);\n return this;\n }\n\n return this.text();\n};\n\nvar _03Out = {\n debug: debug_1,\n out: out\n};\n\nvar methods$6 = {\n /** alphabetical order */\n alpha: function alpha(a, b) {\n var left = a.text('clean');\n var right = b.text('clean');\n\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n },\n\n /** count the # of characters of each match */\n length: function length(a, b) {\n var left = a.text().trim().length;\n var right = b.text().trim().length;\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n },\n\n /** count the # of terms in each match */\n wordCount: function wordCount(a, b) {\n var left = a.wordCount();\n var right = b.wordCount();\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n }\n};\n/** sort by # of duplicates in the document*/\n\nvar byFreq = function byFreq(doc) {\n var counts = {};\n var options = {\n \"case\": true,\n punctuation: false,\n whitespace: true,\n unicode: true\n };\n doc.list.forEach(function (p) {\n var str = p.text(options);\n counts[str] = counts[str] || 0;\n counts[str] += 1;\n }); // sort by freq\n\n doc.list.sort(function (a, b) {\n var left = counts[a.text(options)];\n var right = counts[b.text(options)];\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; // order results 'chronologically', or document-order\n\n\nvar sortSequential = function sortSequential(doc) {\n var order = {};\n doc.json({\n terms: {\n offset: true\n }\n }).forEach(function (o) {\n order[o.terms[0].id] = o.terms[0].offset.start;\n });\n doc.list = doc.list.sort(function (a, b) {\n if (order[a.start] > order[b.start]) {\n return 1;\n } else if (order[a.start] < order[b.start]) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; //aliases\n\n\nmethods$6.alphabetical = methods$6.alpha;\nmethods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering\n\nvar seqNames = {\n index: true,\n sequence: true,\n seq: true,\n sequential: true,\n chron: true,\n chronological: true\n};\n/** re-arrange the order of the matches (in place) */\n\nvar sort = function sort(input) {\n input = input || 'alpha'; //do this one up-front\n\n if (input === 'freq' || input === 'frequency' || input === 'topk') {\n return byFreq(this);\n }\n\n if (seqNames.hasOwnProperty(input)) {\n return sortSequential(this);\n }\n\n input = methods$6[input] || input; // apply sort method on each phrase\n\n if (typeof input === 'function') {\n this.list = this.list.sort(input);\n return this;\n }\n\n return this;\n};\n/** reverse the order of the matches, but not the words */\n\n\nvar reverse = function reverse() {\n var list = [].concat(this.list);\n list = list.reverse();\n return this.buildFrom(list);\n};\n/** remove any duplicate matches */\n\n\nvar unique$1 = function unique() {\n var list = [].concat(this.list);\n var obj = {};\n list = list.filter(function (p) {\n var str = p.text('reduced').trim() || p.text('implicit').trim();\n\n if (obj.hasOwnProperty(str) === true) {\n return false;\n }\n\n obj[str] = true;\n return true;\n });\n return this.buildFrom(list);\n};\n\nvar _01Sort = {\n sort: sort,\n reverse: reverse,\n unique: unique$1\n};\n\nvar isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g;\nvar quotes = /['‘’“”\"′″‴]+/g;\nvar methods$5 = {\n // cleanup newlines and extra spaces\n whitespace: function whitespace(doc) {\n var termArr = doc.list.map(function (ts) {\n return ts.terms();\n });\n termArr.forEach(function (terms, o) {\n terms.forEach(function (t, i) {\n // keep dashes between words\n if (t.hasDash() === true) {\n t.post = ' - ';\n return;\n } // remove existing spaces\n\n\n t.pre = t.pre.replace(/\\s/g, '');\n t.post = t.post.replace(/\\s/g, ''); //last word? ensure there's a next sentence.\n\n if (terms.length - 1 === i && !termArr[o + 1]) {\n return;\n } // no extra spaces for contractions\n\n\n if (t.implicit && Boolean(t.text) === true) {\n return;\n } // no extra spaces for hyphenated words\n\n\n if (t.hasHyphen() === true) {\n return;\n }\n\n t.post += ' ';\n });\n });\n },\n punctuation: function punctuation(termList) {\n termList.forEach(function (t) {\n // space between hyphenated words\n if (t.hasHyphen() === true) {\n t.post = ' ';\n }\n\n t.pre = t.pre.replace(isPunct, '');\n t.post = t.post.replace(isPunct, ''); // elipses\n\n t.post = t.post.replace(/\\.\\.\\./, ''); // only allow one exclamation\n\n if (/!/.test(t.post) === true) {\n t.post = t.post.replace(/!/g, '');\n t.post = '!' + t.post;\n } // only allow one question mark\n\n\n if (/\\?/.test(t.post) === true) {\n t.post = t.post.replace(/[\\?!]*/, '');\n t.post = '?' + t.post;\n }\n });\n },\n unicode: function unicode(termList) {\n termList.forEach(function (t) {\n if (t.isImplicit() === true) {\n return;\n }\n\n t.text = unicode_1(t.text);\n });\n },\n quotations: function quotations(termList) {\n termList.forEach(function (t) {\n t.post = t.post.replace(quotes, '');\n t.pre = t.pre.replace(quotes, '');\n });\n },\n adverbs: function adverbs(doc) {\n doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove();\n },\n // remove the '.' from 'Mrs.' (safely)\n abbreviations: function abbreviations(doc) {\n doc.list.forEach(function (ts) {\n var terms = ts.terms();\n terms.forEach(function (t, i) {\n if (t.tags.Abbreviation === true && terms[i + 1]) {\n t.post = t.post.replace(/^\\./, '');\n }\n });\n });\n }\n};\nvar _methods = methods$5;\n\nvar defaults = {\n // light\n whitespace: true,\n unicode: true,\n punctuation: true,\n emoji: true,\n acronyms: true,\n abbreviations: true,\n // medium\n \"case\": false,\n contractions: false,\n parentheses: false,\n quotations: false,\n adverbs: false,\n // heavy (loose legibility)\n possessives: false,\n verbs: false,\n nouns: false,\n honorifics: false // pronouns: true,\n\n};\nvar mapping = {\n light: {},\n medium: {\n \"case\": true,\n contractions: true,\n parentheses: true,\n quotations: true,\n adverbs: true\n }\n};\nmapping.heavy = Object.assign({}, mapping.medium, {\n possessives: true,\n verbs: true,\n nouns: true,\n honorifics: true\n});\n/** common ways to clean-up the document, and reduce noise */\n\nvar normalize = function normalize(options) {\n options = options || {}; // support named forms\n\n if (typeof options === 'string') {\n options = mapping[options] || {};\n } // set defaults\n\n\n options = Object.assign({}, defaults, options); // clear the cache\n\n this.uncache();\n var termList = this.termList(); // lowercase things\n\n if (options[\"case\"]) {\n this.toLowerCase();\n } //whitespace\n\n\n if (options.whitespace) {\n _methods.whitespace(this);\n } // unicode: é -> e\n\n\n if (options.unicode) {\n _methods.unicode(termList);\n } //punctuation - keep sentence punctation, quotes, parenths\n\n\n if (options.punctuation) {\n _methods.punctuation(termList);\n } // remove ':)'\n\n\n if (options.emoji) {\n this.remove('(#Emoji|#Emoticon)');\n } // 'f.b.i.' -> 'FBI'\n\n\n if (options.acronyms) {\n this.acronyms().strip(); // .toUpperCase()\n } // remove period from abbreviations\n\n\n if (options.abbreviations) {\n _methods.abbreviations(this);\n } // --Medium methods--\n // `isn't` -> 'is not'\n\n\n if (options.contraction || options.contractions) {\n this.contractions().expand();\n } // '(word)' -> 'word'\n\n\n if (options.parentheses) {\n this.parentheses().unwrap();\n } // remove \"\" punctuation\n\n\n if (options.quotations || options.quotes) {\n _methods.quotations(termList);\n } // remove any un-necessary adverbs\n\n\n if (options.adverbs) {\n _methods.adverbs(this);\n } // --Heavy methods--\n // `cory hart's -> cory hart'\n\n\n if (options.possessive || options.possessives) {\n this.possessives().strip();\n } // 'he walked' -> 'he walk'\n\n\n if (options.verbs) {\n this.verbs().toInfinitive();\n } // 'three dogs' -> 'three dog'\n\n\n if (options.nouns || options.plurals) {\n this.nouns().toSingular();\n } // remove 'Mr.' from 'Mr John Smith'\n\n\n if (options.honorifics) {\n this.remove('#Honorific');\n }\n\n return this;\n};\n\nvar _02Normalize = {\n normalize: normalize\n};\n\nvar _03Split = createCommonjsModule(function (module, exports) {\n /** return a Document with three parts for every match\n * seperate everything before the word, as a new phrase\n */\n exports.splitOn = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitOn(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before) {\n matches.push(parts.before);\n }\n\n if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** return a Document with two parts for every match\n * seperate everything after the word, as a new phrase\n */\n\n\n exports.splitAfter = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitAfter(this);\n } // start looking for our matches\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before && parts.match) {\n // merge these two together\n parts.before.length += parts.match.length;\n matches.push(parts.before);\n } else if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n\n exports.split = exports.splitAfter; //i guess?\n\n /** return a Document with two parts for every match */\n\n exports.splitBefore = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitBefore(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add before part in\n\n if (parts.before) {\n matches.push(parts.before);\n } // merge match+after\n\n\n if (parts.match && parts.after) {\n parts.match.length += parts.after.length;\n } // start matching now on the end\n\n\n carry = parts.match;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** split a document into labeled sections */\n\n\n exports.segment = function (regs, options) {\n regs = regs || {};\n options = options || {\n text: true\n };\n var doc = this;\n var keys = Object.keys(regs); // split em\n\n keys.forEach(function (k) {\n doc = doc.splitOn(k);\n }); //add labels for each section\n\n doc.list.forEach(function (p) {\n for (var i = 0; i < keys.length; i += 1) {\n if (p.has(keys[i])) {\n p.segment = regs[keys[i]];\n return;\n }\n }\n });\n return doc.list.map(function (p) {\n var res = p.json(options);\n res.segment = p.segment || null;\n return res;\n });\n };\n});\n\nvar eachTerm = function eachTerm(doc, fn) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t[fn](world);\n });\n });\n return doc;\n};\n/** turn every letter of every term to lower-cse */\n\n\nvar toLowerCase = function toLowerCase() {\n return eachTerm(this, 'toLowerCase');\n};\n/** turn every letter of every term to upper case */\n\n\nvar toUpperCase = function toUpperCase() {\n return eachTerm(this, 'toUpperCase');\n};\n/** upper-case the first letter of each term */\n\n\nvar toTitleCase = function toTitleCase() {\n return eachTerm(this, 'toTitleCase');\n};\n/** remove whitespace and title-case each term */\n\n\nvar toCamelCase = function toCamelCase() {\n this.list.forEach(function (p) {\n //remove whitespace\n var terms = p.terms();\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.toTitleCase();\n }\n\n if (i !== terms.length - 1) {\n t.post = '';\n }\n });\n }); // this.tag('#CamelCase', 'toCamelCase')\n\n return this;\n};\n\nvar _04Case = {\n toLowerCase: toLowerCase,\n toUpperCase: toUpperCase,\n toTitleCase: toTitleCase,\n toCamelCase: toCamelCase\n};\n\n/** add this punctuation or whitespace before each match: */\n\nvar _05Whitespace = createCommonjsModule(function (module, exports) {\n exports.pre = function (str, concat) {\n if (str === undefined) {\n return this.list[0].terms(0).pre;\n }\n\n this.list.forEach(function (p) {\n var term = p.terms(0);\n\n if (concat === true) {\n term.pre += str;\n } else {\n term.pre = str;\n }\n });\n return this;\n };\n /** add this punctuation or whitespace after each match: */\n\n\n exports.post = function (str, concat) {\n // return array of post strings\n if (str === undefined) {\n return this.list.map(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n return term.post;\n });\n } // set post string on all ends\n\n\n this.list.forEach(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n\n if (concat === true) {\n term.post += str;\n } else {\n term.post = str;\n }\n });\n return this;\n };\n /** remove start and end whitespace */\n\n\n exports.trim = function () {\n this.list = this.list.map(function (p) {\n return p.trim();\n });\n return this;\n };\n /** connect words with hyphen, and remove whitespace */\n\n\n exports.hyphenate = function () {\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.pre = '';\n }\n\n if (terms[i + 1]) {\n t.post = '-';\n }\n });\n });\n return this;\n };\n /** remove hyphens between words, and set whitespace */\n\n\n exports.dehyphenate = function () {\n var hasHyphen = /(-|–|—)/;\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t) {\n if (hasHyphen.test(t.post)) {\n t.post = ' ';\n }\n });\n });\n return this;\n };\n\n exports.deHyphenate = exports.dehyphenate;\n /** add quotations around these matches */\n\n exports.toQuotations = function (start, end) {\n start = start || \"\\\"\";\n end = end || \"\\\"\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n\n exports.toQuotation = exports.toQuotations;\n /** add brackets around these matches */\n\n exports.toParentheses = function (start, end) {\n start = start || \"(\";\n end = end || \")\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n});\n\n/** make all phrases into one phrase */\nvar join = function join(str) {\n // clear the cache\n this.uncache(); // make one large phrase - 'main'\n\n var main = this.list[0];\n var before = main.length;\n var removed = {};\n\n for (var i = 1; i < this.list.length; i++) {\n var p = this.list[i];\n removed[p.start] = true;\n var term = main.lastTerm(); // add whitespace between them\n\n if (str) {\n term.post += str;\n } // main -> p\n\n\n term.next = p.start; // main <- p\n\n p.terms(0).prev = term.id;\n main.length += p.length;\n main.cache = {};\n } // parents are bigger than than their children.\n // when we increase a child, we increase their parent too.\n\n\n var increase = main.length - before;\n this.parents().forEach(function (doc) {\n // increase length on each effected phrase\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var _i = 0; _i < terms.length; _i++) {\n if (terms[_i].id === main.start) {\n p.length += increase;\n break;\n }\n }\n\n p.cache = {};\n }); // remove redundant phrases now\n\n doc.list = doc.list.filter(function (p) {\n return removed[p.start] !== true;\n });\n }); // return one major phrase\n\n return this.buildFrom([main]);\n};\n\nvar _06Join = {\n join: join\n};\n\nvar postPunct = /[,\\)\"';:\\-–—\\.…]/; // const irregulars = {\n// 'will not': `won't`,\n// 'i am': `i'm`,\n// }\n\nvar setContraction = function setContraction(m, suffix) {\n if (!m.found) {\n return;\n }\n\n var terms = m.termList(); //avoid any problematic punctuation\n\n for (var i = 0; i < terms.length - 1; i++) {\n var t = terms[i];\n\n if (postPunct.test(t.post)) {\n return;\n }\n } // set them as implict\n\n\n terms.forEach(function (t) {\n t.implicit = t.clean;\n }); // perform the contraction\n\n terms[0].text += suffix; // clean-up the others\n\n terms.slice(1).forEach(function (t) {\n t.text = '';\n });\n\n for (var _i = 0; _i < terms.length - 1; _i++) {\n var _t = terms[_i];\n _t.post = _t.post.replace(/ /, '');\n }\n};\n/** turn 'i am' into i'm */\n\n\nvar contract = function contract() {\n var doc = this.not('@hasContraction'); // we are -> we're\n\n var m = doc.match('(we|they|you) are');\n setContraction(m, \"'re\"); // they will -> they'll\n\n m = doc.match('(he|she|they|it|we|you) will');\n setContraction(m, \"'ll\"); // she is -> she's\n\n m = doc.match('(he|she|they|it|we) is');\n setContraction(m, \"'s\"); // spencer is -> spencer's\n\n m = doc.match('#Person is');\n setContraction(m, \"'s\"); // spencer would -> spencer'd\n\n m = doc.match('#Person would');\n setContraction(m, \"'d\"); // would not -> wouldn't\n\n m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not');\n setContraction(m, \"n't\"); // i have -> i've\n\n m = doc.match('(i|we|they) have');\n setContraction(m, \"'ve\"); // would have -> would've\n\n m = doc.match('(would|should|could) have');\n setContraction(m, \"'ve\"); // i am -> i'm\n\n m = doc.match('i am');\n setContraction(m, \"'m\"); // going to -> gonna\n\n m = doc.match('going to');\n return this;\n};\n\nvar _07Contract = {\n contract: contract\n};\n\nvar methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract);\n\nvar methods$3 = {}; // allow helper methods like .adjectives() and .adverbs()\n\nvar arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']];\narr.forEach(function (a) {\n methods$3[a[0]] = function (n) {\n var m = this.match(a[1]);\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n}); // aliases\n\nmethods$3.emojis = methods$3.emoji;\nmethods$3.atmentions = methods$3.atMentions;\nmethods$3.words = methods$3.terms;\n/** return anything tagged as a phone number */\n\nmethods$3.phoneNumbers = function (n) {\n var m = this.splitAfter('@hasComma');\n m = m.match('#PhoneNumber+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** Deprecated: please use compromise-numbers plugin */\n\n\nmethods$3.money = function (n) {\n var m = this.match('#Money #Currency?');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all cities, countries, addresses, and regions */\n\n\nmethods$3.places = function (n) {\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep);\n m.sort('index');\n m = m.match('#Place+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all schools, businesses and institutions */\n\n\nmethods$3.organizations = function (n) {\n var m = this.clauses();\n m = m.match('#Organization+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n}; //combine them with .topics() method\n\n\nmethods$3.entities = function (n) {\n var r = this.clauses(); // Find people, places, and organizations\n\n var yup = r.people();\n yup = yup.concat(r.places());\n yup = yup.concat(r.organizations());\n var ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father'];\n yup = yup.not(ignore); //return them to normal ordering\n\n yup.sort('sequence'); // yup.unique() //? not sure\n\n if (typeof n === 'number') {\n yup = yup.get(n);\n }\n\n return yup;\n}; //aliases\n\n\nmethods$3.things = methods$3.entities;\nmethods$3.topics = methods$3.entities;\nvar _simple = methods$3;\n\nvar underOver = /^(under|over)-?/;\n/** match a word-sequence, like 'super bowl' in the lexicon */\n\nvar tryMultiple = function tryMultiple(terms, t, world) {\n var lex = world.words; //try a two-word version\n\n var txt = terms[t].reduced + ' ' + terms[t + 1].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-two', world);\n terms[t + 1].tag(lex[txt], 'lexicon-two', world);\n return 1;\n } //try a three-word version?\n\n\n if (t + 2 < terms.length) {\n txt += ' ' + terms[t + 2].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-three', world);\n terms[t + 1].tag(lex[txt], 'lexicon-three', world);\n terms[t + 2].tag(lex[txt], 'lexicon-three', world);\n return 2;\n }\n } //try a four-word version?\n\n\n if (t + 3 < terms.length) {\n txt += ' ' + terms[t + 3].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-four', world);\n terms[t + 1].tag(lex[txt], 'lexicon-four', world);\n terms[t + 2].tag(lex[txt], 'lexicon-four', world);\n terms[t + 3].tag(lex[txt], 'lexicon-four', world);\n return 3;\n }\n }\n\n return 0;\n};\n/** look at each word in our list of known-words */\n\n\nvar checkLexicon = function checkLexicon(terms, world) {\n var lex = world.words;\n var hasCompound = world.hasCompound; // use reduced?\n //go through each term, and check the lexicon\n\n for (var t = 0; t < terms.length; t += 1) {\n var str = terms[t].clean; //is it the start of a compound word, like 'super bowl'?\n\n if (hasCompound[str] === true && t + 1 < terms.length) {\n var foundWords = tryMultiple(terms, t, world);\n\n if (foundWords > 0) {\n t += foundWords; //skip any already-found words\n\n continue;\n }\n } //try one-word lexicon\n\n\n if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) {\n terms[t].tag(lex[str], 'lexicon', world);\n continue;\n } // look at reduced version of term, too\n\n\n if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) {\n terms[t].tag(lex[terms[t].reduced], 'lexicon', world);\n continue;\n } // prefix strip: try to match 'take' for 'undertake'\n\n\n if (underOver.test(str) === true) {\n var noPrefix = str.replace(underOver, '');\n\n if (lex.hasOwnProperty(noPrefix) === true) {\n terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world);\n }\n }\n }\n\n return terms;\n};\n\nvar _01Lexicon = checkLexicon;\n\nvar apostrophes = /[\\'‘’‛‵′`´]$/;\nvar perSec = /^(m|k|cm|km|m)\\/(s|h|hr)$/; // '5 k/m'\n//\n\nvar checkPunctuation = function checkPunctuation(terms, i, world) {\n var term = terms[i]; //check hyphenation\n // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') {\n // term.tag('Hyphenated', 'has-hyphen', world)\n // }\n // support 'head-over'\n // if (term.hasHyphen() === true) {\n // console.log(term.tags)\n // }\n // console.log(term.hasHyphen(), term.text)\n //an end-tick (trailing apostrophe) - flanders', or Carlos'\n\n if (apostrophes.test(term.text)) {\n if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) {\n var endChar = term.clean[term.clean.length - 2]; //flanders'\n\n if (endChar === 's') {\n term.tag(['Possessive', 'Noun'], 'end-tick', world);\n return;\n } //chillin'\n\n\n if (endChar === 'n') {\n term.tag(['Gerund'], 'chillin', world);\n }\n }\n } // '5 km/s'\n\n\n if (perSec.test(term.text)) {\n term.tag('Unit', 'per-sec', world);\n } // 'NASA' is, but not 'i REALLY love it.'\n // if (term.tags.Noun === true && isAcronym(term, world)) {\n // term.tag('Acronym', 'acronym-step', world)\n // term.tag('Noun', 'acronym-infer', world)\n // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n // term.tag('Acronym', 'one-letter-acronym', world)\n // term.tag('Noun', 'one-letter-infer', world)\n // }\n\n};\n\nvar _02Punctuation = checkPunctuation;\n\n//these are regexes applied to t.text, instead of t.clean\n// order matters.\nvar startsWith = [//web tags\n[/^[\\w\\.]+@[\\w\\.]+\\.[a-z]{2,3}$/, 'Email'], //not fancy\n[/^#[a-z0-9_\\u00C0-\\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm\n[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30\n[/^@\\w{2,}$/, 'AtMention'], //@spencermountain\n[/^(https?:\\/\\/|www\\.)\\w+\\.[a-z]{2,3}/, 'Url'], //with http/www\n[/^[\\w./]+\\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain\n//dates/times\n[/^'[0-9]{2}$/, 'Year'], //like '97\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32\n[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm\n[/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs\n[/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+\n[/^[a-z0-9]*? o\\'?clock$/, 'Time'], //3 oclock\n[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z\n[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89\n[/^[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,4}$/, 'Date'], // 03/02/89\n[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89\n[/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3\n[/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3\n//names\n[/^ma?c\\'.*/, 'LastName'], //mc'adams\n[/^o\\'[drlkn].*/, 'LastName'], //o'douggan\n[/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes\n//slang things\n[/^(lol)+[sz]$/, 'Expression'], //lol\n[/^woo+a*?h?$/, 'Expression'], //whoaa, wooo\n[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'],\n[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date'], // 03-02-89\n//phone numbers\n[/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809\n[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809\n//money\n// currency regex\n// /[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\n//like $5.30\n[/^[-+]?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(k|m|b|bn)?\\+?$/, ['Money', 'Value']], //like 5.30$\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\\+?$/, ['Money', 'Value']], //like $400usd\n[/^[-+]?[\\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers\n// 50 | -50 | 3.23 | 5,999.0 | 10+\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th\n[/^\\.[0-9]+\\+?$/, ['Cardinal', 'NumericValue']], //percent\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% ..\n[/^\\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% ..\n//fraction\n[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths\n//range\n[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th\n//time-range\n[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30\n//with unit\n[/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp\n//ordinal\n// [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th\n// [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th\n];\n\nvar romanNumeral = /^[IVXLCDM]{2,}$/;\nvar romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877\n//try each of the ^regexes in our list\n\nvar checkRegex$1 = function checkRegex(term, world) {\n var str = term.text; // do them all!\n\n for (var r = 0; r < startsWith.length; r += 1) {\n if (startsWith[r][0].test(str) === true) {\n term.tagSafe(startsWith[r][1], 'prefix #' + r, world);\n break;\n }\n } // do some more!\n //roman numberals - XVII\n\n\n if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) {\n term.tag('RomanNumeral', 'xvii', world);\n }\n};\n\nvar _03Prefixes = checkRegex$1;\n\n//regex suffix patterns and their most common parts of speech,\n//built using wordnet, by spencer kelly.\n//this mapping shrinks-down the uglified build\nvar Adj$1 = 'Adjective';\nvar Inf$1 = 'Infinitive';\nvar Pres$1 = 'PresentTense';\nvar Sing$1 = 'Singular';\nvar Past$1 = 'PastTense';\nvar Adverb = 'Adverb';\nvar Exp = 'Expression';\nvar Actor$1 = 'Actor';\nvar Verb = 'Verb';\nvar Noun$1 = 'Noun';\nvar Last$1 = 'LastName'; //the order here matters.\n//regexes indexed by mandated last-character\n\nvar endsWith = {\n a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female)\n [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj$1]],\n d: [//==-ed==\n //double-consonant\n [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned\n //double-vowel\n [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered\n //-hed\n [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed\n //-rd\n [/.[aeiou]red$/, Past$1], //stored\n [/.[aeiou]r?ried$/, Past$1], //buried\n //-led\n [/.[bcdgtr]led$/, Past$1], //startled, rumbled\n [/.[aoui]f?led$/, Past$1], //impaled, stifled\n //-sed\n [/.[iao]sed$/, Past$1], //franchised\n [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced\n //-med\n [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed\n //-ked\n [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked\n //-ged\n [/[aeiou][nl]?ged$/, Past$1], //engaged\n //-ted\n [/.[tdbwxz]ed$/, Past$1], //bribed, boxed\n [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed\n //-ied\n [/.[cdlmnprstv]ied$/, Past$1], //rallied\n [/[^aeiou]ard$/, Sing$1], //card\n [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]],\n e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1]],\n h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp] //uhoh\n ],\n i: [[/.[oau][wvl]ski$/, Last$1] //polish (male)\n ],\n k: [[/^(k){2}$/, Exp] //kkkk\n ],\n l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]],\n m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date']],\n n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin'\n ],\n o: [[/^no+$/, Exp], //noooo\n [/^(yo)+$/, Exp], //yoyo\n [/^woo+[pt]?$/, Exp] //woo\n ],\n r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']],\n t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]],\n s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks\n [/.[aeiou]kes$/, Pres$1], //bakes\n [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\\'s$/, Noun$1], [/^yes+$/, Exp] //yessss\n ],\n v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe\n ],\n y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]]\n};\n\n//just a foolish lookup of known suffixes\nvar Adj = 'Adjective';\nvar Inf = 'Infinitive';\nvar Pres = 'PresentTense';\nvar Sing = 'Singular';\nvar Past = 'PastTense';\nvar Avb = 'Adverb';\nvar Plrl = 'Plural';\nvar Actor = 'Actor';\nvar Vb = 'Verb';\nvar Noun = 'Noun';\nvar Last = 'LastName';\nvar Modal = 'Modal';\nvar Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\n\nvar suffixMap = [null, //0\nnull, //1\n{\n //2-letter\n ea: Sing,\n ia: Noun,\n ic: Adj,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb\n}, {\n //3-letter\n oed: Past,\n ued: Past,\n xed: Past,\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n azy: Adj,\n eer: Noun,\n end: Vb,\n ped: Past,\n ffy: Adj,\n ify: Inf,\n ing: 'Gerund',\n //likely to be converted to Adj after lexicon pass\n ize: Inf,\n lar: Adj,\n mum: Adj,\n nes: Pres,\n nny: Adj,\n oid: Adj,\n ous: Adj,\n que: Adj,\n rol: Sing,\n sis: Sing,\n zes: Pres\n}, {\n //4-letter\n amed: Past,\n aped: Past,\n ched: Past,\n lked: Past,\n nded: Past,\n cted: Past,\n dged: Past,\n akis: Last,\n //greek\n cede: Inf,\n chuk: Last,\n //east-europe\n czyk: Last,\n //polish (male)\n ects: Pres,\n ends: Vb,\n enko: Last,\n //east-europe\n ette: Sing,\n fies: Pres,\n fore: Avb,\n gate: Inf,\n gone: Adj,\n ices: Plrl,\n ints: Plrl,\n ines: Plrl,\n ions: Plrl,\n less: Avb,\n llen: Adj,\n made: Adj,\n nsen: Last,\n //norway\n oses: Pres,\n ould: Modal,\n some: Adj,\n sson: Last,\n //swedish male\n tage: Inf,\n teen: 'Value',\n tion: Sing,\n tive: Adj,\n tors: Noun,\n vice: Sing\n}, {\n //5-letter\n tized: Past,\n urned: Past,\n eased: Past,\n ances: Plrl,\n bound: Adj,\n ettes: Plrl,\n fully: Avb,\n ishes: Pres,\n ities: Plrl,\n marek: Last,\n //polish (male)\n nssen: Last,\n //norway\n ology: Noun,\n ports: Plrl,\n rough: Adj,\n tches: Pres,\n tieth: 'Ordinal',\n tures: Plrl,\n wards: Avb,\n where: Avb\n}, {\n //6-letter\n auskas: Last,\n //lithuania\n keeper: Actor,\n logist: Actor,\n teenth: 'Value'\n}, {\n //7-letter\n opoulos: Last,\n //greek\n borough: Place,\n //Hillsborough\n sdottir: Last //swedish female\n\n}];\n\nvar endRegexs = function endRegexs(term, world) {\n var str = term.clean;\n var _char = str[str.length - 1];\n\n if (endsWith.hasOwnProperty(_char) === true) {\n var regs = endsWith[_char];\n\n for (var r = 0; r < regs.length; r += 1) {\n if (regs[r][0].test(str) === true) {\n term.tagSafe(regs[r][1], \"endReg \".concat(_char, \" #\").concat(r), world);\n break;\n }\n }\n }\n}; //sweep-through all suffixes\n\n\nvar knownSuffixes = function knownSuffixes(term, world) {\n var len = term.clean.length;\n var max = 7;\n\n if (len <= max) {\n max = len - 1;\n }\n\n for (var i = max; i > 1; i -= 1) {\n var str = term.clean.substr(len - i, len);\n\n if (suffixMap[str.length].hasOwnProperty(str) === true) {\n var tag = suffixMap[str.length][str];\n term.tagSafe(tag, 'suffix -' + str, world);\n break;\n }\n }\n}; //all-the-way-down!\n\n\nvar checkRegex = function checkRegex(term, world) {\n knownSuffixes(term, world);\n endRegexs(term, world);\n};\n\nvar _04Suffixes = checkRegex;\n\n//just some of the most common emoticons\n//faster than\n//http://stackoverflow.com/questions/28077049/regex-matching-emoticons\nvar emoticons = {\n ':(': true,\n ':)': true,\n ':P': true,\n ':p': true,\n ':O': true,\n ':3': true,\n ':|': true,\n ':/': true,\n ':\\\\': true,\n ':$': true,\n ':*': true,\n ':@': true,\n ':-(': true,\n ':-)': true,\n ':-P': true,\n ':-p': true,\n ':-O': true,\n ':-3': true,\n ':-|': true,\n ':-/': true,\n ':-\\\\': true,\n ':-$': true,\n ':-*': true,\n ':-@': true,\n ':^(': true,\n ':^)': true,\n ':^P': true,\n ':^p': true,\n ':^O': true,\n ':^3': true,\n ':^|': true,\n ':^/': true,\n ':^\\\\': true,\n ':^$': true,\n ':^*': true,\n ':^@': true,\n '):': true,\n '(:': true,\n '$:': true,\n '*:': true,\n ')-:': true,\n '(-:': true,\n '$-:': true,\n '*-:': true,\n ')^:': true,\n '(^:': true,\n '$^:': true,\n '*^:': true,\n '<3': true,\n ' 35) {\n return false;\n }\n\n return true;\n }\n\n return false;\n}; //check against emoticon whitelist\n\n\nvar isEmoticon = function isEmoticon(str) {\n str = str.replace(/^[:;]/, ':'); //normalize the 'eyes'\n\n return emoticons.hasOwnProperty(str);\n};\n\nvar tagEmoji = function tagEmoji(term, world) {\n var raw = term.pre + term.text + term.post;\n raw = raw.trim(); //dont double-up on ending periods\n\n raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis\n\n if (isCommaEmoji(raw) === true) {\n term.tag('Emoji', 'comma-emoji', world);\n term.text = raw;\n term.pre = term.pre.replace(':', '');\n term.post = term.post.replace(':', '');\n } //test for unicode emojis\n\n\n if (term.text.match(emojiReg)) {\n term.tag('Emoji', 'unicode-emoji', world);\n term.text = raw;\n } //test for emoticon ':)' emojis\n\n\n if (isEmoticon(raw) === true) {\n term.tag('Emoticon', 'emoticon-emoji', world);\n term.text = raw;\n }\n};\n\nvar _05Emoji = tagEmoji;\n\nvar steps = {\n lexicon: _01Lexicon,\n punctuation: _02Punctuation,\n regex: _03Prefixes,\n suffix: _04Suffixes,\n emoji: _05Emoji\n}; //'lookups' look at a term by itself\n\nvar lookups = function lookups(doc, terms) {\n var world = doc.world; //our list of known-words\n\n steps.lexicon(terms, world); //try these other methods\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i]; //or maybe some helpful punctuation\n\n steps.punctuation(terms, i, world); //mostly prefix checks\n\n steps.regex(term, world); //maybe we can guess\n\n steps.suffix(term, world); //emoji and emoticons\n\n steps.emoji(term, world);\n }\n\n return doc;\n};\n\nvar _01Init = lookups;\n\n//markov-like stats about co-occurance, for hints about unknown terms\n//basically, a little-bit better than the noun-fallback\n//just top n-grams from nlp tags, generated from nlp-corpus\n//after this word, here's what happens usually\nvar afterThisWord = {\n i: 'Verb',\n //44% //i walk..\n first: 'Noun',\n //50% //first principles..\n it: 'Verb',\n //33%\n there: 'Verb',\n //35%\n not: 'Verb',\n //33%\n because: 'Noun',\n //31%\n \"if\": 'Noun',\n //32%\n but: 'Noun',\n //26%\n who: 'Verb',\n //40%\n \"this\": 'Noun',\n //37%\n his: 'Noun',\n //48%\n when: 'Noun',\n //33%\n you: 'Verb',\n //35%\n very: 'Adjective',\n // 39%\n old: 'Noun',\n //51%\n never: 'Verb',\n //42%\n before: 'Noun' //28%\n\n}; //in advance of this word, this is what happens usually\n\nvar beforeThisWord = {\n there: 'Verb',\n //23% // be there\n me: 'Verb',\n //31% //see me\n man: 'Adjective',\n // 80% //quiet man\n only: 'Verb',\n //27% //sees only\n him: 'Verb',\n //32% //show him\n were: 'Noun',\n //48% //we were\n took: 'Noun',\n //38% //he took\n himself: 'Verb',\n //31% //see himself\n went: 'Noun',\n //43% //he went\n who: 'Noun',\n //47% //person who\n jr: 'Person'\n}; //following this POS, this is likely\n\nvar afterThisPOS = {\n Adjective: 'Noun',\n //36% //blue dress\n Possessive: 'Noun',\n //41% //his song\n Determiner: 'Noun',\n //47%\n Adverb: 'Verb',\n //20%\n Pronoun: 'Verb',\n //40%\n Value: 'Noun',\n //47%\n Ordinal: 'Noun',\n //53%\n Modal: 'Verb',\n //35%\n Superlative: 'Noun',\n //43%\n Demonym: 'Noun',\n //38%\n Honorific: 'Person' //\n\n}; //in advance of this POS, this is likely\n\nvar beforeThisPOS = {\n Copula: 'Noun',\n //44% //spencer is\n PastTense: 'Noun',\n //33% //spencer walked\n Conjunction: 'Noun',\n //36%\n Modal: 'Noun',\n //38%\n Pluperfect: 'Noun',\n //40%\n PerfectTense: 'Verb' //32%\n\n};\nvar markov = {\n beforeThisWord: beforeThisWord,\n afterThisWord: afterThisWord,\n beforeThisPos: beforeThisPOS,\n afterThisPos: afterThisPOS\n};\n\nvar afterKeys = Object.keys(markov.afterThisPos);\nvar beforeKeys = Object.keys(markov.beforeThisPos);\n\nvar checkNeighbours = function checkNeighbours(terms, world) {\n var _loop = function _loop(i) {\n var term = terms[i]; //do we still need a tag?\n\n if (term.isKnown() === true) {\n return \"continue\";\n } //ok, this term needs a tag.\n //look at previous word for clues..\n\n\n var lastTerm = terms[i - 1];\n\n if (lastTerm) {\n // 'foobar term'\n if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) {\n var tag = markov.afterThisWord[lastTerm.clean];\n term.tag(tag, 'after-' + lastTerm.clean, world);\n return \"continue\";\n } // 'Tag term'\n // (look at previous POS tags for clues..)\n\n\n var foundTag = afterKeys.find(function (tag) {\n return lastTerm.tags[tag];\n });\n\n if (foundTag !== undefined) {\n var _tag = markov.afterThisPos[foundTag];\n term.tag(_tag, 'after-' + foundTag, world);\n return \"continue\";\n }\n } //look at next word for clues..\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm) {\n // 'term foobar'\n if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) {\n var _tag2 = markov.beforeThisWord[nextTerm.clean];\n term.tag(_tag2, 'before-' + nextTerm.clean, world);\n return \"continue\";\n } // 'term Tag'\n // (look at next POS tags for clues..)\n\n\n var _foundTag = beforeKeys.find(function (tag) {\n return nextTerm.tags[tag];\n });\n\n if (_foundTag !== undefined) {\n var _tag3 = markov.beforeThisPos[_foundTag];\n term.tag(_tag3, 'before-' + _foundTag, world);\n return \"continue\";\n }\n }\n };\n\n for (var i = 0; i < terms.length; i += 1) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n};\n\nvar _01Neighbours = checkNeighbours;\n\nvar titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\nvar hasNumber = /[0-9]/;\n/** look for any grammar signals based on capital/lowercase */\n\nvar checkCase = function checkCase(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 1; i < terms.length; i++) {\n var term = terms[i];\n\n if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) {\n term.tag('ProperNoun', 'titlecase-noun', world);\n }\n }\n });\n};\n\nvar _02Case = checkCase;\n\nvar hasPrefix = /^(re|un)-?[a-z\\u00C0-\\u00FF]/;\nvar prefix = /^(re|un)-?/;\n/** check 'rewatch' in lexicon as 'watch' */\n\nvar checkPrefix = function checkPrefix(terms, world) {\n var lex = world.words;\n terms.forEach(function (term) {\n // skip if we have a good tag already\n if (term.isKnown() === true) {\n return;\n } //does it start with 'un|re'\n\n\n if (hasPrefix.test(term.clean) === true) {\n // look for the root word in the lexicon:\n var stem = term.clean.replace(prefix, '');\n\n if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) {\n term.tag(lex[stem], 'stem-' + stem, world);\n }\n }\n });\n};\n\nvar _03Stem = checkPrefix;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$3 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens\n/(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar isPlural_1$2 = {\n isSingular: isSingular$1,\n isPlural: isPlural$3\n};\n\nvar noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday'];\nvar notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/];\nvar notSingular = [/i$/, /ae$/];\n/** turn nouns into singular/plural */\n\nvar checkPlural = function checkPlural(t, world) {\n if (t.tags.Noun && !t.tags.Acronym) {\n var str = t.clean; //skip existing tags, fast\n\n if (t.tags.Singular || t.tags.Plural) {\n return;\n } //too short\n\n\n if (str.length <= 3) {\n t.tag('Singular', 'short-singular', world);\n return;\n } //is it impossible to be plural?\n\n\n if (noPlurals.find(function (tag) {\n return t.tags[tag];\n })) {\n return;\n } // isPlural suffix rules\n\n\n if (isPlural_1$2.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Plural', 'plural-rules', world);\n return;\n } // isSingular suffix rules\n\n\n if (isPlural_1$2.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Singular', 'singular-rules', world);\n return;\n } // finally, fallback 'looks plural' rules..\n\n\n if (/s$/.test(str) === true) {\n //avoid anything too sketchy to be plural\n if (notPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Plural', 'plural-fallback', world);\n return;\n } //avoid anything too sketchy to be singular\n\n\n if (notSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Singular', 'singular-fallback', world);\n }\n};\n\nvar _04Plurals = checkPlural;\n\n//nouns that also signal the title of an unknown organization\n//todo remove/normalize plural forms\nvar orgWords = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law',\n'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network',\n'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party',\n\"people's party\", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers'];\nvar organizations = orgWords.reduce(function (h, str) {\n h[str] = 'Noun';\n return h;\n}, {});\n\nvar maybeOrg = function maybeOrg(t) {\n //must be a noun\n if (!t.tags.Noun) {\n return false;\n } //can't be these things\n\n\n if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) {\n return false;\n } //must be one of these\n\n\n if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) {\n return true;\n }\n\n return false;\n};\n\nvar tagOrgs = function tagOrgs(terms, world) {\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (organizations[t.clean] !== undefined && organizations.hasOwnProperty(t.clean) === true) {\n // look-backward - eg. 'Toronto University'\n var lastTerm = terms[i - 1];\n\n if (lastTerm !== undefined && maybeOrg(lastTerm) === true) {\n lastTerm.tagSafe('Organization', 'org-word-1', world);\n t.tagSafe('Organization', 'org-word-2', world);\n continue;\n } //look-forward - eg. University of Toronto\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm !== undefined && nextTerm.clean === 'of') {\n if (terms[i + 2] && maybeOrg(terms[i + 2])) {\n t.tagSafe('Organization', 'org-of-word-1', world);\n nextTerm.tagSafe('Organization', 'org-of-word-2', world);\n terms[i + 2].tagSafe('Organization', 'org-of-word-3', world);\n continue;\n }\n }\n }\n }\n};\n\nvar _05Organizations = tagOrgs;\n\nvar oneLetterAcronym = /^[A-Z]('s|,)?$/;\nvar periodSeperated = /([A-Z]\\.){2}[A-Z]?/i;\nvar oneLetterWord = {\n I: true,\n A: true\n};\n\nvar isAcronym = function isAcronym(term, world) {\n var str = term.reduced; // a known acronym like fbi\n\n if (term.tags.Acronym) {\n return true;\n } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) {\n // return false\n // }\n // known-words, like 'PIZZA' is not an acronym.\n\n\n if (world.words[str]) {\n return false;\n } // long capitalized words are not usually either\n\n\n if (str.length > 5) {\n return false;\n }\n\n return term.isAcronym();\n}; // F.B.I., NBC, - but not 'NO COLLUSION'\n\n\nvar checkAcronym = function checkAcronym(terms, world) {\n terms.forEach(function (term) {\n //these are not acronyms\n if (term.tags.RomanNumeral === true) {\n return;\n } //period-ones F.D.B.\n\n\n if (periodSeperated.test(term.text) === true) {\n term.tag('Acronym', 'period-acronym', world);\n } //non-period ones are harder\n\n\n if (term.isUpperCase() && isAcronym(term, world)) {\n term.tag('Acronym', 'acronym-step', world);\n term.tag('Noun', 'acronym-infer', world);\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n term.tag('Acronym', 'one-letter-acronym', world);\n term.tag('Noun', 'one-letter-infer', world);\n } //if it's a organization,\n\n\n if (term.tags.Organization && term.text.length <= 3) {\n term.tag('Acronym', 'acronym-org', world);\n }\n\n if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) {\n term.tag('Acronym', 'acronym-org-case', world);\n }\n });\n};\n\nvar _06Acronyms = checkAcronym;\n\nvar step = {\n neighbours: _01Neighbours,\n \"case\": _02Case,\n stem: _03Stem,\n plural: _04Plurals,\n organizations: _05Organizations,\n acronyms: _06Acronyms\n}; //\n\nvar fallbacks = function fallbacks(doc, terms) {\n var world = doc.world; // if it's empty, consult it's neighbours, first\n\n step.neighbours(terms, world); // is there a case-sensitive clue?\n\n step[\"case\"](doc); // check 'rewatch' as 'watch'\n\n step.stem(terms, world); // ... fallback to a noun!\n\n terms.forEach(function (t) {\n if (t.isKnown() === false) {\n t.tag('Noun', 'noun-fallback', doc.world);\n }\n }); // turn 'Foo University' into an Org\n\n step.organizations(terms, world); //turn 'FBD' into an acronym\n\n step.acronyms(terms, world); //are the nouns singular or plural?\n\n terms.forEach(function (t) {\n step.plural(t, doc.world);\n });\n return doc;\n};\n\nvar _02Fallbacks = fallbacks;\n\nvar hasNegative = /n't$/;\nvar irregulars$2 = {\n \"won't\": ['will', 'not'],\n wont: ['will', 'not'],\n \"can't\": ['can', 'not'],\n cant: ['can', 'not'],\n cannot: ['can', 'not'],\n \"shan't\": ['should', 'not'],\n dont: ['do', 'not'],\n dun: ['do', 'not'] // \"ain't\" is ambiguous for is/was\n\n}; // either 'is not' or 'are not'\n\nvar doAint = function doAint(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var before = terms.slice(0, index); //look for the preceding noun\n\n var noun = before.find(function (t) {\n return t.tags.Noun;\n });\n\n if (noun && noun.tags.Plural) {\n return ['are', 'not'];\n }\n\n return ['is', 'not'];\n};\n\nvar checkNegative = function checkNegative(term, phrase) {\n //check named-ones\n if (irregulars$2.hasOwnProperty(term.clean) === true) {\n return irregulars$2[term.clean];\n } //this word needs it's own logic:\n\n\n if (term.clean === \"ain't\" || term.clean === 'aint') {\n return doAint(term, phrase);\n } //try it normally\n\n\n if (hasNegative.test(term.clean) === true) {\n var main = term.clean.replace(hasNegative, '');\n return [main, 'not'];\n }\n\n return null;\n};\n\nvar _01Negative = checkNegative;\n\nvar contraction$1 = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous\n\nvar easy = {\n ll: 'will',\n ve: 'have',\n re: 'are',\n m: 'am',\n \"n't\": 'not'\n}; //\n\nvar checkApostrophe = function checkApostrophe(term) {\n var parts = term.text.match(contraction$1);\n\n if (parts === null) {\n return null;\n }\n\n if (easy.hasOwnProperty(parts[2])) {\n return [parts[1], easy[parts[2]]];\n }\n\n return null;\n};\n\nvar _02Simple = checkApostrophe;\n\nvar irregulars$1 = {\n wanna: ['want', 'to'],\n gonna: ['going', 'to'],\n im: ['i', 'am'],\n alot: ['a', 'lot'],\n ive: ['i', 'have'],\n imma: ['I', 'will'],\n \"where'd\": ['where', 'did'],\n whered: ['where', 'did'],\n \"when'd\": ['when', 'did'],\n whend: ['when', 'did'],\n // \"how'd\": ['how', 'did'], //'how would?'\n // \"what'd\": ['what', 'did'], //'what would?'\n howd: ['how', 'did'],\n whatd: ['what', 'did'],\n // \"let's\": ['let', 'us'], //too weird\n //multiple word contractions\n dunno: ['do', 'not', 'know'],\n brb: ['be', 'right', 'back'],\n gtg: ['got', 'to', 'go'],\n irl: ['in', 'real', 'life'],\n tbh: ['to', 'be', 'honest'],\n imo: ['in', 'my', 'opinion'],\n til: ['today', 'i', 'learned'],\n rn: ['right', 'now'],\n twas: ['it', 'was'],\n '@': ['at']\n}; //\n\nvar checkIrregulars = function checkIrregulars(term) {\n //check white-list\n if (irregulars$1.hasOwnProperty(term.clean)) {\n return irregulars$1[term.clean];\n }\n\n return null;\n};\n\nvar _03Irregulars = checkIrregulars;\n\nvar hasApostropheS = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]s$/i;\nvar banList = {\n that: true,\n there: true\n};\nvar hereThere = {\n here: true,\n there: true,\n everywhere: true\n};\n\nvar isPossessive = function isPossessive(term, pool) {\n // if we already know it\n if (term.tags.Possessive) {\n return true;\n } //a pronoun can't be possessive - \"he's house\"\n\n\n if (term.tags.Pronoun || term.tags.QuestionWord) {\n return false;\n }\n\n if (banList.hasOwnProperty(term.reduced)) {\n return false;\n } //if end of sentence, it is possessive - \"was spencer's\"\n\n\n var nextTerm = pool.get(term.next);\n\n if (!nextTerm) {\n return true;\n } //a gerund suggests 'is walking'\n\n\n if (nextTerm.tags.Verb) {\n //fix 'jamie's bite'\n if (nextTerm.tags.Infinitive) {\n return true;\n } //fix 'spencer's runs'\n\n\n if (nextTerm.tags.PresentTense) {\n return true;\n }\n\n return false;\n } //spencer's house\n\n\n if (nextTerm.tags.Noun) {\n // 'spencer's here'\n if (hereThere.hasOwnProperty(nextTerm.reduced) === true) {\n return false;\n }\n\n return true;\n } //rocket's red glare\n\n\n var twoTerm = pool.get(nextTerm.next);\n\n if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) {\n return true;\n } //othwerwise, an adjective suggests 'is good'\n\n\n if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) {\n return false;\n }\n\n return false;\n};\n\nvar isHas = function isHas(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 3); //look for a past-tense verb\n\n return after.find(function (t) {\n return t.tags.PastTense;\n });\n};\n\nvar checkPossessive = function checkPossessive(term, phrase, world) {\n //the rest of 's\n var found = term.text.match(hasApostropheS);\n\n if (found !== null) {\n //spencer's thing vs spencer-is\n if (isPossessive(term, phrase.pool) === true) {\n term.tag('#Possessive', 'isPossessive', world);\n return null;\n } //'spencer is'\n\n\n if (found !== null) {\n if (isHas(term, phrase)) {\n return [found[1], 'has'];\n }\n\n return [found[1], 'is'];\n }\n }\n\n return null;\n};\n\nvar _04Possessive = checkPossessive;\n\nvar hasPerfect = /[a-z\\u00C0-\\u00FF]'d$/;\nvar useDid = {\n how: true,\n what: true\n};\n/** split `i'd` into 'i had', or 'i would' */\n\nvar checkPerfect = function checkPerfect(term, phrase) {\n if (hasPerfect.test(term.clean)) {\n var root = term.clean.replace(/'d$/, ''); //look at the next few words\n\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked'\n\n for (var i = 0; i < after.length; i++) {\n var t = after[i];\n\n if (t.tags.Verb) {\n if (t.tags.PastTense) {\n return [root, 'had'];\n } //what'd you see\n\n\n if (useDid[root] === true) {\n return [root, 'did'];\n }\n\n return [root, 'would'];\n }\n } //otherwise, 'i'd walk'\n\n\n return [root, 'would'];\n }\n\n return null;\n};\n\nvar _05PerfectTense = checkPerfect;\n\nvar isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i;\nvar timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)[-–—]([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4'\n\nvar checkRange = function checkRange(term) {\n if (term.tags.PhoneNumber === true) {\n return null;\n }\n\n var parts = term.text.match(isRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[2]];\n } else {\n parts = term.text.match(timeRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[4]];\n }\n }\n\n return null;\n};\n\nvar _06Ranges = checkRange;\n\nvar contraction = /^(l|c|d|j|m|n|qu|s|t)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z\\u00C0-\\u00FF]+)$/i; // basic support for ungendered french contractions\n// not perfect, but better than nothing, to support matching on french text.\n\nvar french = {\n l: 'le',\n // l'amour\n c: 'ce',\n // c'est\n d: 'de',\n // d'amerique\n j: 'je',\n // j'aime\n m: 'me',\n // m'appelle\n n: 'ne',\n // n'est\n qu: 'que',\n // qu'il\n s: 'se',\n // s'appelle\n t: 'tu' // t'aime\n\n};\n\nvar checkFrench = function checkFrench(term) {\n var parts = term.text.match(contraction);\n\n if (parts === null || french.hasOwnProperty(parts[1]) === false) {\n return null;\n }\n\n var arr = [french[parts[1]], parts[2]];\n\n if (arr[0] && arr[1]) {\n return arr;\n }\n\n return null;\n};\n\nvar _07French = checkFrench;\n\nvar isNumber = /^[0-9]+$/;\nvar isOrdinal = /^[0-9]+(st|nd|rd|th)$/;\nvar isTime = /^[0-9:]+(am|pm)$/;\n\nvar createPhrase = function createPhrase(found, doc) {\n //create phrase from ['would', 'not']\n var phrase = _01Tokenizer(found.join(' '), doc.world, doc.pool())[0]; //tag it\n\n var terms = phrase.terms();\n _01Lexicon(terms, doc.world); //make these terms implicit\n\n terms.forEach(function (t) {\n t.implicit = t.text;\n t.text = '';\n t.clean = ''; // remove whitespace for implicit terms\n\n t.pre = '';\n t.post = ''; // tag number-ranges\n\n if (isNumber.test(t.implicit)) {\n t.tag('Cardinal', 'num-range', doc.world);\n } else if (isOrdinal.test(t.implicit)) {\n t.tag('Ordinal', 'ord-range', doc.world);\n } else if (isTime.test(t.implicit)) {\n t.tag('Time', 'time-range', doc.world);\n } else if (Object.keys(t.tags).length === 0) {\n t.tags.Noun = true; // if no tag, give it a noun\n }\n });\n return phrase;\n};\n\nvar contractions = function contractions(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i];\n var found = _01Negative(term, p);\n found = found || _02Simple(term);\n found = found || _03Irregulars(term);\n found = found || _04Possessive(term, p, world);\n found = found || _05PerfectTense(term, p);\n found = found || _06Ranges(term);\n found = found || _07French(term); //add them in\n\n if (found !== null) {\n var newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it\n\n if (p.has('#NumberRange') === true) {\n doc.buildFrom([newPhrase]).tag('NumberRange');\n } //set text as contraction\n\n\n var firstTerm = newPhrase.terms(0);\n firstTerm.text = term.text; //grab sub-phrase to remove\n\n var match = p.buildFrom(term.id, 1, doc.pool());\n match.replace(newPhrase, doc, true);\n }\n }\n });\n return doc;\n};\n\nvar _03Contractions = contractions;\n\nvar hasWord = function hasWord(doc, word) {\n var arr = doc._cache.words[word] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n};\n\nvar hasTag = function hasTag(doc, tag) {\n var arr = doc._cache.tags[tag] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n}; //mostly pos-corections here\n\n\nvar miscCorrection = function miscCorrection(doc) {\n // imperative-form\n var m = hasTag(doc, 'Infinitive');\n\n if (m.found) {\n // you eat?\n m = m.ifNo('@hasQuestionMark'); // i speak\n\n m = m.ifNo('(i|we|they)'); // shut the door!\n\n m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast\n\n m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go\n\n m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it\n\n m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it');\n } //exactly like\n\n\n m = hasWord(doc, 'like');\n m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange.\n\n m = hasTag(doc, 'Adjective');\n m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous)\n\n m = hasTag(doc, 'FirstName');\n m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train\n\n m = hasTag(doc, 'Value');\n m = m.match('#Value #PresentTense').ifNo('#Copula');\n\n if (m.found) {\n if (m.has('(one|1)') === true) {\n m.terms(1).tag('Singular', 'one-presentTense');\n } else {\n m.terms(1).tag('Plural', 'value-presentTense');\n }\n } // well i've been...\n\n\n doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second\n\n doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds\n\n doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking\n\n m = hasTag(doc, 'Gerund');\n m.match(\"(be|been) (#Adverb|not)+? #Gerund\").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse'\n\n doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives\n //'her match' vs 'let her match'\n\n m = hasTag(doc, 'Possessive');\n m = m.match('#Possessive [#Infinitive]', 0);\n\n if (!m.lookBehind('(let|made|make|force|ask)').found) {\n m.tag('Noun', 'her-match');\n }\n\n return doc;\n};\n\nvar fixMisc = miscCorrection;\n\nvar unique = function unique(arr) {\n var obj = {};\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = true;\n }\n\n return Object.keys(obj);\n};\n\nvar _unique = unique;\n\n// order matters\nvar list$5 = [// ==== Mutliple tags ====\n{\n match: 'too much',\n tag: 'Adverb Adjective',\n reason: 'bit-4'\n}, // u r cool\n{\n match: 'u r',\n tag: 'Pronoun Copula',\n reason: 'u r'\n}, //sometimes adverbs - 'pretty good','well above'\n{\n match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)',\n tag: '#Copula #Adverb #Adjective',\n reason: 'sometimes-adverb'\n}, //i better ..\n{\n match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense',\n group: 0,\n tag: 'Modal',\n reason: 'i-better'\n}, //walking is cool\n{\n match: '[#Gerund] #Adverb? not? #Copula',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-copula'\n}, //walking should be fun\n{\n match: '[#Gerund] #Modal',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-modal'\n}, //swear-words as non-expression POS\n{\n match: 'holy (shit|fuck|hell)',\n tag: 'Expression',\n reason: 'swears-expression'\n}, //Aircraft designer\n{\n match: '#Noun #Actor',\n tag: 'Actor',\n reason: 'thing-doer'\n}, {\n match: '#Conjunction [u]',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-2'\n}, //'u' as pronoun\n{\n match: '[u] #Verb',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-1'\n}, // ==== Determiners ====\n{\n match: '#Noun [(who|whom)]',\n group: 0,\n tag: 'Determiner',\n reason: 'captain-who'\n}, //that car goes\n// { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' },\n{\n match: 'a bit much',\n tag: 'Determiner Adverb Adjective',\n reason: 'bit-3'\n}, // ==== Propositions ====\n//all students\n{\n match: '#Verb #Adverb? #Noun [(that|which)]',\n group: 0,\n tag: 'Preposition',\n reason: 'that-prep'\n}, //work, which has been done.\n{\n match: '@hasComma [which] (#Pronoun|#Verb)',\n group: 0,\n tag: 'Preposition',\n reason: 'which-copula'\n}, {\n match: '#Copula just [like]',\n group: 0,\n tag: 'Preposition',\n reason: 'like-preposition'\n}, //folks like her\n{\n match: '#Noun [like] #Noun',\n group: 0,\n tag: 'Preposition',\n reason: 'noun-like'\n}, //fix for busted-up phrasalVerbs\n// { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' },\n// ==== Conditions ====\n// had he survived,\n{\n match: '[had] #Noun+ #PastTense',\n group: 0,\n tag: 'Condition',\n reason: 'had-he'\n}, // were he to survive\n{\n match: '[were] #Noun+ to #Infinitive',\n group: 0,\n tag: 'Condition',\n reason: 'were-he'\n}, // ==== Questions ====\n//the word 'how'\n{\n match: '^how',\n tag: 'QuestionWord',\n reason: 'how-question'\n}, {\n match: '[how] (#Determiner|#Copula|#Modal|#PastTense)',\n group: 0,\n tag: 'QuestionWord',\n reason: 'how-is'\n}, // //the word 'which'\n{\n match: '^which',\n tag: 'QuestionWord',\n reason: 'which-question'\n}, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' },\n// { match: 'which', tag: 'QuestionWord', reason: 'which-question3' },\n// ==== Conjunctions ====\n{\n match: '[so] #Noun',\n group: 0,\n tag: 'Conjunction',\n reason: 'so-conj'\n}, //how he is driving\n{\n match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)',\n group: 0,\n tag: 'Conjunction',\n reason: 'how-he-is-x'\n} // {\n// match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund',\n// group: 0,\n// tag: 'Conjunction',\n// reason: 'when-i-go-fishing',\n// },\n];\nvar _01Misc = list$5;\n\nvar _ambig = {\n // adverbs than can be adjectives\n adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'],\n // names that are dates\n personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'],\n // names that may be months\n personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'],\n // names that are adjectives\n personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'],\n // names that are verbs\n personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'],\n // names that are verbs\n personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'],\n // names that are nouns\n personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white']\n};\n\nvar dates = \"(\".concat(_ambig.personDate.join('|'), \")\");\nvar list$4 = [// ==== Holiday ====\n{\n match: '#Holiday (day|eve)',\n tag: 'Holiday',\n reason: 'holiday-day'\n}, // the captain who\n// ==== WeekDay ====\n// sun the 5th\n{\n match: '[sun] the #Ordinal',\n tag: 'WeekDay',\n reason: 'sun-the-5th'\n}, //sun feb 2\n{\n match: '[sun] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sun-feb'\n}, //1pm next sun\n{\n match: '#Date (on|this|next|last|during)? [sun]',\n group: 0,\n tag: 'WeekDay',\n reason: '1pm-sun'\n}, //this sat\n{\n match: \"(in|by|before|during|on|until|after|of|within|all) [sat]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'sat'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [wed]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'wed'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [march]\",\n group: 0,\n tag: 'Month',\n reason: 'march'\n}, //sat november\n{\n match: '[sat] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sat-feb'\n}, // ==== Month ====\n//all march\n{\n match: \"#Preposition [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'in-month'\n}, //this march\n{\n match: \"this [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"next [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"last [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, // march 5th\n{\n match: \"[(march|may)] the? #Value\",\n group: 0,\n tag: 'Month',\n reason: 'march-5th'\n}, // 5th of march\n{\n match: \"#Value of? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: '5th-of-march'\n}, // march and feb\n{\n match: \"[(march|may)] .? #Date\",\n group: 0,\n tag: 'Month',\n reason: 'march-and-feb'\n}, // feb to march\n{\n match: \"#Date .? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'feb-and-march'\n}, //quickly march\n{\n match: \"#Adverb [(march|may)]\",\n group: 0,\n tag: 'Verb',\n reason: 'quickly-march'\n}, //march quickly\n{\n match: \"[(march|may)] #Adverb\",\n group: 0,\n tag: 'Verb',\n reason: 'march-quickly'\n}, //5th of March\n{\n match: '#Value of #Month',\n tag: 'Date',\n reason: 'value-of-month'\n}, //5 March\n{\n match: '#Cardinal #Month',\n tag: 'Date',\n reason: 'cardinal-month'\n}, //march 5 to 7\n{\n match: '#Month #Value to #Value',\n tag: 'Date',\n reason: 'value-to-value'\n}, //march the 12th\n{\n match: '#Month the #Value',\n tag: 'Date',\n reason: 'month-the-value'\n}, //june 7\n{\n match: '(#WeekDay|#Month) #Value',\n tag: 'Date',\n reason: 'date-value'\n}, //7 june\n{\n match: '#Value (#WeekDay|#Month)',\n tag: 'Date',\n reason: 'value-date'\n}, //may twenty five\n{\n match: '(#TextValue && #Date) #TextValue',\n tag: 'Date',\n reason: 'textvalue-date'\n}, // in june\n{\n match: \"in [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"during [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"on [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"by [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'by-june'\n}, {\n match: \"after [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'after-june'\n}, {\n match: \"#Date [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, // june 1992\n{\n match: \"\".concat(dates, \" #Value\"),\n tag: 'Date',\n reason: 'june-5th'\n}, {\n match: \"\".concat(dates, \" #Date\"),\n tag: 'Date',\n reason: 'june-5th'\n}, // June Smith\n{\n match: \"\".concat(dates, \" #ProperNoun\"),\n tag: 'Person',\n reason: 'june-smith',\n safe: true\n}, // june m. Cooper\n{\n match: \"\".concat(dates, \" #Acronym? (#ProperNoun && !#Month)\"),\n tag: 'Person',\n reason: 'june-smith-jr'\n}, // 'second'\n{\n match: \"#Cardinal [second]\",\n tag: 'Unit',\n reason: 'one-second'\n}, // second quarter\n// { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' },\n// 'aug 20-21'\n{\n match: \"#Month #NumberRange\",\n tag: 'Date',\n reason: 'aug 20-21'\n}, // timezones\n// china standard time\n{\n match: \"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",\n tag: 'Timezone',\n reason: 'std-time'\n}, // eastern time\n{\n match: \"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",\n tag: 'Timezone',\n reason: 'eastern-time'\n}, // 5pm central\n{\n match: \"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",\n group: 0,\n tag: 'Timezone',\n reason: '5pm-central'\n}, // central european time\n{\n match: \"(central|western|eastern) european time\",\n tag: 'Timezone',\n reason: 'cet'\n}];\nvar _02Dates = list$4;\n\nvar adjectives$1 = \"(\".concat(_ambig.personAdjective.join('|'), \")\");\nvar list$3 = [// all fell apart\n{\n match: '[all] #Determiner? #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'all-noun'\n}, // very rusty\n{\n match: \"#Adverb [\".concat(adjectives$1, \"]\"),\n group: 0,\n tag: 'Adjective',\n reason: 'really-rich'\n}, // rusty smith\n{\n match: \"\".concat(adjectives$1, \" #Person\"),\n tag: 'Person',\n reason: 'randy-smith'\n}, // rusty a. smith\n{\n match: \"\".concat(adjectives$1, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'rusty-smith'\n}, //sometimes not-adverbs\n{\n match: '#Copula [(just|alone)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'not-adverb'\n}, //jack is guarded\n{\n match: '#Singular is #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'is-filled'\n}, // smoked poutine is\n{\n match: '[#PastTense] #Singular is',\n group: 0,\n tag: 'Adjective',\n reason: 'smoked-poutine'\n}, // baked onions are\n{\n match: '[#PastTense] #Plural are',\n group: 0,\n tag: 'Adjective',\n reason: 'baked-onions'\n}, // well made\n{\n match: 'well [#PastTense]',\n group: 0,\n tag: 'Adjective',\n reason: 'well-made'\n}, // is f*ed up\n{\n match: '#Copula [fucked up?]',\n tag: 'Adjective',\n reason: 'swears-adjective'\n}, //jack seems guarded\n{\n match: '#Singular (seems|appears) #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'seems-filled'\n}, // Gerund-Adjectives - 'amusing, annoying'\n//a staggering cost\n{\n match: '(a|an) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a|an'\n}, //as amusing as\n{\n match: 'as [#Gerund] as',\n group: 0,\n tag: 'Adjective',\n reason: 'as-gerund-as'\n}, // more amusing than\n{\n match: 'more [#Gerund] than',\n group: 0,\n tag: 'Adjective',\n reason: 'more-gerund-than'\n}, // very amusing\n{\n match: '(so|very|extremely) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'so-gerund'\n}, // it was amusing\n{\n match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'it-was-gerund'\n}, // found it amusing\n{\n match: '(found|found) it #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'found-it-gerund'\n}, // a bit amusing\n{\n match: 'a (little|bit|wee) bit? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-bit-gerund'\n}, // jury is out - preposition ➔ adjective\n{\n match: '#Copula #Adjective? [(out|in|through)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'still-out'\n}, // shut the door\n{\n match: '^[#Adjective] (the|your) #Noun',\n group: 0,\n tag: 'Infinitive',\n reason: 'shut-the'\n}];\nvar _03Adjective = list$3;\n\nvar _04Noun = [// ==== Plural ====\n//there are reasons\n{\n match: 'there (are|were) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Plural',\n reason: 'there-are'\n}, // ==== Singular ====\n//the sun\n{\n match: '#Determiner [sun]',\n group: 0,\n tag: 'Singular',\n reason: 'the-sun'\n}, //did a 900, paid a 20\n{\n match: '#Verb (a|an) [#Value]',\n group: 0,\n tag: 'Singular',\n reason: 'did-a-value'\n}, //'the can'\n{\n match: 'the [(can|will|may)]',\n group: 0,\n tag: 'Singular',\n reason: 'the can'\n}, // ==== Possessive ====\n//spencer kelly's\n{\n match: '#FirstName #Acronym? (#Possessive && #LastName)',\n tag: 'Possessive',\n reason: 'name-poss'\n}, //Super Corp's fundraiser\n{\n match: '#Organization+ #Possessive',\n tag: 'Possessive',\n reason: 'org-possessive'\n}, //Los Angeles's fundraiser\n{\n match: '#Place+ #Possessive',\n tag: 'Possessive',\n reason: 'place-possessive'\n}, // assign all tasks\n{\n match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'all-presentTense'\n}, //the above is clear\n{\n match: '#Determiner [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-is'\n}, //real evil is\n{\n match: '#Adjective [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'adj-adj-is'\n}, // PresentTense/Noun ambiguities\n// big dreams, critical thinking\n// have big dreams\n{\n match: '(had|have|#PastTense) #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adj-presentTense'\n}, // excellent answer spencer\n{\n match: '^#Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'start adj-presentTense'\n}, // one big reason\n{\n match: '#Value #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'one-big-reason'\n}, // won widespread support\n{\n match: '#PastTense #Adjective+ [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'won-wide-support'\n}, // many poses\n{\n match: '(many|few|several|couple) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'many-poses'\n}, // very big dreams\n{\n match: '#Adverb #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'very-big-dream'\n}, // good wait staff\n{\n match: '#Adjective [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'good-wait-staff'\n}, // adorable little store\n{\n match: '#Adjective #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adorable-little-store'\n}, // of basic training\n{\n match: '#Preposition #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'of-basic-training'\n}, // early warning\n{\n match: '#Adjective [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'early-warning'\n}, // justifiying higher costs\n{\n match: '#Gerund #Adverb? #Comparative [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'higher-costs'\n}, // do the dance\n{\n match: '#Infinitive (this|that|the) [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'do-this-dance'\n}, //his fine\n{\n match: '(his|her|its) [#Adjective]',\n group: 0,\n tag: 'Noun',\n reason: 'his-fine'\n}, //some pressing issues\n{\n match: 'some [#Verb] #Plural',\n group: 0,\n tag: 'Noun',\n reason: 'determiner6'\n}, //'more' is not always an adverb\n{\n match: 'more #Noun',\n tag: 'Noun',\n reason: 'more-noun'\n}, {\n match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-list'\n}, //3 feet\n{\n match: '(right|rights) of .',\n tag: 'Noun',\n reason: 'right-of'\n}, // a bit\n{\n match: 'a [bit]',\n group: 0,\n tag: 'Noun',\n reason: 'bit-2'\n}, // my first thought\n{\n match: '#Possessive #Ordinal [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'first-thought'\n}, //running-a-show\n{\n match: '#Gerund #Determiner [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-a-show'\n}, //the-only-reason\n{\n match: '#Determiner #Adverb [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'the-reason'\n}, //the nice swim\n{\n match: '(the|this|those|these) #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-verb'\n}, // the truly nice swim\n{\n match: '(the|this|those|these) #Adverb #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'determiner4'\n}, //the orange is\n{\n match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-2'\n}, // a stream runs\n{\n match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb',\n group: 0,\n tag: 'Noun',\n reason: 'determiner5'\n}, //the test string\n{\n match: '#Determiner [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'determiner7'\n}, //a nice deal\n{\n match: '#Determiner #Adjective #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'a-nice-inf'\n}, //the wait to vote\n{\n match: 'the [#Verb] #Preposition .',\n group: 0,\n tag: 'Noun',\n reason: 'determiner1'\n}, //a sense of\n{\n match: '#Determiner [#Verb] of',\n group: 0,\n tag: 'Noun',\n reason: 'the-verb-of'\n}, //next career move\n{\n match: '#Adjective #Noun+ [#Infinitive] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'career-move'\n}, //the threat of force\n{\n match: '#Determiner #Noun of [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-of-noun'\n}, //the western line\n{\n match: '#Determiner [(western|eastern|northern|southern|central)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'western-line'\n}, //her polling\n{\n match: '#Possessive [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'her-polling'\n}, //her fines\n{\n match: '(his|her|its) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'its-polling'\n}, //linear algebra\n{\n match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'technical-noun'\n}, // a blown motor\n{\n match: '(the|those|these|a|an) [#Participle] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'blown-motor'\n}, // walk the walk\n{\n match: '(the|those|these|a|an) #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'det-inf'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-pres'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-past'\n}, // this swimming\n{\n match: '(this|that) [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'this-gerund'\n}, // at some point\n{\n match: 'at some [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'at-some-inf'\n}, //air-flow\n{\n match: '(#Noun && @hasHyphen) #Verb',\n tag: 'Noun',\n reason: 'hyphen-verb'\n}, //is no walk\n{\n match: 'is no [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'is-no-verb'\n}, //different views than\n{\n match: '[#Verb] than',\n group: 0,\n tag: 'Noun',\n reason: 'correction'\n}, // goes to sleep\n{\n match: '(go|goes|went) to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'goes-to-verb'\n}, //a close watch on\n{\n match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf'\n}, //a tv show\n{\n match: '(a|an) #Noun [#Infinitive]$',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf2'\n}, //do so\n{\n match: 'do [so]',\n group: 0,\n tag: 'Noun',\n reason: 'so-noun'\n}, //is mark hughes\n{\n match: '#Copula [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'is-pres-noun'\n}, //a close\n{\n match: '#Determiner #Adverb? [close]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-close'\n}, // what the hell\n{\n match: '#Determiner [(shit|damn|hell)]',\n group: 0,\n tag: 'Noun',\n reason: 'swears-noun'\n}, // the staff were\n{\n match: '(the|these) [#Singular] (were|are)',\n group: 0,\n tag: 'Plural',\n reason: 'singular-were'\n}, // running for congress\n{\n match: '#Gerund #Adjective? for [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-for'\n}, // running to work\n{\n match: '#Gerund #Adjective to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-to'\n}, // any questions for\n{\n match: '(many|any|some|several) [#PresentTense] for',\n group: 0,\n tag: 'Noun',\n reason: 'any-verbs-for'\n}, // have fun\n{\n match: \"(have|had) [#Adjective] #Preposition .\",\n group: 0,\n tag: 'Noun',\n reason: 'have-fun'\n}, // co-founder\n{\n match: \"co #Noun\",\n tag: 'Actor',\n reason: 'co-noun'\n}];\n\nvar adjectives = \"(\".concat(_ambig.adverbAdjective.join('|'), \")\");\nvar _05Adverb = [//still good\n{\n match: '[still] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'still-advb'\n}, //still make\n{\n match: '[still] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'still-verb'\n}, // so hot\n{\n match: '[so] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'so-adv'\n}, // way hotter\n{\n match: '[way] #Comparative',\n group: 0,\n tag: 'Adverb',\n reason: 'way-adj'\n}, // way too hot\n{\n match: '[way] #Adverb #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'way-too-adj'\n}, // all singing\n{\n match: '[all] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'all-verb'\n}, // sing like an angel\n{\n match: '(#Verb && !#Modal) [like]',\n group: 0,\n tag: 'Adverb',\n reason: 'verb-like'\n}, //barely even walk\n{\n match: '(barely|hardly) even',\n tag: 'Adverb',\n reason: 'barely-even'\n}, //even held\n{\n match: '[even] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'even-walk'\n}, // even left\n{\n match: 'even left',\n tag: '#Adverb #Verb',\n reason: 'even-left'\n}, //cheering hard - dropped -ly's\n{\n match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]',\n group: 0,\n tag: 'Adverb',\n reason: 'lazy-ly'\n}, // much appreciated\n{\n match: '[much] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'bit-1'\n}, // is well\n{\n match: '#Copula [#Adverb]$',\n group: 0,\n tag: 'Adjective',\n reason: 'is-well'\n}, // a bit cold\n{\n match: 'a [(little|bit|wee) bit?] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'a-bit-cold'\n}, // dark green\n{\n match: \"[\".concat(adjectives, \"] #Adjective\"),\n group: 0,\n tag: 'Adverb',\n reason: 'dark-green'\n}, // kinda sparkly\n{\n match: \"#Adverb [#Adverb]$\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly'\n}, {\n match: \"#Adverb [#Adverb] (and|or|then)\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly-and'\n}];\n\nvar _06Value = [// ==== PhoneNumber ====\n//1 800 ...\n{\n match: '1 #Value #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '1-800-Value'\n}, //(454) 232-9873\n{\n match: '#NumericValue #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '(800) PhoneNumber'\n}, // ==== Currency ====\n// chinese yuan\n{\n match: '#Demonym #Currency',\n tag: 'Currency',\n reason: 'demonym-currency'\n}, // ==== Ordinal ====\n{\n match: '[second] #Noun',\n group: 0,\n tag: 'Ordinal',\n reason: 'second-noun'\n}, // ==== Unit ====\n//5 yan\n{\n match: '#Value+ [#Currency]',\n group: 0,\n tag: 'Unit',\n reason: '5-yan'\n}, {\n match: '#Value [(foot|feet)]',\n group: 0,\n tag: 'Unit',\n reason: 'foot-unit'\n}, //minus 7\n{\n match: '(minus|negative) #Value',\n tag: 'Value',\n reason: 'minus-value'\n}, //5 kg.\n{\n match: '#Value [#Abbreviation]',\n group: 0,\n tag: 'Unit',\n reason: 'value-abbr'\n}, {\n match: '#Value [k]',\n group: 0,\n tag: 'Unit',\n reason: 'value-k'\n}, {\n match: '#Unit an hour',\n tag: 'Unit',\n reason: 'unit-an-hour'\n}, //seven point five\n{\n match: '#Value (point|decimal) #Value',\n tag: 'Value',\n reason: 'value-point-value'\n}, // ten bucks\n{\n match: '(#Value|a) [(buck|bucks|grand)]',\n group: 0,\n tag: 'Currency',\n reason: 'value-bucks'\n}, //quarter million\n{\n match: '#Determiner [(half|quarter)] #Ordinal',\n group: 0,\n tag: 'Value',\n reason: 'half-ordinal'\n}, {\n match: 'a #Value',\n tag: 'Value',\n reason: 'a-value'\n}, // ==== Money ====\n{\n match: '[#Value+] #Currency',\n group: 0,\n tag: 'Money',\n reason: '15 usd'\n}, // thousand and two\n{\n match: \"(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value\",\n tag: 'Value',\n reason: 'magnitude-and-value'\n}, //'a/an' can mean 1 - \"a hour\"\n{\n match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)',\n group: 0,\n tag: 'Value',\n reason: 'a-is-one'\n}];\n\nvar verbs = \"(\".concat(_ambig.personVerb.join('|'), \")\");\nvar list$2 = [// adj -> gerund\n// amusing his aunt\n{\n match: '[#Adjective] #Possessive #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'gerund-his-noun'\n}, // loving you\n{\n match: '[#Adjective] (us|you)',\n group: 0,\n tag: 'Gerund',\n reason: 'loving-you'\n}, // slowly stunning\n{\n match: '(slowly|quickly) [#Adjective]',\n group: 0,\n tag: 'Gerund',\n reason: 'slowly-adj'\n}, // like\n{\n match: '(#Modal|i|they|we|do) not? [like]',\n group: 0,\n tag: 'PresentTense',\n reason: 'modal-like'\n}, // do not simply like\n{\n match: 'do (simply|just|really|not)+ [(#Adjective|like)]',\n group: 0,\n tag: 'Verb',\n reason: 'do-simply-like'\n}, // does mean\n{\n match: 'does (#Adverb|not)? [#Adjective]',\n group: 0,\n tag: 'PresentTense',\n reason: 'does-mean'\n}, // i mean\n{\n match: 'i (#Adverb|do)? not? [mean]',\n group: 0,\n tag: 'PresentTense',\n reason: 'i-mean'\n}, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' },\n// ==== Tense ====\n//he left\n{\n match: '#Noun #Adverb? [left]',\n group: 0,\n tag: 'PastTense',\n reason: 'left-verb'\n}, //this rocks\n{\n match: '(this|that) [#Plural]',\n group: 0,\n tag: 'PresentTense',\n reason: 'this-verbs'\n}, // ==== Auxiliary ====\n//was walking\n{\n match: \"[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'copula-walking'\n}, //support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, //would walk\n{\n match: \"[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'modal-verb'\n}, //would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //would be walking\n// { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' },\n//had been walking\n// {\n// match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`,\n// group: 0,\n// tag: 'Auxiliary',\n// reason: 'had-been',\n// },\n//support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, // will walk\n{\n match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb',\n group: 0,\n tag: 'Auxiliary',\n reason: 'have-had'\n}, // about to go\n{\n match: '[about to] #Adverb? #Verb',\n group: 0,\n tag: ['Auxiliary', 'Verb'],\n reason: 'about-to'\n}, //would be walking\n{\n match: \"#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-be'\n}, //were being run\n{\n match: \"(were|was) being [#PresentTense]\",\n group: 0,\n tag: 'PastTense',\n reason: 'was-being'\n}, //have run\n// { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' },\n//would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //had been walking\n{\n match: \"(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-been'\n}, // was being driven\n{\n match: '[(be|being|been)] #Participle',\n group: 0,\n tag: 'Auxiliary',\n reason: 'being-foo'\n}, // ==== Phrasal ====\n//'foo-up'\n{\n match: '(#Verb && @hasHyphen) up',\n tag: 'PhrasalVerb',\n reason: 'foo-up'\n}, {\n match: '(#Verb && @hasHyphen) off',\n tag: 'PhrasalVerb',\n reason: 'foo-off'\n}, {\n match: '(#Verb && @hasHyphen) over',\n tag: 'PhrasalVerb',\n reason: 'foo-over'\n}, {\n match: '(#Verb && @hasHyphen) out',\n tag: 'PhrasalVerb',\n reason: 'foo-out'\n}, //fall over\n{\n match: '#PhrasalVerb [#PhrasalVerb]',\n group: 0,\n tag: 'Particle',\n reason: 'phrasal-particle'\n}, //back it up\n{\n match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]',\n group: 0,\n tag: 'Adverb',\n reason: 'phrasal-pronoun-advb'\n}, // ==== Copula ====\n//will be running (not copula)\n{\n match: '[will #Adverb? not? #Adverb? be] #Gerund',\n group: 0,\n tag: 'Copula',\n reason: 'will-be-copula'\n}, //for more complex forms, just tag 'be'\n{\n match: 'will #Adverb? not? #Adverb? [be] #Adjective',\n group: 0,\n tag: 'Copula',\n reason: 'be-copula'\n}, // ==== Infinitive ====\n//march to\n{\n match: '[march] (up|down|back|to|toward)',\n group: 0,\n tag: 'Infinitive',\n reason: 'march-to'\n}, //must march\n{\n match: '#Modal [march]',\n group: 0,\n tag: 'Infinitive',\n reason: 'must-march'\n}, //let him glue\n{\n match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)',\n group: 0,\n tag: 'Infinitive',\n reason: 'let-him-glue'\n}, //he quickly foo\n// { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' },\n//will secure our\n{\n match: 'will [#Adjective]',\n group: 0,\n tag: 'Verb',\n reason: 'will-adj'\n}, //he disguised the thing\n{\n match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'he-adj-the'\n}, //is eager to go\n{\n match: '#Copula [#Adjective to] #Verb',\n group: 0,\n tag: 'Verb',\n reason: 'adj-to'\n}, // open the door\n{\n match: '[open] #Determiner',\n group: 0,\n tag: 'Infinitive',\n reason: 'open-the'\n}, // compromises are possible\n{\n match: '[#PresentTense] (are|were|was) #Adjective',\n group: 0,\n tag: 'Plural',\n reason: 'compromises-are-possible'\n}, // would wade\n{\n match: \"#Modal [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'would-mark'\n}, {\n match: \"#Adverb [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'really-mark'\n}, //to mark\n{\n match: '(to|#Modal) [mark]',\n group: 0,\n tag: 'PresentTense',\n reason: 'to-mark'\n}, // wade smith\n{\n match: \"\".concat(verbs, \" #Person\"),\n tag: 'Person',\n reason: 'rob-smith'\n}, // wade m. Cooper\n{\n match: \"\".concat(verbs, \" #Acronym #ProperNoun\"),\n tag: 'Person',\n reason: 'rob-a-smith'\n}, // damn them\n{\n match: '[shit] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear1-verb'\n}, {\n match: '[damn] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear2-verb'\n}, {\n match: '[fuck] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear3-verb'\n}];\nvar _07Verbs = list$2;\n\nvar list$1 = [// ==== Region ====\n//West Norforlk\n{\n match: '(west|north|south|east|western|northern|southern|eastern)+ #Place',\n tag: 'Region',\n reason: 'west-norfolk'\n}, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n{\n match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]',\n group: 0,\n tag: 'Region',\n reason: 'us-state'\n}, // portland oregon\n{\n match: 'portland [or]',\n group: 0,\n tag: 'Region',\n reason: 'portland-or'\n}, //Foo District\n{\n match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)',\n tag: 'Region',\n reason: 'foo-district'\n}, //District of Foo\n{\n match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun',\n tag: 'Region',\n reason: 'district-of-Foo'\n}, // in Foo California\n{\n match: 'in [#ProperNoun] #Place',\n group: 0,\n tag: 'Place',\n reason: 'propernoun-place'\n}, // ==== Address ====\n{\n match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)',\n tag: 'Address',\n reason: 'address-st'\n} // in houston\n// { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' },\n// { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' },\n// { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' },\n// { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' },\n// { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' },\n// { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' },\n// // houston texas\n// { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' },\n];\nvar _08Place = list$1;\n\nvar _09Org = [//John & Joe's\n{\n match: '#Noun (&|n) #Noun',\n tag: 'Organization',\n reason: 'Noun-&-Noun'\n}, // teachers union of Ontario\n{\n match: '#Organization of the? #ProperNoun',\n tag: 'Organization',\n reason: 'org-of-place',\n safe: true\n}, //walmart USA\n{\n match: '#Organization #Country',\n tag: 'Organization',\n reason: 'org-country'\n}, //organization\n{\n match: '#ProperNoun #Organization',\n tag: 'Organization',\n reason: 'titlecase-org'\n}, //FitBit Inc\n{\n match: '#ProperNoun (ltd|co|inc|dept|assn|bros)',\n tag: 'Organization',\n reason: 'org-abbrv'\n}, // the OCED\n{\n match: 'the [#Acronym]',\n group: 0,\n tag: 'Organization',\n reason: 'the-acronym',\n safe: true\n}, // global trade union\n{\n match: '(world|global|international|national|#Demonym) #Organization',\n tag: 'Organization',\n reason: 'global-org'\n}, // schools\n{\n match: '#Noun+ (public|private) school',\n tag: 'School',\n reason: 'noun-public-school'\n}];\n\nvar nouns = \"(\".concat(_ambig.personNoun.join('|'), \")\");\nvar months = \"(\".concat(_ambig.personMonth.join('|'), \")\");\nvar places = \"(\".concat(_ambig.personPlace.join('|'), \")\");\nvar list = [// ==== Honorific ====\n{\n match: '[(1st|2nd|first|second)] #Honorific',\n group: 0,\n tag: 'Honorific',\n reason: 'ordinal-honorific'\n}, {\n match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person',\n group: 0,\n tag: 'Honorific',\n reason: 'ambg-honorifics'\n}, // ==== FirstNames ====\n//is foo Smith\n{\n match: '#Copula [(#Noun|#PresentTense)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'copula-noun-lastname'\n}, //pope francis\n{\n match: '(lady|queen|sister) #ProperNoun',\n tag: 'FemaleName',\n reason: 'lady-titlecase',\n safe: true\n}, {\n match: '(king|pope|father) #ProperNoun',\n tag: 'MaleName',\n reason: 'pope-titlecase',\n safe: true\n}, //ambiguous-but-common firstnames\n{\n match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'maybe-lastname'\n}, // ==== Nickname ====\n// Dwayne 'the rock' Johnson\n{\n match: '#FirstName [#Determiner #Noun] #LastName',\n group: 0,\n tag: 'NickName',\n reason: 'first-noun-last'\n}, //my buddy\n{\n match: '#Possessive [#FirstName]',\n group: 0,\n tag: 'Person',\n reason: 'possessive-name'\n}, {\n match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun',\n tag: 'Person',\n reason: 'titlecase-acronym-titlecase',\n safe: true\n}, //ludwig van beethovan\n{\n match: '#Acronym #LastName',\n tag: 'Person',\n reason: 'acronym-latname',\n safe: true\n}, //jk rowling\n{\n match: '#Person (jr|sr|md)',\n tag: 'Person',\n reason: 'person-honorific'\n}, //peter II\n{\n match: '#Person #Person the? #RomanNumeral',\n tag: 'Person',\n reason: 'roman-numeral'\n}, //'Professor Fink', 'General McCarthy'\n{\n match: '#FirstName [/^[^aiurck]$/]',\n group: 0,\n tag: ['Acronym', 'Person'],\n reason: 'john-e'\n}, //Doctor john smith jr\n//general pearson\n{\n match: '#Honorific #Person',\n tag: 'Person',\n reason: 'honorific-person'\n}, //remove single 'mr'\n{\n match: '#Honorific #Acronym',\n tag: 'Person',\n reason: 'Honorific-TitleCase'\n}, //j.k Rowling\n{\n match: '#Noun van der? #Noun',\n tag: 'Person',\n reason: 'van der noun',\n safe: true\n}, //king of spain\n{\n match: '(king|queen|prince|saint|lady) of #Noun',\n tag: 'Person',\n reason: 'king-of-noun',\n safe: true\n}, //lady Florence\n{\n match: '(prince|lady) #Place',\n tag: 'Person',\n reason: 'lady-place'\n}, //saint Foo\n{\n match: '(king|queen|prince|saint) #ProperNoun',\n tag: 'Person',\n reason: 'saint-foo'\n}, //Foo U Ford\n{\n match: '[#ProperNoun] #Person',\n group: 0,\n tag: 'Person',\n reason: 'proper-person',\n safe: true\n}, // al sharpton\n{\n match: 'al (#Person|#ProperNoun)',\n tag: 'Person',\n reason: 'al-borlen',\n safe: true\n}, //ferdinand de almar\n{\n match: '#FirstName de #Noun',\n tag: 'Person',\n reason: 'bill-de-noun'\n}, //Osama bin Laden\n{\n match: '#FirstName (bin|al) #Noun',\n tag: 'Person',\n reason: 'bill-al-noun'\n}, //John L. Foo\n{\n match: '#FirstName #Acronym #ProperNoun',\n tag: 'Person',\n reason: 'bill-acronym-title'\n}, //Andrew Lloyd Webber\n{\n match: '#FirstName #FirstName #ProperNoun',\n tag: 'Person',\n reason: 'bill-firstname-title'\n}, //Mr Foo\n{\n match: '#Honorific #FirstName? #ProperNoun',\n tag: 'Person',\n reason: 'dr-john-Title'\n}, //peter the great\n{\n match: '#FirstName the #Adjective',\n tag: 'Person',\n reason: 'name-the-great'\n}, //very common-but-ambiguous lastnames\n{\n match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)',\n tag: 'Person',\n reason: 'bill-green'\n}, // faith smith\n{\n match: \"\".concat(nouns, \" #Person\"),\n tag: 'Person',\n reason: 'ray-smith',\n safe: true\n}, // faith m. Smith\n{\n match: \"\".concat(nouns, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'ray-a-smith',\n safe: true\n}, //give to april\n{\n match: \"#Infinitive #Determiner? #Adjective? #Noun? (to|for) [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-person'\n}, // remind june\n{\n match: \"#Infinitive [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'infinitive-person'\n}, // may waits for\n// { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' },\n// may waits to\n// { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' },\n// april will\n{\n match: \"[\".concat(months, \"] #Modal\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-modal'\n}, // may be\n{\n match: \"[may] be\",\n group: 0,\n tag: 'Verb',\n reason: 'may-be'\n}, // would april\n{\n match: \"#Modal [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'modal-ambig'\n}, // it is may\n{\n match: \"#Copula [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'is-may'\n}, // may is\n{\n match: \"[\".concat(months, \"] #Copula\"),\n group: 0,\n tag: 'Person',\n reason: 'may-is'\n}, // with april\n{\n match: \"that [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'that-month'\n}, // with april\n{\n match: \"with [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'with-month'\n}, // for april\n{\n match: \"for [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'for-month'\n}, // this april\n{\n match: \"this [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'this-may'\n}, //maybe not 'this'\n// next april\n{\n match: \"next [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'next-may'\n}, // last april\n{\n match: \"last [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'last-may'\n}, // wednesday april\n{\n match: \"#Date [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'date-may'\n}, // may 5th\n{\n match: \"[\".concat(months, \"] the? #Value\"),\n group: 0,\n tag: 'Month',\n reason: 'may-5th'\n}, // 5th of may\n{\n match: \"#Value of [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: '5th-of-may'\n}, // dick van dyke\n{\n match: '#ProperNoun (van|al|bin) #ProperNoun',\n tag: 'Person',\n reason: 'title-van-title',\n safe: true\n}, //jose de Sucre\n{\n match: '#ProperNoun (de|du) la? #ProperNoun',\n tag: 'Person',\n reason: 'title-de-title',\n safe: true\n}, //Jani K. Smith\n{\n match: '#Singular #Acronym #LastName',\n tag: '#Person',\n reason: 'title-acro-noun',\n safe: true\n}, //John Foo\n{\n match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?',\n tag: 'Person',\n reason: 'firstname-titlecase'\n}, //Joe K. Sombrero\n{\n match: '#FirstName #Acronym #Noun',\n tag: 'Person',\n reason: 'n-acro-noun',\n safe: true\n}, //Anthony de Marco\n{\n match: '#FirstName [(de|di|du|van|von) #Person]',\n group: 0,\n tag: 'LastName',\n reason: 'de-firstname'\n}, // Paris Berelc\n{\n match: \"[\".concat(places, \"] (#ProperNoun && !#Place)\"),\n group: 0,\n tag: 'FirstName',\n reason: 'place-firstname'\n}];\nvar _10People = list;\n\nvar matches = [];\nmatches = matches.concat(_01Misc);\nmatches = matches.concat(_02Dates);\nmatches = matches.concat(_03Adjective);\nmatches = matches.concat(_04Noun);\nmatches = matches.concat(_05Adverb);\nmatches = matches.concat(_06Value);\nmatches = matches.concat(_07Verbs);\nmatches = matches.concat(_08Place);\nmatches = matches.concat(_09Org);\nmatches = matches.concat(_10People); // cache the easier conditions up-front\n\nvar cacheRequired = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: _unique(needTags),\n words: _unique(needWords)\n };\n}; // for speed, enumerate (a|b|c) to three matches\n\n\nvar allLists = function allLists(m) {\n var more = [];\n var lists = m.reg.filter(function (r) {\n return r.fastOr !== undefined;\n });\n\n if (lists.length === 1) {\n var i = m.reg.findIndex(function (r) {\n return r.fastOr !== undefined;\n });\n Object.keys(m.reg[i].fastOr).forEach(function (w) {\n var newM = Object.assign({}, m);\n newM.reg = newM.reg.slice(0);\n newM.reg[i] = Object.assign({}, newM.reg[i]);\n newM.reg[i].word = w;\n delete newM.reg[i].operator;\n delete newM.reg[i].fastOr; // newM.reason += '-' + w\n\n more.push(newM);\n });\n }\n\n return more;\n}; // parse them\n\n\nvar all = [];\nmatches.forEach(function (m) {\n m.reg = matchSyntax(m.match);\n var enumerated = allLists(m);\n\n if (enumerated.length > 0) {\n all = all.concat(enumerated);\n } else {\n all.push(m); // console.log(m)\n }\n});\nall.forEach(function (m) {\n m.required = cacheRequired(m.reg);\n return m;\n}); // console.log(all.length)\n// console.log(all[all.length - 1])\n\nvar matches_1 = all;\n\nvar hasEvery = function hasEvery(chances) {\n if (chances.length === 0) {\n return [];\n }\n\n var obj = {};\n chances.forEach(function (arr) {\n arr = _unique(arr);\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = obj[arr[i]] || 0;\n obj[arr[i]] += 1;\n }\n });\n var res = Object.keys(obj);\n res = res.filter(function (k) {\n return obj[k] === chances.length;\n });\n res = res.map(function (num) {\n return Number(num);\n });\n return res;\n};\n\nvar runner = function runner(doc) {\n //find phrases to try for each match\n matches_1.forEach(function (m) {\n var allChances = [];\n m.required.words.forEach(function (w) {\n allChances.push(doc._cache.words[w] || []);\n });\n m.required.tags.forEach(function (tag) {\n allChances.push(doc._cache.tags[tag] || []);\n });\n var worthIt = hasEvery(allChances);\n\n if (worthIt.length === 0) {\n return;\n }\n\n var phrases = worthIt.map(function (index) {\n return doc.list[index];\n });\n var tryDoc = doc.buildFrom(phrases); // phrases getting tagged\n\n var match = tryDoc.match(m.reg, m.group);\n\n if (match.found) {\n if (m.safe === true) {\n match.tagSafe(m.tag, m.reason);\n } else {\n match.tag(m.tag, m.reason);\n }\n }\n });\n};\n\nvar runner_1 = runner; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []]))\n\n// misc: 40ms\n//sequence of match-tag statements to correct mis-tags\n\nvar corrections = function corrections(doc) {\n runner_1(doc);\n fixMisc(doc);\n return doc;\n};\n\nvar _04Correction = corrections;\n\n/** POS-tag all terms in this document */\n\nvar tagger = function tagger(doc) {\n var terms = doc.termList(); // check against any known-words\n\n doc = _01Init(doc, terms); // everything has gotta be something. ¯\\_(:/)_/¯\n\n doc = _02Fallbacks(doc, terms); // support \"didn't\" & \"spencer's\"\n\n doc = _03Contractions(doc); //set our cache, to speed things up\n\n doc.cache(); // wiggle-around the results, so they make more sense\n\n doc = _04Correction(doc); // remove our cache, as it's invalidated now\n\n doc.uncache(); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar _02Tagger = tagger;\n\nvar addMethod$a = function addMethod(Doc) {\n /** */\n var Abbreviations = /*#__PURE__*/function (_Doc) {\n _inherits(Abbreviations, _Doc);\n\n var _super = _createSuper(Abbreviations);\n\n function Abbreviations() {\n _classCallCheck(this, Abbreviations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Abbreviations, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n if (t.tags.Abbreviation === true && t.next) {\n t.post = t.post.replace(/^\\./, '');\n }\n\n var str = t.text.replace(/\\./, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n t.post = t.post.replace(/^\\./, '');\n t.post = '.' + t.post;\n });\n return this;\n }\n }]);\n\n return Abbreviations;\n }(Doc);\n\n Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods;\n\n Doc.prototype.abbreviations = function (n) {\n var match = this.match('#Abbreviation');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Abbreviations(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Abbreviations = addMethod$a;\n\nvar hasPeriod = /\\./;\n\nvar addMethod$9 = function addMethod(Doc) {\n /** */\n var Acronyms = /*#__PURE__*/function (_Doc) {\n _inherits(Acronyms, _Doc);\n\n var _super = _createSuper(Acronyms);\n\n function Acronyms() {\n _classCallCheck(this, Acronyms);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Acronyms, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one\n\n if (hasPeriod.test(t.post) === false) {\n str += '.';\n }\n\n t.set(str);\n });\n return this;\n }\n }]);\n\n return Acronyms;\n }(Doc);\n\n Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods;\n Acronyms.prototype.strip = Acronyms.prototype.stripPeriods;\n\n Doc.prototype.acronyms = function (n) {\n var match = this.match('#Acronym');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Acronyms(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Acronyms = addMethod$9;\n\nvar addMethod$8 = function addMethod(Doc) {\n /** split into approximate sub-sentence phrases */\n Doc.prototype.clauses = function (n) {\n // an awkward way to disambiguate a comma use\n var commas = this[\"if\"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool...\n .notIf('@hasComma . .? (and|or) .') //cool, and fun\n .notIf('(#City && @hasComma) #Country') //'toronto, canada'\n .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd'\n .notIf('(#Date && @hasComma) #Year') //'july 6, 1992'\n .notIf('@hasComma (too|also)$') //at end of sentence\n .match('@hasComma');\n var found = this.splitAfter(commas);\n var quotes = found.quotations();\n found = found.splitOn(quotes);\n var parentheses = found.parentheses();\n found = found.splitOn(parentheses); // it is cool and it is ..\n\n var conjunctions = found[\"if\"]('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction');\n found = found.splitBefore(conjunctions); // if it is this then that\n\n var condition = found[\"if\"]('if .{2,9} then .').match('then');\n found = found.splitBefore(condition); // misc clause partitions\n\n found = found.splitBefore('as well as .');\n found = found.splitBefore('such as .');\n found = found.splitBefore('in addition to .'); // semicolons, dashes\n\n found = found.splitAfter('@hasSemicolon');\n found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty'\n // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // //which the boy robbed\n // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // does there appear to have relative/subordinate clause still?\n\n var tooLong = found.filter(function (d) {\n return d.wordCount() > 5 && d.match('#Verb+').length >= 2;\n });\n\n if (tooLong.found) {\n var m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+');\n found = found.splitOn(m.eq(0));\n }\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Doc(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Clauses = addMethod$8;\n\nvar addMethod$7 = function addMethod(Doc) {\n /** */\n var Contractions = /*#__PURE__*/function (_Doc) {\n _inherits(Contractions, _Doc);\n\n var _super = _createSuper(Contractions);\n\n function Contractions(list, from, world) {\n var _this;\n\n _classCallCheck(this, Contractions);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Contractions, [{\n key: \"expand\",\n value: function expand() {\n this.list.forEach(function (p) {\n var terms = p.terms(); //change the case?\n\n var isTitlecase = terms[0].isTitleCase();\n terms.forEach(function (t, i) {\n //use the implicit text\n t.set(t.implicit || t.text);\n t.implicit = undefined; //add whitespace\n\n if (i < terms.length - 1 && t.post === '') {\n t.post += ' ';\n }\n }); //set titlecase\n\n if (isTitlecase) {\n terms[0].toTitleCase();\n }\n });\n return this;\n }\n }]);\n\n return Contractions;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.contractions = function (n) {\n //find currently-contracted\n var found = this.match('@hasContraction+'); //(may want to split these up)\n //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Contractions(found.list, this, this.world);\n }; //aliases\n\n\n Doc.prototype.expanded = Doc.prototype.isExpanded;\n Doc.prototype.contracted = Doc.prototype.isContracted;\n return Doc;\n};\n\nvar Contractions = addMethod$7;\n\nvar addMethod$6 = function addMethod(Doc) {\n //pull it apart..\n var parse = function parse(doc) {\n var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?');\n var beforeLast = doc.match('[.] (and|or)', 0);\n return {\n things: things,\n conjunction: doc.match('(and|or) not?'),\n beforeLast: beforeLast,\n hasOxford: beforeLast.has('@hasComma')\n };\n };\n /** cool, fun, and nice */\n\n\n var Lists = /*#__PURE__*/function (_Doc) {\n _inherits(Lists, _Doc);\n\n var _super = _createSuper(Lists);\n\n function Lists() {\n _classCallCheck(this, Lists);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Lists, [{\n key: \"conjunctions\",\n value:\n /** coordinating conjunction */\n function conjunctions() {\n return this.match('(and|or)');\n }\n /** split-up by list object */\n\n }, {\n key: \"parts\",\n value: function parts() {\n return this.splitAfter('@hasComma').splitOn('(and|or) not?');\n }\n /** remove the conjunction */\n\n }, {\n key: \"items\",\n value: function items() {\n return parse(this).things;\n }\n /** add a new unit to the list */\n\n }, {\n key: \"add\",\n value: function add(str) {\n this.forEach(function (p) {\n var beforeLast = parse(p).beforeLast;\n beforeLast.append(str); //add a comma to it\n\n beforeLast.termList(0).addPunctuation(',');\n });\n return this;\n }\n /** remove any matching unit from the list */\n\n }, {\n key: \"remove\",\n value: function remove(match) {\n return this.items()[\"if\"](match).remove();\n }\n /** return only lists that use a serial comma */\n\n }, {\n key: \"hasOxfordComma\",\n value: function hasOxfordComma() {\n return this.filter(function (doc) {\n return parse(doc).hasOxford;\n });\n }\n }, {\n key: \"addOxfordComma\",\n value: function addOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === false) {\n needsComma.post(', ');\n }\n\n return this;\n }\n }, {\n key: \"removeOxfordComma\",\n value: function removeOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === true) {\n needsComma.post(' ');\n }\n\n return this;\n }\n }]);\n\n return Lists;\n }(Doc); // aliases\n\n\n Lists.prototype.things = Lists.prototype.items;\n\n Doc.prototype.lists = function (n) {\n var m = this[\"if\"]('@hasComma+ .? (and|or) not? .'); // person-list\n\n var nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+')[\"if\"]('#Noun');\n var adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+');\n var verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+');\n var result = nounList.concat(adjList);\n result = result.concat(verbList);\n result = result[\"if\"]('@hasComma');\n\n if (typeof n === 'number') {\n result = m.get(n);\n }\n\n return new Lists(result.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Lists = addMethod$6;\n\nvar noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace'\n\nvar hasPlural = function hasPlural(doc) {\n if (doc.has('#Plural') === true) {\n return true;\n } // these can't be plural\n\n\n if (doc.has(noPlural) === true) {\n return false;\n }\n\n return true;\n};\n\nvar hasPlural_1 = hasPlural;\n\nvar irregulars = {\n hour: 'an',\n heir: 'an',\n heirloom: 'an',\n honest: 'an',\n honour: 'an',\n honor: 'an',\n uber: 'an' //german u\n\n}; //pronounced letters of acronyms that get a 'an'\n\nvar an_acronyms = {\n a: true,\n e: true,\n f: true,\n h: true,\n i: true,\n l: true,\n m: true,\n n: true,\n o: true,\n r: true,\n s: true,\n x: true\n}; //'a' regexes\n\nvar a_regexs = [/^onc?e/i, //'wu' sound of 'o'\n/^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n/^eul/i];\n\nvar makeArticle = function makeArticle(doc) {\n //no 'the john smith', but 'a london hotel'\n if (doc.has('#Person') || doc.has('#Place')) {\n return '';\n } //no a/an if it's plural\n\n\n if (doc.has('#Plural')) {\n return 'the';\n }\n\n var str = doc.text('normal').trim(); //explicit irregular forms\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //spelled-out acronyms\n\n\n var firstLetter = str.substr(0, 1);\n\n if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) {\n return 'an';\n } //'a' regexes\n\n\n for (var i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return 'a';\n }\n } //basic vowel-startings\n\n\n if (/^[aeiou]/i.test(str)) {\n return 'an';\n }\n\n return 'a';\n};\n\nvar getArticle = makeArticle;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$2 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar _rules = {\n isSingular: isSingular,\n isPlural: isPlural$2\n};\n\nvar endS = /s$/; // double-check this term, if it is not plural, or singular.\n// (this is a partial copy of ./tagger/fallbacks/plural)\n// fallback plural if it ends in an 's'.\n\nvar isPlural$1 = function isPlural(str) {\n // isSingular suffix rules\n if (_rules.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return false;\n } // does it end in an s?\n\n\n if (endS.test(str) === true) {\n return true;\n } // is it a plural like 'fungi'?\n\n\n if (_rules.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return true;\n }\n\n return null;\n};\n\nvar isPlural_1$1 = isPlural$1;\n\nvar exceptions = {\n he: 'his',\n she: 'hers',\n they: 'theirs',\n we: 'ours',\n i: 'mine',\n you: 'yours',\n her: 'hers',\n their: 'theirs',\n our: 'ours',\n my: 'mine',\n your: 'yours'\n}; // turn \"David\" to \"David's\"\n\nvar toPossessive = function toPossessive(doc) {\n var str = doc.text('text').trim(); // exceptions\n\n if (exceptions.hasOwnProperty(str)) {\n doc.replaceWith(exceptions[str], true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } // flanders'\n\n\n if (/s$/.test(str)) {\n str += \"'\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } //normal form:\n\n\n str += \"'s\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n};\n\nvar toPossessive_1 = toPossessive;\n\n// .nouns() supports some noun-phrase-ish groupings\n// pull these apart, if necessary\nvar parse$1 = function parse(doc) {\n var res = {\n main: doc\n }; //support 'mayor of chicago' as one noun-phrase\n\n if (doc.has('#Noun (of|by|for) .')) {\n var m = doc.splitAfter('[#Noun+]', 0);\n res.main = m.eq(0);\n res.post = m.eq(1);\n }\n\n return res;\n};\n\nvar parse_1 = parse$1;\n\nvar methods$2 = {\n /** overload the original json with noun information */\n json: function json(options) {\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (doc) {\n var json = doc.json(options)[0];\n json.article = getArticle(doc);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** get all adjectives describing this noun*/\n adjectives: function adjectives() {\n var list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+');\n list = list.concat(this.lookBehind('#Adjective+ #Adverb?$'));\n list = list.match('#Adjective');\n return list.sort('index');\n },\n isPlural: function isPlural() {\n return this[\"if\"]('#Plural'); //assume tagger has run?\n },\n hasPlural: function hasPlural() {\n return this.filter(function (d) {\n return hasPlural_1(d);\n });\n },\n toPlural: function toPlural(agree) {\n var _this = this;\n\n var toPlural = this.world.transforms.toPlural;\n this.forEach(function (doc) {\n if (doc.has('#Plural') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Singular') && isPlural_1$1(str) === true) {\n return;\n }\n\n str = toPlural(str, _this.world);\n main.replace(str).tag('#Plural'); // 'an apple' -> 'apples'\n\n if (agree) {\n var an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective');\n\n if (an.found === true) {\n an.remove();\n }\n }\n });\n return this;\n },\n toSingular: function toSingular(agree) {\n var _this2 = this;\n\n var toSingular = this.world.transforms.toSingular;\n this.forEach(function (doc) {\n if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Plural') && isPlural_1$1(str) !== true) {\n return;\n }\n\n str = toSingular(str, _this2.world);\n main.replace(str).tag('#Singular'); // add an article\n\n if (agree) {\n // 'apples' -> 'an apple'\n var start = doc;\n var adj = doc.lookBefore('#Adjective');\n\n if (adj.found) {\n start = adj;\n }\n\n var article = getArticle(start);\n start.insertBefore(article);\n }\n });\n return this;\n },\n toPossessive: function toPossessive() {\n this.forEach(function (d) {\n toPossessive_1(d);\n });\n return this;\n }\n};\nvar methods_1 = methods$2;\n\nvar addMethod$5 = function addMethod(Doc) {\n /** */\n var Nouns = /*#__PURE__*/function (_Doc) {\n _inherits(Nouns, _Doc);\n\n var _super = _createSuper(Nouns);\n\n function Nouns() {\n _classCallCheck(this, Nouns);\n\n return _super.apply(this, arguments);\n }\n\n return Nouns;\n }(Doc); // add-in our methods\n\n\n Object.assign(Nouns.prototype, methods_1);\n\n Doc.prototype.nouns = function (n) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep); // don't combine over scare-quotes\n\n var quotes = m.quotations();\n\n if (quotes.found) {\n m = m.splitOn(quotes.eq(0));\n }\n\n m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons\n\n if (opts.keep_anaphora !== true) {\n m = m.not('#Pronoun');\n m = m.not('(there|these)');\n m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays\n // //allow possessives like \"spencer's\", but not generic ones like,\n\n m = m.not('(my|our|your|their|her|his)');\n }\n\n m = m.not('(of|for|by|the)$');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return new Nouns(m.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Nouns = addMethod$5;\n\nvar open = /\\(/;\nvar close = /\\)/;\n\nvar addMethod$4 = function addMethod(Doc) {\n /** anything between (these things) */\n var Parentheses = /*#__PURE__*/function (_Doc) {\n _inherits(Parentheses, _Doc);\n\n var _super = _createSuper(Parentheses);\n\n function Parentheses() {\n _classCallCheck(this, Parentheses);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Parentheses, [{\n key: \"unwrap\",\n value:\n /** remove the parentheses characters */\n function unwrap() {\n this.list.forEach(function (p) {\n var first = p.terms(0);\n first.pre = first.pre.replace(open, '');\n var last = p.lastTerm();\n last.post = last.post.replace(close, '');\n });\n return this;\n }\n }]);\n\n return Parentheses;\n }(Doc);\n\n Doc.prototype.parentheses = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening brackets\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (open.test(t.pre)) {\n //look for the closing bracket..\n for (var o = i; o < terms.length; o += 1) {\n if (close.test(terms[o].post)) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Parentheses(list, this, this.world);\n }\n\n return new Parentheses(list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Parentheses = addMethod$4;\n\nvar addMethod$3 = function addMethod(Doc) {\n /** */\n var Possessives = /*#__PURE__*/function (_Doc) {\n _inherits(Possessives, _Doc);\n\n var _super = _createSuper(Possessives);\n\n function Possessives(list, from, world) {\n var _this;\n\n _classCallCheck(this, Possessives);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Possessives, [{\n key: \"strip\",\n value: function strip() {\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms.forEach(function (t) {\n var str = t.text.replace(/'s$/, '');\n t.set(str || t.text);\n });\n });\n return this;\n }\n }]);\n\n return Possessives;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.possessives = function (n) {\n //find currently-contracted\n var found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Possessives(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Possessives = addMethod$3;\n\nvar pairs = {\n \"\\\"\": \"\\\"\",\n // 'StraightDoubleQuotes'\n \"\\uFF02\": \"\\uFF02\",\n // 'StraightDoubleQuotesWide'\n \"'\": \"'\",\n // 'StraightSingleQuotes'\n \"\\u201C\": \"\\u201D\",\n // 'CommaDoubleQuotes'\n \"\\u2018\": \"\\u2019\",\n // 'CommaSingleQuotes'\n \"\\u201F\": \"\\u201D\",\n // 'CurlyDoubleQuotesReversed'\n \"\\u201B\": \"\\u2019\",\n // 'CurlySingleQuotesReversed'\n \"\\u201E\": \"\\u201D\",\n // 'LowCurlyDoubleQuotes'\n \"\\u2E42\": \"\\u201D\",\n // 'LowCurlyDoubleQuotesReversed'\n \"\\u201A\": \"\\u2019\",\n // 'LowCurlySingleQuotes'\n \"\\xAB\": \"\\xBB\",\n // 'AngleDoubleQuotes'\n \"\\u2039\": \"\\u203A\",\n // 'AngleSingleQuotes'\n // Prime 'non quotation'\n \"\\u2035\": \"\\u2032\",\n // 'PrimeSingleQuotes'\n \"\\u2036\": \"\\u2033\",\n // 'PrimeDoubleQuotes'\n \"\\u2037\": \"\\u2034\",\n // 'PrimeTripleQuotes'\n // Prime 'quotation' variation\n \"\\u301D\": \"\\u301E\",\n // 'PrimeDoubleQuotes'\n \"`\": \"\\xB4\",\n // 'PrimeSingleQuotes'\n \"\\u301F\": \"\\u301E\" // 'LowPrimeDoubleQuotesReversed'\n\n};\nvar hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')');\n\nvar addMethod$2 = function addMethod(Doc) {\n /** \"these things\" */\n var Quotations = /*#__PURE__*/function (_Doc) {\n _inherits(Quotations, _Doc);\n\n var _super = _createSuper(Quotations);\n\n function Quotations() {\n _classCallCheck(this, Quotations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Quotations, [{\n key: \"unwrap\",\n value:\n /** remove the quote characters */\n function unwrap() {\n return this;\n }\n }]);\n\n return Quotations;\n }(Doc);\n\n Doc.prototype.quotations = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening quotes\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (hasOpen.test(t.pre)) {\n var _char = (t.pre.match(hasOpen) || [])[0];\n var want = pairs[_char]; // if (!want) {\n // console.warn('missing quote char ' + char)\n // }\n //look for the closing bracket..\n\n for (var o = i; o < terms.length; o += 1) {\n if (terms[o].post.indexOf(want) !== -1) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Quotations(list, this, this.world);\n }\n\n return new Quotations(list, this, this.world);\n }; // alias\n\n\n Doc.prototype.quotes = Doc.prototype.quotations;\n return Doc;\n};\n\nvar Quotations = addMethod$2;\n\n// walked => walk - turn a verb into it's root form\nvar toInfinitive = function toInfinitive(parsed, world) {\n var verb = parsed.verb; // console.log(parsed)\n // verb.debug()\n //1. if it's already infinitive\n\n var str = verb.text('reduced');\n\n if (verb.has('#Infinitive')) {\n return str;\n } // 2. world transform does the heavy-lifting\n\n\n var tense = null;\n\n if (verb.has('#PastTense')) {\n tense = 'PastTense';\n } else if (verb.has('#Gerund')) {\n tense = 'Gerund';\n } else if (verb.has('#PresentTense')) {\n tense = 'PresentTense';\n } else if (verb.has('#Participle')) {\n tense = 'Participle';\n } else if (verb.has('#Actor')) {\n tense = 'Actor';\n }\n\n return world.transforms.toInfinitive(str, world, tense);\n};\n\nvar toInfinitive_1 = toInfinitive;\n\n// spencer walks -> singular\n// we walk -> plural\n// the most-recent noun-phrase, before this verb.\nvar findNoun = function findNoun(vb) {\n var noun = vb.lookBehind('#Noun+').last();\n return noun;\n}; //sometimes you can tell if a verb is plural/singular, just by the verb\n// i am / we were\n// othertimes you need its subject 'we walk' vs 'i walk'\n\n\nvar isPlural = function isPlural(parsed) {\n var vb = parsed.verb;\n\n if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) {\n return true;\n }\n\n if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) {\n return false;\n } //consider its prior noun\n\n\n var noun = findNoun(vb);\n\n if (noun.has('(we|they|you)')) {\n return true;\n }\n\n if (noun.has('#Plural')) {\n return true;\n }\n\n if (noun.has('#Singular')) {\n return false;\n }\n\n return null;\n};\n\nvar isPlural_1 = isPlural;\n\n// #Copula : is -> 'is not'\n// #PastTense : walked -> did not walk\n// #PresentTense : walks -> does not walk\n// #Gerund : walking: -> not walking\n// #Infinitive : walk -> do not walk\n\nvar toNegative = function toNegative(parsed, world) {\n var vb = parsed.verb; // if it's already negative...\n\n if (parsed.negative.found) {\n return;\n } // would walk -> would not walk\n\n\n if (parsed.auxiliary.found) {\n parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have'\n\n if (parsed.auxiliary.has('#Modal have not')) {\n parsed.auxiliary.replace('have not', 'not have');\n }\n\n return;\n } // is walking -> is not walking\n\n\n if (vb.has('(#Copula|will|has|had|do)')) {\n vb.append('not');\n return;\n } // walked -> did not walk\n\n\n if (vb.has('#PastTense')) {\n var inf = toInfinitive_1(parsed, world);\n vb.replaceWith(inf, true);\n vb.prepend('did not');\n return;\n } // walks -> does not walk\n\n\n if (vb.has('#PresentTense')) {\n var _inf = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf, true);\n\n if (isPlural_1(parsed)) {\n vb.prepend('do not');\n } else {\n vb.prepend('does not');\n }\n\n return;\n } //walking -> not walking\n\n\n if (vb.has('#Gerund')) {\n var _inf2 = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf2, true);\n vb.prepend('not');\n return;\n } //fallback 1: walk -> does not walk\n\n\n if (isPlural_1(parsed)) {\n vb.prepend('does not');\n return;\n } //fallback 2: walk -> do not walk\n\n\n vb.prepend('do not');\n return;\n};\n\nvar toNegative_1 = toNegative;\n\n// who/what is doing this verb?\n// get the prior verb most-likely doing this action\n// (it can not-exist - 'close the door')\nvar getSubject = function getSubject(vb) {\n var behind = vb.lookBehind();\n var lastNoun = behind.nouns(null, {\n keep_anaphora: true\n }).last(); // support 'that' and 'this'\n\n if (!lastNoun.found) {\n lastNoun = behind.match('(that|this|each)').last();\n lastNoun = lastNoun.tag('#Noun').nouns();\n }\n\n return lastNoun;\n};\n\nvar getSubject_1 = getSubject;\n\nvar parseVerb = function parseVerb(vb) {\n var parsed = {\n adverb: vb.match('#Adverb+'),\n // 'really'\n negative: vb.match('#Negative'),\n // 'not'\n auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'),\n // 'will' of 'will go'\n particle: vb.match('#Particle'),\n // 'up' of 'pull up'\n verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'),\n original: vb,\n subject: getSubject_1(vb)\n }; // fallback, if no verb found\n\n if (!parsed.verb.found) {\n // blank-everything\n Object.keys(parsed).forEach(function (k) {\n parsed[k] = parsed[k].not('.');\n }); // it's all the verb\n\n parsed.verb = vb;\n return parsed;\n } //\n\n\n if (parsed.adverb && parsed.adverb.found) {\n var match = parsed.adverb.text('reduced') + '$';\n\n if (vb.has(match)) {\n parsed.adverbAfter = true;\n }\n }\n\n return parsed;\n};\n\nvar parse = parseVerb;\n\n/** too many special cases for is/was/will be*/\n\nvar toBe = function toBe(parsed) {\n var isI = false;\n var plural = isPlural_1(parsed);\n var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular\n // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) {\n // isI = true;\n // }\n // 'i look', not 'i looks'\n\n if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n isI = true;\n }\n\n var obj = {\n PastTense: 'was',\n PresentTense: 'is',\n FutureTense: 'will be',\n Infinitive: 'is',\n Gerund: 'being',\n Actor: '',\n PerfectTense: 'been',\n Pluperfect: 'been'\n }; //\"i is\" -> \"i am\"\n\n if (isI === true) {\n obj.PresentTense = 'am';\n obj.Infinitive = 'am';\n }\n\n if (plural) {\n obj.PastTense = 'were';\n obj.PresentTense = 'are';\n obj.Infinitive = 'are';\n }\n\n if (isNegative) {\n obj.PastTense += ' not';\n obj.PresentTense += ' not';\n obj.FutureTense = 'will not be';\n obj.Infinitive += ' not';\n obj.PerfectTense = 'not ' + obj.PerfectTense;\n obj.Pluperfect = 'not ' + obj.Pluperfect;\n obj.Gerund = 'not ' + obj.Gerund;\n }\n\n return obj;\n};\n\nvar toBe_1 = toBe;\n\n// 'may/could/should' -> 'may/could/should have'\nvar doModal = function doModal(parsed) {\n var str = parsed.verb.text();\n var res = {\n PastTense: str + ' have',\n PresentTense: str,\n FutureTense: str,\n Infinitive: str // Gerund: ,\n // Actor: '',\n // PerfectTense: '',\n // Pluperfect: '',\n\n };\n return res;\n};\n\nvar doModal_1 = doModal;\n\nvar conjugate = function conjugate(parsed, world) {\n var verb = parsed.verb; //special handling of 'is', 'will be', etc.\n\n if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) {\n return toBe_1(parsed);\n } // special handling of 'are walking'\n\n\n if (parsed.auxiliary.has('are') && verb.has('#Gerund')) {\n var og = parsed.original.clone();\n var past = og.clone().replace('are', 'were');\n var fut = og.clone().replace('are', 'will be');\n\n var _infinitive = toInfinitive_1(parsed, world);\n\n var res = {\n PastTense: past.text(),\n PresentTense: og.text(),\n FutureTense: fut.text(),\n Infinitive: _infinitive\n };\n return res;\n } // special handling of 'he could.'\n\n\n if (verb.has('#Modal')) {\n return doModal_1(parsed);\n } // dont conjugate imperative form - 'close the door'\n // if (parsed.auxiliary.has('do')) {\n // let str = parsed.original.text()\n // let res = {\n // PastTense: str,\n // PresentTense: str,\n // FutureTense: str,\n // Infinitive: str,\n // }\n // return res\n // }\n\n\n var hasHyphen = parsed.verb.termList(0).hasHyphen();\n var infinitive = toInfinitive_1(parsed, world);\n\n if (!infinitive) {\n return {};\n }\n\n var forms = world.transforms.conjugate(infinitive, world);\n forms.Infinitive = infinitive; // add particle to phrasal verbs ('fall over')\n\n if (parsed.particle.found) {\n var particle = parsed.particle.text();\n var space = hasHyphen === true ? '-' : ' ';\n Object.keys(forms).forEach(function (k) {\n return forms[k] += space + particle;\n });\n } //put the adverb at the end?\n // if (parsed.adverb.found) {\n // let adverb = parsed.adverb.text()\n // let space = hasHyphen === true ? '-' : ' '\n // if (parsed.adverbAfter === true) {\n // Object.keys(forms).forEach(k => (forms[k] += space + adverb))\n // } else {\n // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k]))\n // }\n // }\n //apply negative\n\n\n var isNegative = parsed.negative.found;\n\n if (isNegative) {\n forms.PastTense = 'did not ' + forms.Infinitive;\n forms.PresentTense = 'does not ' + forms.Infinitive;\n forms.Gerund = 'not ' + forms.Gerund;\n } //future Tense is pretty straightforward\n\n\n if (!forms.FutureTense) {\n if (isNegative) {\n forms.FutureTense = 'will not ' + forms.Infinitive;\n } else {\n forms.FutureTense = 'will ' + forms.Infinitive;\n }\n }\n\n if (isNegative) {\n forms.Infinitive = 'not ' + forms.Infinitive;\n }\n\n return forms;\n};\n\nvar conjugate_1 = conjugate;\n\n// if something is 'modal-ish' we are forced to use past-participle\n// ('i could drove' is wrong)\n\nvar useParticiple$1 = function useParticiple(parsed) {\n if (parsed.auxiliary.has('(could|should|would|may|can|must)')) {\n return true;\n }\n\n if (parsed.auxiliary.has('am .+? being')) {\n return true;\n }\n\n if (parsed.auxiliary.has('had .+? been')) {\n return true;\n }\n\n return false;\n}; // conjugate 'drive' ➔ 'have driven'\n\n\nvar toParticiple = function toParticiple(parsed, world) {\n //is it already a participle?\n if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) {\n return;\n } // try to swap the main verb to its participle form\n\n\n var obj = conjugate_1(parsed, world);\n var str = obj.Participle || obj.PastTense;\n\n if (str) {\n parsed.verb.replaceWith(str, false);\n } // 'am being driven' ➔ 'have been driven'\n\n\n if (parsed.auxiliary.has('am .+? being')) {\n parsed.auxiliary.remove('am');\n parsed.auxiliary.replace('being', 'have been');\n } // add a 'have'\n\n\n if (!parsed.auxiliary.has('have')) {\n parsed.auxiliary.append('have');\n } // tag it as a participle\n\n\n parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim'\n\n parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been'\n\n parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not'\n\n parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right\n\n parsed.auxiliary.tag('Auxiliary');\n};\n\nvar participle = {\n useParticiple: useParticiple$1,\n toParticiple: toParticiple\n};\n\nvar _toParticiple = participle.toParticiple,\n useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs\n\nvar makeNeutral = function makeNeutral(parsed) {\n //remove tense-info from auxiliaries\n parsed.auxiliary.remove('(will|are|am|being)');\n parsed.auxiliary.remove('(did|does)');\n parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle\n\n parsed.particle.remove();\n parsed.negative.remove();\n return parsed;\n};\n\nvar methods$1 = {\n /** overload the original json with verb information */\n json: function json(options) {\n var _this = this;\n\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (p) {\n var json = p.json(options)[0];\n var parsed = parse(p);\n json.parts = {};\n Object.keys(parsed).forEach(function (k) {\n if (parsed[k] && parsed[k].isA === 'Doc') {\n json.parts[k] = parsed[k].text('normal');\n } else {\n json.parts[k] = parsed[k];\n }\n });\n json.isNegative = p.has('#Negative');\n json.conjugations = conjugate_1(parsed, _this.world);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** grab the adverbs describing these verbs */\n adverbs: function adverbs() {\n var list = []; // look at internal adverbs\n\n this.forEach(function (vb) {\n var advb = parse(vb).adverb;\n\n if (advb.found) {\n list = list.concat(advb.list);\n }\n }); // look for leading adverbs\n\n var m = this.lookBehind('#Adverb+$');\n\n if (m.found) {\n list = m.list.concat(list);\n } // look for trailing adverbs\n\n\n m = this.lookAhead('^#Adverb+');\n\n if (m.found) {\n list = list.concat(m.list);\n }\n\n return this.buildFrom(list);\n },\n /// Verb Inflection\n\n /**return verbs like 'we walk' and not 'spencer walks' */\n isPlural: function isPlural() {\n var _this2 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this2.world) === true) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n\n /** return verbs like 'spencer walks' and not 'we walk' */\n isSingular: function isSingular() {\n var _this3 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this3.world) === false) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n /// Conjugation\n\n /** return all forms of this verb */\n conjugate: function conjugate() {\n var _this4 = this;\n\n var result = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var forms = conjugate_1(parsed, _this4.world);\n\n result.push(forms);\n });\n return result;\n },\n\n /** walk ➔ walked*/\n toPastTense: function toPastTense() {\n var _this5 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam'\n\n if (useParticiple(parsed)) {\n _toParticiple(parsed, _this5.world);\n\n return;\n }\n\n if (vb.has('#Imperative')) {\n return;\n } // don't conjugate 'to be'\n\n\n if (vb.has('be') && vb.lookBehind('to$').found) {\n return;\n } // handle 'is raining' -> 'was raining'\n\n\n if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) {\n vb.replace('is', 'was');\n return;\n }\n\n var str = conjugate_1(parsed, _this5.world).PastTense;\n\n if (str) {\n parsed = makeNeutral(parsed);\n parsed.verb.replaceWith(str, false); // vb.tag('PastTense')\n }\n });\n return this;\n },\n\n /** walk ➔ walks */\n toPresentTense: function toPresentTense() {\n var _this6 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var obj = conjugate_1(parsed, _this6.world);\n\n var str = obj.PresentTense; // 'i look', not 'i looks'\n\n if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n str = obj.Infinitive;\n }\n\n if (str) {\n //awkward support for present-participle form\n // -- should we support 'have been swimming' ➔ 'am swimming'\n if (parsed.auxiliary.has('(have|had) been')) {\n parsed.auxiliary.replace('(have|had) been', 'am being');\n\n if (obj.Particle) {\n str = obj.Particle || obj.PastTense;\n }\n\n return;\n }\n\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('PresentTense');\n parsed = makeNeutral(parsed); // avoid 'he would walks'\n\n parsed.auxiliary.remove('#Modal');\n }\n });\n return this;\n },\n\n /** walk ➔ will walk*/\n toFutureTense: function toFutureTense() {\n var _this7 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // 'i should drive' is already future-enough\n\n if (useParticiple(parsed)) {\n return;\n }\n\n var str = conjugate_1(parsed, _this7.world).FutureTense;\n\n if (str) {\n parsed = makeNeutral(parsed); // avoid 'he would will go'\n\n parsed.auxiliary.remove('#Modal');\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('FutureTense');\n }\n });\n return this;\n },\n\n /** walks ➔ walk */\n toInfinitive: function toInfinitive() {\n var _this8 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this8.world).Infinitive;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Infinitive');\n }\n });\n return this;\n },\n\n /** walk ➔ walking */\n toGerund: function toGerund() {\n var _this9 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this9.world).Gerund;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Gerund');\n }\n });\n return this;\n },\n\n /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */\n toParticiple: function toParticiple() {\n var _this10 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n var noAux = !parsed.auxiliary.found;\n\n _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found\n\n\n if (noAux) {\n parsed.verb.prepend(parsed.auxiliary.text());\n parsed.auxiliary.remove();\n }\n });\n return this;\n },\n /// Negation\n\n /** return only verbs with 'not'*/\n isNegative: function isNegative() {\n return this[\"if\"]('#Negative');\n },\n\n /** return only verbs without 'not'*/\n isPositive: function isPositive() {\n return this.ifNo('#Negative');\n },\n\n /** return only commands - verbs in imperative mood */\n isImperative: function isImperative() {\n return this[\"if\"]('#Imperative');\n },\n\n /** add a 'not' to these verbs */\n toNegative: function toNegative() {\n var _this11 = this;\n\n this.list.forEach(function (p) {\n var doc = _this11.buildFrom([p]);\n\n var parsed = parse(doc);\n\n toNegative_1(parsed, doc.world);\n });\n return this;\n },\n\n /** remove 'not' from these verbs */\n toPositive: function toPositive() {\n var m = this.match('do not #Verb');\n\n if (m.found) {\n m.remove('do not');\n }\n\n return this.remove('#Negative');\n },\n\n /** who, or what is doing this action? */\n subject: function subject() {\n var list = [];\n this.forEach(function (p) {\n var found = getSubject_1(p);\n\n if (found.list[0]) {\n list.push(found.list[0]);\n }\n });\n return this.buildFrom(list);\n }\n};\n\nvar addMethod$1 = function addMethod(Doc) {\n /** */\n var Verbs = /*#__PURE__*/function (_Doc) {\n _inherits(Verbs, _Doc);\n\n var _super = _createSuper(Verbs);\n\n function Verbs() {\n _classCallCheck(this, Verbs);\n\n return _super.apply(this, arguments);\n }\n\n return Verbs;\n }(Doc); // add-in our methods\n\n\n Object.assign(Verbs.prototype, methods$1); // aliases\n\n Verbs.prototype.negate = Verbs.prototype.toNegative;\n\n Doc.prototype.verbs = function (n) {\n var match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs\n\n match = match.not('^#Adverb+');\n match = match.not('#Adverb+$'); // handle commas:\n // don't split 'really, really'\n\n var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas\n\n var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at...\n\n var gerund = m.match('#PastTense #Gerund');\n\n if (!gerund.has('(been|am|#Auxiliary) #Gerund')) {\n m = m.splitBefore(gerund.match('#Gerund'));\n } // combine them back together\n\n\n m = m.concat(keep);\n m.sort('index'); //handle slashes?\n //ensure there's actually a verb\n\n m = m[\"if\"]('#Verb'); // the reason he will is ...\n\n if (m.has('(is|was)$')) {\n m = m.splitBefore('(is|was)$');\n } //ensure it's not two verbs\n\n\n if (m.has('#PresentTense #Adverb #PresentTense')) {\n m = m.splitBefore('#Adverb #PresentTense');\n } //grab (n)th result\n\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n var vb = new Verbs(m.list, this, this.world);\n return vb;\n };\n\n return Doc;\n};\n\nvar Verbs = addMethod$1;\n\nvar addMethod = function addMethod(Doc) {\n /** */\n var People = /*#__PURE__*/function (_Doc) {\n _inherits(People, _Doc);\n\n var _super = _createSuper(People);\n\n function People() {\n _classCallCheck(this, People);\n\n return _super.apply(this, arguments);\n }\n\n return People;\n }(Doc);\n\n Doc.prototype.people = function (n) {\n var match = this.splitAfter('@hasComma');\n match = match.match('#Person+'); //grab (n)th result\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new People(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar People = addMethod;\n\nvar subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People];\n\nvar extend = function extend(Doc) {\n // add basic methods\n Object.keys(_simple).forEach(function (k) {\n return Doc.prototype[k] = _simple[k];\n }); // add subclassed methods\n\n subclass.forEach(function (addFn) {\n return addFn(Doc);\n });\n return Doc;\n};\n\nvar Subset = extend;\n\nvar methods = {\n misc: methods$4,\n selections: _simple\n};\n/** a parsed text object */\n\nvar Doc = /*#__PURE__*/function () {\n function Doc(list, from, world) {\n var _this = this;\n\n _classCallCheck(this, Doc);\n\n this.list = list; // this.reasons = []\n //quiet these properties in console.logs\n\n Object.defineProperty(this, 'from', {\n enumerable: false,\n value: from,\n writable: true\n }); //borrow some missing data from parent\n\n if (world === undefined && from !== undefined) {\n world = from.world;\n } //'world' getter\n\n\n Object.defineProperty(this, 'world', {\n enumerable: false,\n value: world,\n writable: true\n }); //fast-scans for our data\n\n Object.defineProperty(this, '_cache', {\n enumerable: false,\n writable: true,\n value: {}\n }); //'found' getter\n\n Object.defineProperty(this, 'found', {\n get: function get() {\n return _this.list.length > 0;\n }\n }); //'length' getter\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return _this.list.length;\n }\n }); // this is way easier than .constructor.name...\n\n Object.defineProperty(this, 'isA', {\n get: function get() {\n return 'Doc';\n }\n });\n }\n /** run part-of-speech tagger on all results*/\n\n\n _createClass(Doc, [{\n key: \"tagger\",\n value: function tagger() {\n return _02Tagger(this);\n }\n /** pool is stored on phrase objects */\n\n }, {\n key: \"pool\",\n value: function pool() {\n if (this.list.length > 0) {\n return this.list[0].pool;\n }\n\n return this.all().list[0].pool;\n }\n }]);\n\n return Doc;\n}();\n/** create a new Document object */\n\n\nDoc.prototype.buildFrom = function (list) {\n list = list.map(function (p) {\n return p.clone(true);\n }); // new this.constructor()\n\n var doc = new Doc(list, this, this.world);\n return doc;\n};\n/** create a new Document from plaintext. */\n\n\nDoc.prototype.fromText = function (str) {\n var list = _01Tokenizer(str, this.world, this.pool());\n return this.buildFrom(list);\n};\n\nObject.assign(Doc.prototype, methods.misc);\nObject.assign(Doc.prototype, methods.selections); //add sub-classes\n\nSubset(Doc); //aliases\n\nvar aliases = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if'\n};\nObject.keys(aliases).forEach(function (k) {\n return Doc.prototype[k] = Doc.prototype[aliases[k]];\n});\nvar Doc_1 = Doc;\n\nvar smallTagger = function smallTagger(doc) {\n var terms = doc.termList();\n _01Lexicon(terms, doc.world); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar tiny = smallTagger;\n\nfunction instance(worldInstance) {\n //blast-out our word-lists, just once\n var world = worldInstance;\n /** parse and tag text into a compromise object */\n\n var nlp = function nlp() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n\n if (lexicon) {\n world.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, world);\n var doc = new Doc_1(list, null, world);\n doc.tagger();\n return doc;\n };\n /** parse text into a compromise object, without running POS-tagging */\n\n\n nlp.tokenize = function () {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n var w = world;\n\n if (lexicon) {\n w = w.clone();\n w.words = {};\n w.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, w);\n var doc = new Doc_1(list, null, w);\n\n if (lexicon || doc.world.taggers.length > 0) {\n tiny(doc);\n }\n\n return doc;\n };\n /** mix in a compromise-plugin */\n\n\n nlp.extend = function (fn) {\n fn(Doc_1, world, this, Phrase_1, Term_1, Pool_1);\n return this;\n };\n /** create a compromise Doc object from .json() results */\n\n\n nlp.fromJSON = function (json) {\n var list = fromJSON_1(json, world);\n return new Doc_1(list, null, world);\n };\n /** make a deep-copy of the library state */\n\n\n nlp.clone = function () {\n return instance(world.clone());\n };\n /** log our decision-making for debugging */\n\n\n nlp.verbose = function () {\n var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n world.verbose(bool);\n return this;\n };\n /** grab currently-used World object */\n\n\n nlp.world = function () {\n return world;\n };\n /** pre-parse any match statements */\n\n\n nlp.parseMatch = function (str, opts) {\n return matchSyntax(str, opts);\n };\n /** current version of the library */\n\n\n nlp.version = _version; // aliases\n\n nlp[\"import\"] = nlp.load;\n nlp.plugin = nlp.extend;\n return nlp;\n}\n\nvar src = instance(new World_1());\n\nexport default src;\n","const fromTemplate = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl) {\n let json = tmpl.json() || {}\n return json.description || ''\n }\n return null\n}\nmodule.exports = fromTemplate\n","const preProcess = function (doc) {\n doc.parentheses().remove()\n return doc\n}\nmodule.exports = preProcess\n","const cleanUp = function (s) {\n // 'an actor and was a politician'\n s.remove('and #Copula .*')\n return s\n}\n\n// founded in 1952 as the flagship ..\nconst findPivot = function (s) {\n let m = s.matchOne('#Copula+ (a|an|the|any|one) of?')\n if (!m.found) {\n m = s.matchOne('#Copula+')\n }\n if (!m.found) {\n m = s.matchOne('refers to (a|an|the|any)? of?')\n }\n if (!m.found) {\n m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?')\n }\n if (!m.found) {\n return null\n }\n let f = s.splitOn(m)\n let verb = f.eq(1)\n let article = verb.match(`(a|an|the|any)? of?`)\n verb.remove(`(a|an|the|any)? of?`)\n return {\n before: f.eq(0),\n verb: f.eq(1),\n article: article,\n after: cleanUp(f.eq(2))\n }\n}\nmodule.exports = findPivot\n","const byClause = function (s) {\n // 'an actor and also a politician'\n s.remove('and (also|eventually) (a|an|the|#Possessive) .*')\n // 'an actor who was a politician'\n s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*')\n // past-tense verbs 'located in spain'\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n //\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n\n return s\n}\nmodule.exports = byClause\n","const safeCuts = function (s) {\n // 'in hamilton, Canada'\n if (s.has('(#Place && @hasComma) #Country+$')) {\n s.remove('#Country+$')\n }\n // 'which spans the '\n if (s.has('#Noun (that|which|who) #PresentTense the .*')) {\n s.remove(' that #PresentTense the .*')\n }\n // 'owned by the ...'\n if (s.has('#Noun #PastTense by the .*')) {\n s.remove('#PastTense by the .*')\n }\n // 'an american actress'\n s.remove('#Demonym')\n // professional hockey player\n s.remove('(professional|former)')\n\n //event-templates\n s.remove('and? held annually .*')\n s.remove('taking place each .*')\n\n // ordinal templates - the fifth fastest ..\n s.remove('^one of (the|many|several|#Value)+')\n s.remove('^(a|an|the)? #Ordinal? #Superlative')\n s.remove('^(a|an|the)? #Ordinal? most #Adjective')\n\n //\n s.remove('born in .*')\n s.remove('born #Date+ in? #Place+?')\n s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*')\n s.remove('(which|who|that) (is|was) .*')\n s.remove('^the name of')\n\n return s\n}\nmodule.exports = safeCuts\n","const isIndependent = function (c) {\n if (c.has('^(and|the|which|who|whom|also|a|an|the)')) {\n return true\n }\n // 'part of abu dabi'\n if (c.has('^(west|north|south|east|part) of')) {\n return true\n }\n // 'written by .'\n if (c.has('^#PastTense by .')) {\n return true\n }\n // 'sometimes called ..'\n if (c.has('^(occasionally|sometimes|frequently)')) {\n return true\n }\n // 'such as ..'\n if (c.has('^such as')) {\n return true\n }\n // 'featuring gold feathers ..'\n if (c.has('^(including|featuring|depicting)')) {\n return true\n }\n return false\n}\n\nconst hardCuts = function (s) {\n // .. in san fransisco\n if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) {\n s.remove('(located|based) in #Place+$')\n } else if (\n s.has(\n '(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'\n )\n ) {\n s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')\n } else if (s.has('(#Noun|#Value) in #Place+$')) {\n s.remove('in #Place+$')\n } else {\n s.remove('and? part of #Place+$')\n s.remove('and? near #Place+$')\n }\n\n // by clause\n let clauses = s.clauses()\n if (clauses.length > 1) {\n let first = clauses.eq(0)\n let second = clauses.eq(1)\n //can we just choose the first clause?\n if (isIndependent(second)) {\n s = clauses.eq(0)\n } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) {\n // 'produced by...'\n s = clauses.eq(0)\n } else if (second.has('^(#Gerund)') && first.has('#Noun$')) {\n // 'featuring a ...'\n s = clauses.eq(0)\n } else {\n // can we remove the last clause, atleast?\n let last = clauses.last()\n if (isIndependent(last)) {\n clauses.list.pop()\n s = clauses.join()\n }\n }\n }\n\n //.. writen by sandro leonardo\n if (s.has('(#Noun|and) #PastTense by')) {\n s.remove('#PastTense by .*')\n }\n //\n s.remove('and? designed to .*')\n s.remove('and? owned by .*')\n s.remove('and? consisting of .*')\n // , which collapsed\n if (s.has('@hasComma (which|who) #Verb')) {\n s.remove('(which|who) .*')\n }\n // , then\n // if (s.has('@hasComma (then)')) {\n // s.remove('(which|who) .*')\n // }\n return s\n}\nmodule.exports = hardCuts\n","const lastTry = function (s) {\n s.remove('(small|large|minor|major)')\n s.remove('(extinct|retired|annual|biweekly|monthly|daily)')\n s.remove('(female|male)')\n s.remove('(private|independent|official|unofficial|officially)')\n s.remove('(southern|northern|eastern|western|northeastern|northwestern)')\n\n //\n s.remove('^(family|clade|genus|species|order) of')\n return s\n}\nmodule.exports = lastTry\n","//check text is appropriate length\nconst isGood = function (doc, options) {\n if (doc && typeof doc.text === 'function') {\n let text = doc.text()\n if (text && text.length > options.min && text.length < options.max) {\n return true\n }\n }\n return false\n}\nmodule.exports = isGood\n","const nlp = require('compromise')\nconst preProcess = require('./00-preProcess')\nconst findPivot = require('./01-pivot')\nconst byClause = require('./02-byClause')\nconst safeCut = require('./03-safeCuts')\nconst hardCut = require('./04-hardCuts')\nconst lastTry = require('./05-lastTry')\nconst isGood = require('./_isGood')\n\nconst post = function (s) {\n s.remove('^(and|or|but)')\n s.remove('(and|or|but)$')\n s.post('') // remove trailing comma\n return s.text()\n}\n\n// let count = 0\nconst doSentence = function (doc, options) {\n let sentence = doc.sentence(0)\n if (!sentence) {\n return ''\n }\n let txt = sentence.text()\n let s = nlp(txt)\n preProcess(s)\n\n let pivot = findPivot(s)\n // if we can't pivot it properly, don't bother\n if (!pivot || !pivot.verb || !pivot.verb.found) {\n return ''\n }\n let after = pivot.after\n if (options.article && pivot.article && pivot.article.found) {\n after.prepend(pivot.article.text())\n }\n // maybe it's good already\n if (isGood(after, options)) {\n return post(after)\n }\n // parse major chunks\n after = byClause(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // perform some modifications\n after = safeCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // really give it a go\n after = hardCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // atleast we tried\n after = lastTry(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // console.log(after.text())\n // count += 1\n // console.log(count)\n // console.log(after.match('#PastTense').text())\n // console.log(after.text())\n // console.log('\\n')\n return ''\n}\nmodule.exports = doSentence\n","const bad = [\n 'living',\n 'births',\n 'former',\n 'deceased',\n 'missing',\n 'with',\n 'descent',\n 'award',\n 'winners',\n 'nominees',\n 'alumni',\n 'other'\n].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst good = ['male', 'female'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst like = ['male', 'female', 'century'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst dislike = ['people', 'place', 'from', 'in', 'people from'].map(\n (str) => new RegExp(`\\\\b${str}\\\\b`),\n 'i'\n)\n\nmodule.exports = {\n good: good,\n bad: bad,\n like: like,\n dislike: dislike\n}\n","const { like, dislike, good, bad } = require('./regs')\nconst hasYear = /[0-9]{4}/\nconst isPlural = /s$/\n\nconst fromCategory = function (doc) {\n let cats = doc.categories()\n\n // try to focus on the best ones, first\n let tmp = cats.filter((cat) => {\n return good.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // remove bad ones\n cats = cats.filter((cat) => {\n if (bad.find((reg) => reg.test(cat))) {\n return false\n }\n if (hasYear.test(cat)) {\n return false\n }\n return true\n })\n\n if (cats.length === 0) {\n return ''\n }\n // look at sorting by preferences\n tmp = cats.filter((cat) => {\n return like.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n // remove disliked ones\n tmp = cats.filter((cat) => {\n // not a plural ending\n if (isPlural.test(cat) === false) {\n return false\n }\n // just one word\n if (cat.slice(' ').length === 1) {\n return false\n }\n return dislike.find((reg) => reg.test(cat)) === undefined\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // sort them by most words\n cats = cats.sort((a, b) => {\n let aWords = a.split(' ').length\n let bWords = b.split(' ').length\n if (aWords > bWords) {\n return -1\n } else if (aWords < bWords) {\n return 1\n }\n return 0\n })\n // console.log(cats)\n\n return cats[0]\n}\nmodule.exports = fromCategory\n","const nlp = require('compromise')\nconst titleCase = (str) => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\n// 'American songwriters' to 'an American songwriter'\nconst changeCat = function (cat, options) {\n let c = nlp(cat)\n c.nouns().toSingular()\n // add article to the front\n if (options.article) {\n let article = 'A'\n let noun = c.nouns(0)\n if (noun && noun.found) {\n article = c.nouns(0).json({ terms: false })[0].article || article\n article = titleCase(article)\n }\n let first = c.terms(0)\n if (first.has('#ProperNoun') === false) {\n first.toLowerCase()\n }\n c.prepend(article)\n }\n // remove any parentheses\n c.parentheses().remove()\n return c.text()\n}\nmodule.exports = changeCat\n","const chooseCat = require('./01-choose')\nconst change = require('./02-change')\n\nconst byCategory = function (doc, options) {\n let cat = chooseCat(doc, options)\n if (!cat) {\n return ''\n }\n return change(cat, options)\n}\nmodule.exports = byCategory\n","const nlp = require('compromise')\nconst fromTemplate = require('./template')\nconst fromSentence = require('./sentence')\nconst fromCategory = require('./category')\n\nconst defaults = {\n article: true,\n template: true,\n sentence: true,\n category: true,\n max: 80,\n min: 3\n}\n\nconst seemsGood = function (txt, options) {\n return txt && txt.length > 5 && txt.length < options.max\n}\n\nconst plugin = function (models) {\n // add a new method to main class\n models.Doc.prototype.summary = function (options) {\n let doc = this\n options = options || {}\n options = Object.assign({}, defaults, options)\n\n // generate from {{short description}} template\n let txt = ''\n if (options.template) {\n txt = fromTemplate(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n // generate from first-sentence\n if (options.sentence) {\n txt = fromSentence(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n if (options.category) {\n return fromCategory(doc, options)\n }\n return ''\n }\n\n // should we use 'it', 'he', 'they'...\n models.Doc.prototype.article = function () {\n let txt = ''\n // prefer the 2nd sentence\n if (this.sentence(1)) {\n txt = this.sentence(1).text()\n } else {\n txt = this.sentence(0).text()\n }\n let doc = nlp(txt)\n let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase()\n return found || 'it'\n }\n\n // was event in past? is person dead?\n models.Doc.prototype.tense = function () {\n let txt = this.sentence().text()\n let doc = nlp(txt)\n let copula = doc.match('#Copula+').first()\n if (copula.has('was')) {\n return 'Past'\n }\n let vb = doc.verbs(0)\n if (vb.has('#PastTense')) {\n return 'Past'\n }\n if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) {\n return 'Future'\n }\n return 'Present'\n }\n}\nmodule.exports = plugin\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","value","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","e","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","_createSuperInternal","Super","result","NewTarget","arguments","apply","chars","split","makeId","str","text","Math","floor","random","_id","compact","a","b","c","d","f","g","h","I","j","k","l","m","n","q","r","s","t","u","v","w","x","y","z","unicode","keys","forEach","killUnicode","join","unicode_1","periodAcronym","oneLetterAcronym$1","noPeriodAcronym","lowerCaseAcronym","isAcronym$2","isAcronym","test","isAcronym_1$1","hasSlash$1","clean","toLowerCase","trim","original","replace","clean_1","reduced","reduce","startings","endings","hasSlash","hasApostrophe","hasAcronym","minusNumber","shortYear","parseTerm","pre","post","found","after","parsed","word","alias","parse$2","createCommonjsModule","fn","module","exports","_01Case","titleCase","upperCase","toUpperCase","toTitleCase","isUpperCase","isTitleCase","_02Punctuation$1","startQuote","endQuote","hasPost","punct","indexOf","hasPre","hasQuote","hasQuotation","hasComma","hasPeriod","hasExclamation","hasQuestionMark","hasEllipses","hasSemicolon","hasHyphen","hyphen","hasDash","hasContraction","implicit","addPunctuation","editDistance","strA","strB","aLength","bLength","limit","abs","matrix","_i","a_index","b_index","cost","min","_i2","shouldUpdate","fuzzyMatch","minLength","undefined","steps","max","relative","similarity","_fuzzy","wrapMatch","doesMatch","reg","index","id","anything","start","end","hasOwnProperty","soft","root","fuzzy","score","tag","tags","method","regex","fastOr","choices","operator","every","some","negative","_doesMatch","boring","doesMatch_1","isAcronym_1","isImplicit","isKnown","setRoot","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","_03Misc","hasSpace$1","textOut","options","showPre","showPost","before","normal","titlecase","ProperNoun","Acronym","lowercase","acronyms","whitespace","last","punctuation","abbreviations","Abbreviation","_04Text","boringTags","Auxiliary","Possessive","rankTags","term","tagSet","sort","lineage","isA","_bestTag","jsonDefault","offset","bestTag","json$1","json","assign","_05Json$1","methods$8","isClientSide","window","document","padEnd","width","toString","logTag","reason","console","log","logUntag","isArray$3","isArray","arr","titleCase$4","charAt","substr","fns$1","addTag","tagset","isVerbose","down","unTag","notA","addTags","add","lowerCase","titleCase$3","unTag$1","untagAll","unTag_1$1","canBe$2","canBe","enemies","canBe_1$1","tag_1","tagSafe$1","tagSafe","unTag_1","canBe_1","tag$1","Term","String","prev","next","set","clone","Term_1","terms","cache","pool","get","error","push","clone$1","isShallow","_this","buildFrom","newTerms","map","lastTerm","hasId","wantId","_terms","lastId","concat","wordCount","filter","fullSentence","len","_01Utils$1","trimEnd","text$1","isFirst","isLast","isFull","txt","_02Text","_03Change","endOfSentence","combinePost","match","addWhitespace$1","addWhitespace","beforeTerms","newTerm","stitchIn$1","stitchIn","lastBefore","lastNew","afterId","afterTerm","beforeId","unique$5","unique","list","appendPhrase","newPhrase","doc","toStretch","docs","parents","parent","shouldChange","append","hasSpace","main","unique$4","joinPhrase","starterId","prepend","shrinkAll","deleteLength","phrase","find","deletePhrase","_delete$1","append_1","prepend_1","_delete","replace$1","firstLength","tmp","splitOn","findIndex","slice","_04Insert","res","_05Json","lookAhead","regs","getAfter","all","lookBehind","getBefore","_06Lookahead","methods$7","failFast$1","failFast","optional","_02FailFast","_matchLogic","getGreedy","state","endReg","start_i","phrase_length","count","greedyTo","nextReg","isEndGreedy","greedy","tmpReg","doOrBlock","skipN","block","wasFound","cr","w_index","extra","foundBlock","keepGoing","doAndBlock","longest","allDidMatch","allWords","tryTerm","getGroup","term_index","name","groups","groupId","termId","group","tryHere","hasGroup","previousGroup","named","haveNeeds","remain","skipto","skipNum","_g","_skipNum","_g2","startAt","nextRegMatched","nextTerm","_g3","foundNeg","_03TryMatch","postProcess$1","postProcess","matches","atEnd","_ref","_04PostProcess","bySlashes","byParentheses","byWord","isBlock","isReg","cleanUp","parseBlocks","_final","_01ParseBlocks","hasMinMax","andSign","captureName","RegExp","titleCase$2","stripStart","stripEnd","stripBoth","parseToken","groupType","exec","Number","_02ParseToken","nameGroups","tokens","convert","current","token","doFastOrMode","shouldPack","oneOf","opts","_03PostProcess","isArray$2","byArray","blocks","fromDoc","ids","idBlocks","addOptions","syntax","input","matchSyntax","idLookup","blocklist","_loop","_t","foundAll","idLookup_1","matchAll","matchOne","_res","_res2","_01MatchAll","notMatch","ts","not$1","match_1","justOne","has","not","_this2","canBe$1","_this3","results","previous","can","Phrase","aliases$1","Phrase_1","Pool","words","remove","merge","stats","Pool_1","linkTerms","_linkTerms","initSplit","hasSomething","isAcronym$1","hasEllipse","newLine","hasLetter","startWhitespace","naiive_split","lines","isSentence","abbrevs","lastWord","splitSentences","sentences","chunks","splits","ws","_01Sentences","wordlike","isBoundary","naiiveSplit","isSlash","notWord","reg2","combineSlashes","splitHyphens","hyphens","whichDash","isArray$1","splitWords","carry","_02Words","fromText","phrases","_01Tokenizer","fromJSON","fromJSON_1","_version","entity","nouns$1","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","NickName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","verbs$1","Imperative","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","values","Value","Ordinal","Cardinal","Fraction","RomanNumeral","TextValue","NumericValue","Money","Percent","misc$1","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Timezone","Time","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","_color","unique$3","inferIsA","_isA","unique$2","inferNotA","_notA","inferLineage","_lineage","validate","inferTags","inference","addIn","build","_data","seq","cache$1","toAlphaCode","_o","fromCharCode","fromAlphaCode","_e","charCodeAt","encoding","symbols","nodes","symCount","syms","indexFromRef","toArray","_s","unpack","unpack_1$1","unpack_1$1$1","_o2","Array","efrtUnpack_min","misc","g8","vh1","q1","q2","q3","q4","her","his","their","themselves","your","our","my","its","fancy","lex","TextOrdinal","plural","toPlural","conj","conjugate","adjectives","hasCompound","addWords","wordsObj","multi","buildOut","lexicon","unpack_1","addIrregulars","nouns","irregulars","verbs","inf","forms","addIrregulars_1","plurals","addendum","alga","alumna","alumnus","analysis","antenna","appendix","avocado","axis","bacillus","barracks","beau","bus","cactus","chateau","child","circus","clothes","corpus","criterion","curriculum","database","deer","diagnosis","echo","embargo","epoch","foot","formula","fungus","genus","goose","halo","hippopotamus","larva","leaf","libretto","loaf","man","memorandum","modulus","mosquito","mouse","nebula","nucleus","octopus","opus","ovum","ox","parenthesis","person","phenomenon","prognosis","quiz","radius","referendum","rodeo","sex","shoe","sombrero","stimulus","stomach","syllabus","synopsis","tableau","thesis","thief","tooth","tornado","tuxedo","vertebra","mapping$1","prt","perf","pst","fut","pres","pluperf","conjugations","act","ache","age","aim","arise","babysit","ban","be","beat","become","begin","being","bend","bet","bind","bite","bleed","blow","boil","brake","breed","bring","broadcast","budget","burn","burst","buy","choose","cling","come","compete","creep","cut","deal","develop","die","dig","dive","draw","dream","drink","drive","drop","eat","edit","egg","fall","feed","feel","fight","flee","fling","fly","forbid","forget","forgive","free","freeze","give","go","grow","guide","hang","have","hear","hide","hit","hold","hurt","ice","imply","is","keep","kneel","know","lay","lead","leap","leave","lend","lie","light","loose","lose","make","mean","meet","miss","patrol","pay","prove","puke","put","quit","read","ride","reside","ring","rise","rub","run","say","seat","see","seek","sell","send","sew","shake","shave","shed","shine","shoot","show","shut","sing","sink","sit","ski","slay","sleep","slide","smash","sneak","speak","speed","spend","spill","spin","spit","spread","spring","stand","steal","stick","sting","stink","stream","strew","strike","suit","sware","swear","sweep","swim","swing","take","teach","tear","tell","think","thrive","tie","undergo","understand","upset","wait","wake","wear","weave","wed","weep","win","wind","withdraw","wring","write","full","conjugations_1","endsWith$1","repl","pr","pa","gr","ar","suffixes$1","posMap","doTransform","pos","checkSuffix","_01Suffixes","hasY","generic","_02Generic","conjugate$2","conjugate_1$1","do_rules$1","dont_rules$1","irregulars$5","nice","late","hard","inner","outer","far","worse","bad","good","big","large","transforms$2","to_superlative","toSuperlative","do_rules","dont_rules","irregulars$4","grey","gray","green","yellow","red","well","sad","transforms$1","to_comparative","toComparative","fns","conjugate$1","sup","comp","adjectives$2","suffixes","_rules$2","addE","trySuffix","pluralize","_rules$1","invertObj","invert","toSingular_1","rules","to","_transform","guessVerb","_guess","guessTense","three","two","one","toInfinitive$1","irregs","rule","toInfinitive_1$1","irregulars$3","_isVerbose","World","verbose","bool","wordObj","cleaned","addConjugations","addPlurals","taggers","compounds","postProcessors","JSON","parse","stringify","w2","World_1","_01Utils","from","addParent","reverse","doShallow","wordcount","_02Accessors","first","eq","firstTerms","firstTerm","lastTerms","termList","num","getGroups","allGroups","_groups$j","getOneName","_loop2","sentence","cacheRequired$1","cacheRequired","needTags","needWords","_cache","_cacheRequired","_failFast","_03Match","ifNo","lookAfter","lookBefore","befores","hasAfter","hasBefore","tagTerms","safe","tagList","_setTag","why","_04Tag","detachParent","sub","_this4","_this5","_05Loops","tokenize","buildTree","val","more","rest","fastLookup","everyTerm","_lookup","_06Lookup","isObject","lookup","isObj","byVal","lookUp","uncache","_07Cache","titleCase$1","replaceWith","keepTags","newPhrases","keepCase","tmpDoc","tagger","oldTags","_replace","_01Replace","_02Insert","makeNew","insertAfter","insertAt","insertBefore","arg","toRemove","shouldTrim","showFull","trimPre","trimPost","_01Text","termOffsets","elapsed","offsets","calcOffset","_offset","_02Json","jsonDefaults","setOptions","frequency","freq","already","data","_debug","reset","css","blue","magenta","cyan","black","logClientSide","cli","tagString","debug","topk","_topk","debug_1","out","_03Out","methods$6","alpha","left","right","byFreq","counts","sortSequential","order","alphabetical","seqNames","sequence","sequential","chron","chronological","unique$1","_01Sort","isPunct","quotes","methods$5","termArr","quotations","adverbs","_methods","defaults","emoji","contractions","parentheses","possessives","honorifics","mapping","medium","heavy","normalize","strip","contraction","expand","unwrap","possessive","_02Normalize","_03Split","foundEm","parts","splitAfter","splitBefore","segment","eachTerm","toCamelCase","_04Case","_05Whitespace","hyphenate","dehyphenate","deHyphenate","toQuotations","toQuotation","toParentheses","removed","increase","_06Join","postPunct","setContraction","suffix","contract","_07Contract","methods$4","methods$3","emojis","atmentions","atMentions","phoneNumbers","money","places","organizations","clauses","entities","yup","people","ignore","things","topics","_simple","underOver","tryMultiple","checkLexicon","foundWords","noPrefix","_01Lexicon","apostrophes","perSec","checkPunctuation","endChar","_02Punctuation","startsWith","romanNumeral","romanNumValid","checkRegex$1","checkRegex","_03Prefixes","Adj$1","Inf$1","Pres$1","Sing$1","Past$1","Exp","Actor$1","Noun$1","Last$1","endsWith","Adj","Inf","Pres","Sing","Past","Avb","Plrl","Vb","Last","suffixMap","ea","ia","ic","ly","oed","ued","xed","azy","eer","ped","ffy","ify","ing","ize","lar","mum","nes","nny","oid","ous","que","rol","sis","zes","amed","aped","ched","lked","nded","cted","dged","akis","cede","chuk","czyk","ects","ends","enko","ette","fies","fore","gate","gone","ices","ints","ines","ions","less","llen","made","nsen","oses","ould","sson","tage","teen","tion","tive","tors","vice","tized","urned","eased","ances","bound","ettes","fully","ishes","ities","marek","nssen","ology","ports","rough","tches","tieth","tures","wards","where","auskas","keeper","logist","teenth","opoulos","borough","sdottir","endRegexs","_char","knownSuffixes","_04Suffixes","emoticons","emojiReg","isCommaEmoji","raw","isEmoticon","tagEmoji","_05Emoji","lookups","_01Init","afterThisWord","it","there","because","but","who","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","markov","beforeThisPos","afterThisPos","afterKeys","beforeKeys","checkNeighbours","foundTag","_tag","_tag2","_foundTag","_tag3","_ret","_01Neighbours","hasNumber","checkCase","_02Case","hasPrefix","prefix","checkPrefix","stem","_03Stem","isPlural$3","isSingular$1","isPlural_1$2","isSingular","isPlural","noPlurals","notPlural","notSingular","checkPlural","_04Plurals","orgWords","maybeOrg","Comma","tagOrgs","_05Organizations","oneLetterAcronym","periodSeperated","oneLetterWord","A","checkAcronym","_06Acronyms","step","neighbours","fallbacks","_02Fallbacks","hasNegative","irregulars$2","wont","cant","cannot","dont","dun","doAint","noun","checkNegative","_01Negative","contraction$1","easy","ll","ve","re","checkApostrophe","_02Simple","irregulars$1","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","checkIrregulars","_03Irregulars","hasApostropheS","banList","that","hereThere","here","everywhere","isPossessive","twoTerm","isHas","checkPossessive","_04Possessive","hasPerfect","useDid","how","what","checkPerfect","_05PerfectTense","isRange","timeRange","checkRange","_06Ranges","french","qu","checkFrench","_07French","isNumber","isOrdinal","isTime","createPhrase","_03Contractions","hasWord","hasTag","miscCorrection","notIf","fixMisc","_unique","list$5","_01Misc","_ambig","adverbAdjective","personDate","personMonth","personAdjective","personVerb","personPlace","personNoun","dates","list$4","_02Dates","adjectives$1","list$3","_03Adjective","_04Noun","_05Adverb","_06Value","list$2","_07Verbs","list$1","_08Place","_09Org","months","_10People","allLists","lists","newM","enumerated","required","matches_1","hasEvery","chances","runner","allChances","worthIt","tryDoc","runner_1","corrections","_04Correction","_02Tagger","addMethod$a","addMethod","Doc","Abbreviations","_Doc","_super","stripPeriods","addPeriods","addMethod$9","Acronyms","addMethod$8","commas","conjunctions","condition","tooLong","Clauses","addMethod$7","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","addMethod$6","beforeLast","conjunction","hasOxford","Lists","items","hasOxfordComma","addOxfordComma","needsComma","removeOxfordComma","nounList","adjList","verbList","noPlural","hasPlural","hasPlural_1","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","getArticle","isPlural$2","_rules","endS","isPlural$1","isPlural_1$1","exceptions","he","she","they","we","toPossessive","toPossessive_1","parse$1","parse_1","methods$2","article","agree","an","adj","methods_1","addMethod$5","Nouns","keep_anaphora","open","close","addMethod$4","Parentheses","addMethod$3","Possessives","pairs","hasOpen","addMethod$2","Quotations","want","verb","toInfinitive_1","findNoun","vb","auxiliary","isPlural_1","toNegative","_inf","_inf2","toNegative_1","getSubject","behind","lastNoun","getSubject_1","parseVerb","adverb","particle","subject","adverbAfter","toBe","isI","isNegative","toBe_1","doModal","doModal_1","og","past","_infinitive","infinitive","space","conjugate_1","useParticiple$1","useParticiple","toParticiple","participle","_toParticiple","makeNeutral","methods$1","advb","toPastTense","toPresentTense","_this6","toFutureTense","_this7","_this8","toGerund","_this9","_this10","noAux","isPositive","isImperative","_this11","toPositive","addMethod$1","Verbs","negate","gerund","People","subclass","extend","addFn","Subset","methods","selections","aliases","untag","and","onlyIf","Doc_1","smallTagger","tiny","worldInstance","nlp","parseMatch","version","load","plugin","src","fromTemplate","tmpl","template","description","preProcess","findPivot","byClause","safeCuts","isIndependent","hardCuts","second","pop","lastTry","isGood","doSentence","pivot","safeCut","hardCut","like","dislike","require$$0","hasYear","fromCategory","cats","categories","cat","aWords","bWords","changeCat","byCategory","chooseCat","change","category","seemsGood","models","summary","fromSentence","copula"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/summary/builds/wtf-plugin-summary.min.js b/plugins/summary/builds/wtf-plugin-summary.min.js index 22412bfe..5202907d 100644 --- a/plugins/summary/builds/wtf-plugin-summary.min.js +++ b/plugins/summary/builds/wtf-plugin-summary.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfSummary=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;rr?n:r)+1;if(Math.abs(r-n)>(a||100))return a||100;for(var i,o,s,u,l,c,h=[],d=0;d4)return r;u=o===(s=t[i-1])?0:1,l=h[p-1][i]+1,(c=h[p][i-1]+1)1&&i>1&&o===t[i-2]&&e[p-2]===s&&(c=h[p-2][i-2]+u)2&&void 0!==arguments[2]?arguments[2]:3;if(e===t)return 1;if(e.lengtht.fuzzy)return!0;if(!0===t.soft&&(a=B(t.word,e.root))>t.fuzzy)return!0}return t.word===e.clean||t.word===e.text||t.word===e.reduced}return void 0!==t.tag?!0===e.tags[t.tag]:void 0!==t.method?"function"==typeof e[t.method]&&!0===e[t.method]():void 0!==t.regex?t.regex.test(e.clean):void 0!==t.fastOr?!(!e.implicit||!0!==t.fastOr.hasOwnProperty(e.implicit))||(t.fastOr.hasOwnProperty(e.reduced)||t.fastOr.hasOwnProperty(e.text)):void 0!==t.choices&&("and"===t.operator?t.choices.every((function(t){return O(e,t,r,n)})):t.choices.some((function(t){return O(e,t,r,n)})))},G=O=function(e,t,r,n){var a=z(e,t,r,n);return!0===t.negative?!a:a},T={},V={doesMatch:function(e,t,r){return G(this,e,t,r)},isAcronym:function(){return b(this.text)},isImplicit:function(){return""===this.text&&Boolean(this.implicit)},isKnown:function(){return Object.keys(this.tags).some((function(e){return!0!==T[e]}))},setRoot:function(e){var t=e.transforms,r=this.implicit||this.clean;if(this.tags.Plural&&(r=t.toSingular(r,e)),this.tags.Verb&&!this.tags.Negative&&!this.tags.Infinitive){var n=null;this.tags.PastTense?n="PastTense":this.tags.Gerund?n="Gerund":this.tags.PresentTense?n="PresentTense":this.tags.Participle?n="Participle":this.tags.Actor&&(n="Actor"),r=t.toInfinitive(r,e,n)}this.root=r}},J=/[\s-]/,M=/^[A-Z-]+$/,L={textOut:function(e,t,r){e=e||{};var n=this.text,a=this.pre,i=this.post;return!0===e.reduced&&(n=this.reduced||""),!0===e.root&&(n=this.root||""),!0===e.implicit&&this.implicit&&(n=this.implicit||""),!0===e.normal&&(n=this.clean||this.text||""),!0===e.root&&(n=this.root||this.reduced||""),!0===e.unicode&&(n=g(n)),!0===e.titlecase&&(this.tags.ProperNoun&&!this.titleCase()||(this.tags.Acronym?n=n.toUpperCase():M.test(n)&&!this.tags.Acronym&&(n=n.toLowerCase()))),!0===e.lowercase&&(n=n.toLowerCase()),!0===e.acronyms&&this.tags.Acronym&&(n=n.replace(/\./g,"")),!0!==e.whitespace&&!0!==e.root||(a="",i=" ",!1!==J.test(this.post)&&!e.last||this.implicit||(i="")),!0!==e.punctuation||e.root||(!0===this.hasPost(".")?i="."+i:!0===this.hasPost("?")?i="?"+i:!0===this.hasPost("!")?i="!"+i:!0===this.hasPost(",")?i=","+i:!0===this.hasEllipses()&&(i="..."+i)),!0!==t&&(a=""),!0!==r&&(i=""),!0===e.abbreviations&&this.tags.Abbreviation&&(i=i.replace(/^\./,"")),a+n+i}},S={Auxiliary:1,Possessive:1},_=function(e,t){var r=Object.keys(e.tags),n=t.tags;return r=r.sort((function(e,t){return S[t]||!n[t]?-1:n[t]?n[e]?n[e].lineage.length>n[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1}))},K={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},q={json:function(e,t){e=e||{};var r={};return(e=Object.assign({},K,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.clean),e.tags&&(r.tags=Object.keys(this.tags)),e.clean&&(r.clean=this.clean),(e.id||e.offset)&&(r.id=this.id),e.implicit&&null!==this.implicit&&(r.implicit=this.implicit),e.whitespace&&(r.pre=this.pre,r.post=this.post),e.bestTag&&(r.bestTag=_(this,t)[0]),r}},R=Object.assign({},I,C,V,L,q);function W(){return"undefined"!=typeof window&&window.document}var U=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),r=String(r);var n=N(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=c(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(e,[{key:"set",value:function(e){var t=N(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();oe.prototype.clone=function(){var e=new oe(this.text);return e.pre=this.pre,e.post=this.post,e.clean=this.clean,e.reduced=this.reduced,e.root=this.root,e.implicit=this.implicit,e.tags=Object.assign({},this.tags),e},Object.assign(oe.prototype,R),Object.assign(oe.prototype,ie);var se=oe,ue={terms:function(e){if(0===this.length)return[];if(this.cache.terms)return void 0!==e?this.cache.terms[e]:this.cache.terms;for(var t=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,normal:!0}:"reduced"===e?{punctuation:!1,titlecase:!1,lowercase:!0,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"implicit"===e?{punctuation:!0,implicit:!0,whitespace:!0,trim:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),a=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(a=!0);var i=n.reduce((function(i,o,s){if(0===s&&""===o.text&&null!==o.implicit&&!e.implicit)return i;e.last=r&&s===n.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===n.length-1&&r&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&r&&(i=le(i)),!0===e.trim&&(i=i.trim()),i}},he={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},de=/[.?!]\s*$/,ge=function(e,t){t[0].pre=e[0].pre;var r,n,a=e[e.length-1],i=t[t.length-1];i.post=(r=a.post,n=i.post,de.test(n)?n+r.match(/\s*$/):r),a.post="",""===a.post&&(a.post+=" ")},pe=function(e,t,r){var n=e.terms(),a=t.terms();ge(n,a),function(e,t,r){var n=e[e.length-1],a=t[t.length-1],i=n.next;n.next=t[0].id,a.next=i,i&&(r.get(i).prev=a.id);var o=e[0].id;o&&(t[0].prev=o)}(n,a,e.pool);var i=[e],o=e.start,s=[r];return(s=s.concat(r.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length})),e.cache={},e},me=/ /,fe=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===me.test(t.post)&&(t.post+=" ")}(a),function(e,t,r){var n=r[r.length-1];n.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start),r[0].prev=e.terms(0).prev,e.terms(0).prev=n.id}(e,t,a);var i=[e],o=[r];return(o=o.concat(r.parents())).forEach((function(e){var r=e.list.filter((function(e){return e.hasId(n)||e.hasId(t.start)}));i=i.concat(r)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length,e.start===n&&(e.start=t.start),e.cache={}})),e},ve=function(e,t){var r=t.pool(),n=e.terms(),a=r.get(n[0].prev)||{},i=r.get(n[n.length-1].next)||{};n[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,r,n){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=r,a.start===t&&(a.start=n.id),a.cache={})})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},be={append:function(e,t){return pe(this,e,t),this},prepend:function(e,t){return fe(this,e,t),this},delete:function(e){return ve(this,e),this},replace:function(e,t){var r=this.length;pe(this,e,t);var n=this.buildFrom(this.start,this.length);n.length=r,ve(n,t)},splitOn:function(e){var t=this.terms(),r={before:null,match:null,after:null},n=t.findIndex((function(t){return t.id===e.start}));if(-1===n)return r;var a=t.slice(0,n);a.length>0&&(r.before=this.buildFrom(a[0].id,a.length));var i=t.slice(n,n+e.length);i.length>0&&(r.match=this.buildFrom(i[0].id,i.length));var o=t.slice(n+e.length,t.length);return o.length>0&&(r.after=this.buildFrom(o[0].id,o.length,this.pool)),r}},ye={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={};return e.text&&(r.text=this.text()),e.normal&&(r.normal=this.text("normal")),e.clean&&(r.clean=this.text("clean")),e.reduced&&(r.reduced=this.text("reduced")),e.implicit&&(r.implicit=this.text("implicit")),e.root&&(r.root=this.text("root")),e.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),r.terms=this.terms().map((function(r){return r.json(e.terms,t)}))),r}},we={lookAhead:function(e){e||(e=".*");var t=this.pool,r=[],n=this.terms();return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,r=[];return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(e)}},ke=Object.assign({},ue,ce,he,be,ye,we),Ae=function(e,t){if(0===t.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},De=x((function(e,t){t.getGreedy=function(e,t){for(var r=Object.assign({},e.regs[e.r],{start:!1,end:!1}),n=e.t;e.t1&&void 0!==arguments[1]?arguments[1]:0,n=e.regs[e.r],a=!1,i=0;it&&(t=r.length),n}))&&t},t.getGroup=function(e,t,r){if(e.groups[e.groupId])return e.groups[e.groupId];var n=e.terms[t].id;return e.groups[e.groupId]={group:String(r),start:n,length:0},e.groups[e.groupId]}})),$e=function(e,t,r,n){for(var a={t:0,terms:e,r:0,regs:t,groups:{},start_i:r,phrase_length:n,hasGroup:!1,groupId:null,previousGroup:null};a.ra.t)return null;if(!0===i.end&&a.start_i+a.t!==n)return null}if(!0===a.hasGroup){var m=De.getGroup(a,d,i.named);a.t>1&&i.greedy?m.length+=a.t-d:m.length++}}else{if(i.negative){var f=Object.assign({},i);if(f.negative=!1,!0===a.terms[a.t].doesMatch(f,a.start_i+a.t,a.phrase_length))return null}if(!0!==i.optional){if(a.terms[a.t].isImplicit()&&t[a.r-1]&&a.terms[a.t+1]){if(a.terms[a.t-1]&&a.terms[a.t-1].implicit===t[a.r-1].word)return null;if(a.terms[a.t+1].doesMatch(i,a.start_i+a.t,a.phrase_length)){a.t+=2;continue}}return null}}}else{var v=De.greedyTo(a,t[a.r+1]);if(void 0!==i.min&&v-a.ti.max){a.t=a.t+i.max;continue}if(null===v)return null;!0===a.hasGroup&&(De.getGroup(a,a.t,i.named).length=v-a.t),a.t=v}}return{match:a.terms.slice(0,a.t),groups:a.groups}},Pe=function(e,t,r){if(!r||0===r.length)return r;if(t.some((function(e){return e.end}))){var n=e[e.length-1];r=r.filter((function(e){return-1!==e.match.indexOf(n)}))}return r},je=/(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/,He=/([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/,Ee=/ /g,Ne=function(e){return/^[\!\[\^]*(<[^<]*>)?\//.test(e)&&/\/[\?\]\+\*\$~]*$/.test(e)},xe=function(e){return e=(e=e.map((function(e){return e.trim()}))).filter((function(e){return e}))},Ie=function(e){var t=e.split(je),r=[];t.forEach((function(e){Ne(e)?r.push(e):r=r.concat(e.split(He))})),r=xe(r);var n=[];return r.forEach((function(e){!function(e){return/^[\!\[\^]*(<[^<]*>)?\(/.test(e)&&/\)[\?\]\+\*\$~]*$/.test(e)}(e)?Ne(e)?n.push(e):n=n.concat(e.split(Ee)):n.push(e)})),n=xe(n)},Ce=/\{([0-9]+,?[0-9]*)\}/,Fe=/&&/,Be=new RegExp(/^<\s*?(\S+)\s*?>/),Oe=function(e){return e[e.length-1]},ze=function(e){return e[0]},Ge=function(e){return e.substr(1)},Te=function(e){return e.substr(0,e.length-1)},Ve=function(e){return e=Ge(e),e=Te(e)},Je=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===Oe(t)&&(n.end=!0,t=Te(t)),"^"===ze(t)&&(n.start=!0,t=Ge(t)),("["===ze(t)||"]"===Oe(t))&&(n.named=!0,"["===ze(t)?n.groupType="]"===Oe(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===ze(t))){var i=Be.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===Oe(t)&&(n.greedy=!0,t=Te(t)),"*"!==t&&"*"===Oe(t)&&"\\*"!==t&&(n.greedy=!0,t=Te(t)),"?"===Oe(t)&&(n.optional=!0,t=Te(t)),"!"===ze(t)&&(n.negative=!0,t=Ge(t)),"("===ze(t)&&")"===Oe(t)){Fe.test(t)?(n.choices=t.split(Fe),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=Ge(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Te(n.choices[o]),n.choices=n.choices.map((function(e){return e.trim()})),n.choices=n.choices.filter((function(e){return e})),n.choices=n.choices.map((function(t){return t.split(/ /g).map(e)})),t=""}if("/"===ze(t)&&"/"===Oe(t))return t=Ve(t),n.regex=new RegExp(t),n;if("~"===ze(t)&&"~"===Oe(t))return t=Ve(t),n.soft=!0,n.word=t,n}return!0===Ce.test(t)&&(t=t.replace(Ce,(function(e,t){var r=t.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,n.optional=!0,""}))),"#"===ze(t)?(n.tag=Ge(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===ze(t)?(n.method=Ge(t),n):"."===t?(n.anything=!0,n):"*"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace("\\*","*")).replace("\\.","."),n.word=t.toLowerCase()),n)},Me=function(e){for(var t,r=!1,n=-1,a=0;a1&&void 0!==arguments[1]?arguments[1]:{},r=e.filter((function(e){return e.groupType})).length;return r>0&&(e=Me(e)),t.fuzzy||(e=Le(e)),e},_e=function(e){return"[object Array]"===Object.prototype.toString.call(e)},Ke=function(e){return[{choices:e.map((function(e){return[{word:e}]})),operator:"or"}]},qe=function(e){if(!e||!e.list||!e.list[0])return[];var t=[];return e.list.forEach((function(e){var r=[];e.terms().forEach((function(e){r.push(e.id)})),t.push(r)})),[{idBlocks:t}]},Re=function(e,t){return!0===t.fuzzy&&(t.fuzzy=.85),"number"==typeof t.fuzzy&&(e=e.map((function(e){return t.fuzzy>0&&e.word&&(e.fuzzy=t.fuzzy),e.choices&&e.choices.forEach((function(e){e.forEach((function(e){e.fuzzy=t.fuzzy}))})),e}))),e},We=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||""===t)return[];if("object"===e(t)){if(_e(t)){if(0===t.length||!t[0])return[];if("object"===e(t[0]))return t;if("string"==typeof t[0])return Ke(t)}return t&&"Doc"===t.isA?qe(t):[]}"number"==typeof t&&(t=String(t));var n=Ie(t);return n=n.map((function(e){return Je(e)})),n=Se(n,r),n=Re(n,r)},Ue=function(e,t){for(var r=[],n=t[0].idBlocks,a=function(t){n.forEach((function(n){0!==n.length?n.every((function(r,n){return i=t,e[t+n].id===r}))&&(r.push({match:e.slice(t,t+n.length)}),t+=n.length-1):i=t})),i=t},i=0;i2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=We(t)),!0===Ae(e,t))return[];var n=t.filter((function(e){return!0!==e.optional&&!0!==e.negative})).length,a=e.terms(),i=[];if(t[0].idBlocks){var o=Ue(a,t);if(o&&o.length>0)return Pe(a,t,o)}if(!0===t[0].start){var s=$e(a,t,0,a.length);return s&&s.match&&s.match.length>0&&(s.match=s.match.filter((function(e){return e})),i.push(s)),Pe(a,t,i)}for(var u=0;ua.length);u+=1){var l=$e(a.slice(u),t,u,a.length);if(l&&l.match&&l.match.length>0&&(u+=l.match.length-1,l.match=l.match.filter((function(e){return e})),i.push(l),!0===r))return Pe(a,t,i)}return Pe(a,t,i)},Ze=function(e,t){var r={};Qe(e,t).forEach((function(e){e.match.forEach((function(e){r[e.id]=!0}))}));var n=e.terms(),a=[],i=[];return n.forEach((function(e){!0!==r[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Xe={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Qe(this,e,r);return n=n.map((function(e){var r=e.match,n=e.groups,a=t.buildFrom(r[0].id,r.length,n);return a.cache.terms=r,a}))},has:function(e){return Qe(this,e,!0).length>0},not:function(e){var t=this,r=Ze(this,e);return r=r.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var r=this,n=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return r.buildFrom(e[0].id,e.length)}))}},Ye=function e(r,n,a){t(this,e),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Ye.prototype.buildFrom=function(e,t,r){var n=new Ye(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Ye.prototype,Xe),Object.assign(Ye.prototype,ke);var et={term:"terms"};Object.keys(et).forEach((function(e){return Ye.prototype[e]=Ye.prototype[et[e]]}));var tt=Ye,rt=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();rt.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,r){var n=e.words[r].clone();return t[n.id]=n,t}),{});return new rt(t)};var nt=rt,at=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},it=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,ot=/\S/,st=/[ .][A-Z]\.? *$/i,ut=/(?:\u2026|\.{2,}) *$/,lt=/((?:\r?\n|\r)+)/,ct=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,ht=/^\s+/,dt=function(e,t){if(!0===st.test(e))return!1;if(!0===ut.test(e))return!1;if(!1===ct.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},gt=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===ot.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(lt),n=0;n0&&(n.push(l),a[u]="")}if(0===n.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&(0===t.length&&(t[0]=""),t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof e&&("number"==typeof e?e=String(e):At(e)&&(n=e)),n=(n=n||gt(e,t)).map((function(e){return kt(e)})),r=r||new nt;var a=n.map((function(e){e=e.map((function(e){var t=new se(e);return r.add(t),t})),at(e);var t=new tt(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},$t=function(e,t){var r=new nt;return e.map((function(e,n){var a=e.terms.map((function(a,i){var o=new se(a.text);return o.pre=void 0!==a.pre?a.pre:"",void 0===a.post&&(a.post=" ",i>=e.terms.length-1&&(a.post=". ",n>=e.terms.length-1&&(a.post="."))),o.post=void 0!==a.post?a.post:" ",a.tags&&a.tags.forEach((function(e){return o.tag(e,"",t)})),r.add(o),o}));return at(a),new tt(a[0].id,a.length,r)}))},Pt=["Person","Place","Organization"],jt={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:Pt},Actor:{isA:"Noun",notA:Pt},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:Pt},Demonym:{isA:["Noun","ProperNoun"],notA:Pt},Possessive:{isA:"Noun"}},Ht={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Imperative:{isA:"Infinitive"},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"PastTense"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"},Auxiliary:{notA:["Noun","Adjective","Value"]}},Et={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},Fraction:{isA:"Value",notA:["Noun"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},Nt=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],xt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Timezone:{isA:["Date","Noun"],notA:["Adjective","ProperNoun"]},Time:{isA:["Date"],notA:["AtMention"]},Determiner:{notA:Nt},Conjunction:{notA:Nt},Preposition:{notA:Nt},QuestionWord:{notA:["Determiner"]},Currency:{isA:["Noun"]},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},It={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Ct=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:It[t]?e[t].color=It[t]:e[t].isA.some((function(r){return!!It[r]&&(e[t].color=It[r],!0)}))})),e},Ft=function(e){return Object.keys(e).forEach((function(t){for(var r=e[t],n=r.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},St=function(e,t,r){var n=Lt(t);return n1&&(r.hasCompound[i[0]]=!0),void 0===Rt[a]?void 0!==t[n]?("string"==typeof t[n]&&(t[n]=[t[n]]),"string"==typeof a?t[n].push(a):t[n]=t[n].concat(a)):t[n]=a:Rt[a](t,n,r)}))},Ut=function(e){var t=Object.assign({},qt);return Object.keys(Vt).forEach((function(r){var n=Kt(Vt[r]);Object.keys(n).forEach((function(e){n[e]=r})),Wt(n,t,e)})),t},Qt=Wt,Zt=function(e){for(var t=e.irregulars.nouns,r=Object.keys(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===ar.hasOwnProperty(t))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(r=Object.assign({},t.irregulars.verbs[e])),void 0===(r=Object.assign({},sr(e),r)).Gerund&&(r.Gerund=lr.Gerund(e)),void 0===r.PastTense&&(r.PastTense=lr.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=lr.PresentTense(e)),r},hr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],dr=[/ary$/],gr={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},pr=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],mr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],fr=[/ary$/,/ous$/],vr={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},br=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],yr={toSuperlative:function(e){if(gr.hasOwnProperty(e))return gr[e];for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=t.irregulars.nouns;if(r.hasOwnProperty(e))return r[e];var n=Dr(e);return null!==n?n:Ar.test(e)?e+"es":e+"s"},Pr=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(eas)es$/i,"$1e"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],jr=function(e,t){var r,n=t.irregulars.nouns,a=(r=n,Object.keys(r).reduce((function(e,t){return e[r[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof t&&"number"!=typeof t&&null!==t||(t={group:t});var r=We(e,t);if(0===r.length)return this.buildFrom([]);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.reduce((function(e,t){return e.concat(t.match(r))}),[]);return void 0!==t.group&&null!==t.group&&""!==t.group?this.buildFrom(n).groups(t.group):this.buildFrom(n)},t.not=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(0===r.length||!1===Tr(this,r))return this;var n=this.list.reduce((function(e,t){return e.concat(t.not(r))}),[]);return this.buildFrom(n)},t.matchOne=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.filter((function(e){return!0===e.has(r)}));return this.buildFrom(n)},t.ifNo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.list.filter((function(e){return!1===e.has(r)}));return this.buildFrom(n)},t.has=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);return!1!==Tr(this,r)&&this.list.some((function(e){return!0===e.has(r)}))},t.lookAhead=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookAhead(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookAfter=t.lookAhead,t.lookBehind=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookBehind(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookBefore=t.lookBehind,t.before=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms().map((function(e){return e.id})),n=e.match(r)[0],a=t.indexOf(n.start);return 0===a||-1===a?null:e.buildFrom(e.start,a)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.after=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms(),n=t.map((function(e){return e.id})),a=e.match(r)[0],i=n.indexOf(a.start);if(-1===i||!t[i+a.length])return null;var o=t[i+a.length].id,s=e.length-i-a.length;return e.buildFrom(o,s)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.hasAfter=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookAfter(e,t).found}))},t.hasBefore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookBefore(e,t).found}))}})),Jr=function(e,t,r,n){var a=[];"string"==typeof e&&(a=e.split(" ")),t.list.forEach((function(i){var o=i.terms();!0===r&&(o=o.filter((function(r){return r.canBe(e,t.world)}))),o.forEach((function(r,i){a.length>1?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))},Mr={tag:function(e,t){return e?(Jr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(Jr(e,this,!0,t),this):this},unTag:function(e,t){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(e,t,r.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(e,t))}),[]);return this.buildFrom(r)}},Lr={map:function(t){var r=this;if(!t)return this;var n=this.list.map((function(e,n){var a=r.buildFrom([e]);a.from=null;var i=t(a,n);return i&&i.list&&i.list[0]?i.list[0]:i}));return 0===(n=n.filter((function(e){return e}))).length?this.buildFrom(n):"object"!==e(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(e,t){var r=this;return e?(this.list.forEach((function(n,a){var i=r.buildFrom([n]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var r=this.list.filter((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return this.buildFrom(r)},find:function(e){var t=this;if(!e)return this;var r=this.list.find((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return r?this.buildFrom([r]):void 0},some:function(e){var t=this;return e?this.list.some((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var r=[this.list[t]];return this.buildFrom(r)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},Sr=function(e){return e.split(/[ -]/g)},_r=function(e,t,r){for(var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return e.forEach((function(e,n){var a=!0;void 0!==t[n]&&(a=t[n]),e=(e=(e||"").toLowerCase()).replace(/[,;.!?]+$/,"");var i=Sr(e).map((function(e){return e.trim()}));r[i[0]]=r[i[0]]||{},1===i.length?r[i[0]].value=a:(r[i[0]].more=r[i[0]].more||[],r[i[0]].more.push({rest:i.slice(1),value:a}))})),r}(e,t),a=[],i=function(e){for(var t=r.list[e],i=t.terms().map((function(e){return e.reduced})),o=function(e){void 0!==n[i[e]]&&(void 0!==n[i[e]].more&&n[i[e]].more.forEach((function(r){void 0!==i[e+r.rest.length]&&(!0===r.rest.every((function(t,r){return t===i[e+r+1]}))&&a.push({id:t.terms()[e].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[i[e]].value&&a.push({id:t.terms()[e].id,value:n[i[e]].value,length:1}))},s=0;s1&&void 0!==arguments[1]?arguments[1]:{};return t?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(a){var i,o=t;if("function"==typeof t&&(o=t(a)),o&&"object"===e(o)&&"Doc"===o.isA)i=o.list,r.pool().merge(o.pool());else{if("string"!=typeof o)return;!1!==n.keepCase&&a.terms(0).isTitleCase()&&(o=Rr(o)),i=Dt(o,r.world,r.pool());var s=r.buildFrom(i);s.tagger(),i=s.list}if(!0===n.keepTags){var u=a.json({terms:{tags:!0}}).terms;i[0].terms().forEach((function(e,t){u[t]&&e.tagSafe(u[t].tags,"keptTag",r.world)}))}a.replace(i[0],r)})),this):this.delete()},replace:function(e,t,r){return void 0===t?this.replaceWith(e,r):(this.match(e).replaceWith(t,r),this)}},Ur=x((function(e,t){var r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)},n=function(e,t){var r=Dt(e,t.world)[0],n=t.buildFrom([r]);return n.tagger(),t.list=n.list,t};t.append=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(t)&&"Doc"===t.isA?a=t.list[0].clone():"string"==typeof t&&(a=Dt(t,e.world,e.pool())[0]),e.buildFrom([a]).tagger(),n.append(a,e)})),this):n(t,this):this},t.insertAfter=t.append,t.insertAt=t.append,t.prepend=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(e)&&"Doc"===e.isA?a=e.list[0].clone():"string"==typeof e&&(a=Dt(e,t.world,t.pool())[0]),t.buildFrom([a]).tagger(),n.prepend(a,t)})),this):n(e,this):this},t.insertBefore=t.prepend,t.concat=function(){this.uncache();for(var e=this.list.slice(0),t=0;t0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof t&&this.list[t])return this.list[t].json(r);!0===(t=n(t)).root&&this.list.forEach((function(t){t.terms().forEach((function(t){null===t.root&&t.setRoot(e.world)}))}));var a=this.list.map((function(r){return r.json(t,e.world)}));if((t.terms.offset||t.offset||t.terms.index||t.index)&&Xr(this,a,t),t.frequency||t.freq||t.count){var i={};this.list.forEach((function(e){var t=e.text("reduced");i[t]=i[t]||0,i[t]+=1})),this.list.forEach((function(e,t){a[t].count=i[e.text("reduced")]}))}if(t.unique){var o={};a=a.filter((function(e){return!0!==o[e.reduced]&&(o[e.reduced]=!0,!0)}))}return a},t.data=t.json})),en=x((function(e){var t="",r=function(e,t){for(e=e.toString();e.lengtht.count?-1:e.countn?1:0},length:function(e,t){var r=e.text().trim().length,n=t.text().trim().length;return rn?-1:0},wordCount:function(e,t){var r=e.wordCount(),n=t.wordCount();return rn?-1:0}};nn.alphabetical=nn.alpha,nn.wordcount=nn.wordCount;var an={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},on={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(n);r[t]=r[t]||0,r[t]+=1})),t.list.sort((function(e,t){var a=r[e.text(n)],i=r[t.text(n)];return ai?-1:0})),t):an.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,r){return t[e.start]>t[r.start]?1:t[e.start]0){a+=o;continue}}if(void 0===r[i]||!0!==r.hasOwnProperty(i))if(i===e[a].reduced||!0!==r.hasOwnProperty(e[a].reduced)){if(!0===$n.test(i)){var s=i.replace($n,"");!0===r.hasOwnProperty(s)&&e[a].tag(r[s],"noprefix-lexicon",t)}}else e[a].tag(r[e[a].reduced],"lexicon",t);else e[a].tag(r[i],"lexicon",t)}return e},Hn=/[\'‘’‛‵′`´]$/,En=/^(m|k|cm|km|m)\/(s|h|hr)$/,Nn=[[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@1?[0-9](am|pm)$/i,"Time"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,"Time"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^'[0-9]{2}$/,"Year"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,"Date"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date"],[/^gmt[+-][0-9][0-9]?$/i,"Timezone"],[/^utc[+-][0-9][0-9]?$/i,"Timezone"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^woo+a*?h?$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/,["Money","Value"]],[/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/,["Ordinal","NumericValue"]],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"]],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/,["Fraction","NumericValue"]],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,["Value","NumberRange"]],[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/,["Time","NumberRange"]],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],xn=/^[IVXLCDM]{2,}$/,In=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Cn="Adjective",Fn="Infinitive",Bn="PresentTense",On="Singular",zn="PastTense",Gn="Adverb",Tn="Expression",Vn="Actor",Jn="Verb",Mn="Noun",Ln="LastName",Sn={a:[[/.[aeiou]na$/,Mn],[/.[oau][wvl]ska$/,Ln],[/.[^aeiou]ica$/,On],[/^([hyj]a)+$/,Tn]],c:[[/.[^aeiou]ic$/,Cn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,zn],[/.[aeo]{2}[bdgmnprvz]ed$/,zn],[/.[aeiou][sg]hed$/,zn],[/.[aeiou]red$/,zn],[/.[aeiou]r?ried$/,zn],[/.[bcdgtr]led$/,zn],[/.[aoui]f?led$/,zn],[/.[iao]sed$/,zn],[/[aeiou]n?[cs]ed$/,zn],[/[aeiou][rl]?[mnf]ed$/,zn],[/[aeiou][ns]?c?ked$/,zn],[/[aeiou][nl]?ged$/,zn],[/.[tdbwxz]ed$/,zn],[/[^aeiou][aeiou][tvx]ed$/,zn],[/.[cdlmnprstv]ied$/,zn],[/[^aeiou]ard$/,On],[/[aeiou][^aeiou]id$/,Cn],[/.[vrl]id$/,Cn]],e:[[/.[lnr]ize$/,Fn],[/.[^aeiou]ise$/,Fn],[/.[aeiou]te$/,Fn],[/.[^aeiou][ai]ble$/,Cn],[/.[^aeiou]eable$/,Cn],[/.[ts]ive$/,Cn]],h:[[/.[^aeiouf]ish$/,Cn],[/.v[iy]ch$/,Ln],[/^ug?h+$/,Tn],[/^uh[ -]?oh$/,Tn]],i:[[/.[oau][wvl]ski$/,Ln]],k:[[/^(k){2}$/,Tn]],l:[[/.[gl]ial$/,Cn],[/.[^aeiou]ful$/,Cn],[/.[nrtumcd]al$/,Cn],[/.[^aeiou][ei]al$/,Cn]],m:[[/.[^aeiou]ium$/,On],[/[^aeiou]ism$/,On],[/^h*u*m+$/,Tn],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Cn],[/[^aeiou]ician$/,Vn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,Tn],[/^(yo)+$/,Tn],[/^woo+[pt]?$/,Tn]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,On],[/[^i]fer$/,Fn],[/.[^aeiou][ao]pher$/,Vn],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Cn],[/[aeiou].*ist$/,Cn],[/^[a-z]et$/,Jn]],s:[[/.[^aeiou]ises$/,Bn],[/.[rln]ates$/,Bn],[/.[^z]ens$/,Jn],[/.[lstrn]us$/,On],[/.[aeiou]sks$/,Bn],[/.[aeiou]kes$/,Bn],[/[aeiou][^aeiou]is$/,On],[/[a-z]\'s$/,Mn],[/^yes+$/,Tn]],v:[[/.[^aeiou][ai][kln]ov$/,Ln]],y:[[/.[cts]hy$/,Cn],[/.[st]ty$/,Cn],[/.[gk]y$/,Cn],[/.[tnl]ary$/,Cn],[/.[oe]ry$/,On],[/[rdntkbhs]ly$/,Gn],[/...lly$/,Gn],[/[bszmp]{2}y$/,Cn],[/.(gg|bb|zz)ly$/,Cn],[/.[ai]my$/,Cn],[/[ea]{2}zy$/,Cn],[/.[^aeiou]ity$/,On]]},_n="Adjective",Kn="Infinitive",qn="PresentTense",Rn="Singular",Wn="PastTense",Un="Adverb",Qn="Plural",Zn="Actor",Xn="Verb",Yn="Noun",ea="LastName",ta="Modal",ra=[null,null,{ea:Rn,ia:Yn,ic:_n,ly:Un,"'n":Xn,"'t":Xn},{oed:Wn,ued:Wn,xed:Wn," so":Un,"'ll":ta,"'re":"Copula",azy:_n,eer:Yn,end:Xn,ped:Wn,ffy:_n,ify:Kn,ing:"Gerund",ize:Kn,lar:_n,mum:_n,nes:qn,nny:_n,oid:_n,ous:_n,que:_n,rol:Rn,sis:Rn,zes:qn},{amed:Wn,aped:Wn,ched:Wn,lked:Wn,nded:Wn,cted:Wn,dged:Wn,akis:ea,cede:Kn,chuk:ea,czyk:ea,ects:qn,ends:Xn,enko:ea,ette:Rn,fies:qn,fore:Un,gate:Kn,gone:_n,ices:Qn,ints:Qn,ines:Qn,ions:Qn,less:Un,llen:_n,made:_n,nsen:ea,oses:qn,ould:ta,some:_n,sson:ea,tage:Kn,teen:"Value",tion:Rn,tive:_n,tors:Yn,vice:Rn},{tized:Wn,urned:Wn,eased:Wn,ances:Qn,bound:_n,ettes:Qn,fully:Un,ishes:qn,ities:Qn,marek:ea,nssen:ea,ology:Yn,ports:Qn,rough:_n,tches:qn,tieth:"Ordinal",tures:Qn,wards:Un,where:Un},{auskas:ea,keeper:Zn,logist:Zn,teenth:"Value"},{opoulos:ea,borough:"Place",sdottir:ea}],na={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"2){var a=n.clean[n.clean.length-2];if("s"===a)return void n.tag(["Possessive","Noun"],"end-tick",r);"n"===a&&n.tag(["Gerund"],"chillin",r)}En.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&xn.test(r)&&In.test(r)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var r=e.clean.length,n=7;r<=n&&(n=r-1);for(var a=n;a>1;a-=1){var i=e.clean.substr(r-a,r);if(!0===ra[i.length].hasOwnProperty(i)){var o=ra[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var r=e.clean,n=r[r.length-1];if(!0===Sn.hasOwnProperty(n))for(var a=Sn[n],i=0;i35)}(n=(n=n.trim()).replace(/[.!?,]$/,""))&&(e.tag("Emoji","comma-emoji",t),e.text=n,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(aa)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),na.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},oa=function(e,t){var r=e.world;ia.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},va={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},ba=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],ya=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],wa=[/i$/,/ae$/],ka=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var r=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(r.length<=3)return void e.tag("Singular","short-singular",t);if(ba.find((function(t){return e.tags[t]})))return;if(va.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(va.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(ya.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(wa.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},Aa=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),Da=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},$a=/^[A-Z]('s|,)?$/,Pa=/([A-Z]\.){2}[A-Z]?/i,ja={I:!0,A:!0},Ha={neighbours:ca,case:ga,stem:fa,plural:ka,organizations:function(e,t){for(var r=0;r5)&&e.isAcronym()}(e,t)?(e.tag("Acronym","acronym-step",t),e.tag("Noun","acronym-infer",t)):!ja.hasOwnProperty(e.text)&&$a.test(e.text)&&(e.tag("Acronym","one-letter-acronym",t),e.tag("Noun","one-letter-infer",t)),e.tags.Organization&&e.text.length<=3&&e.tag("Acronym","acronym-org",t),e.tags.Organization&&e.isUpperCase()&&e.text.length<=6&&e.tag("Acronym","acronym-org-case",t))}))}},Ea=function(e,t){var r=e.world;return Ha.neighbours(t,r),Ha.case(e),Ha.stem(t,r),t.forEach((function(t){!1===t.isKnown()&&t.tag("Noun","noun-fallback",e.world)})),Ha.organizations(t,r),Ha.acronyms(t,r),t.forEach((function(t){Ha.plural(t,e.world)})),e},Na=/n't$/,xa={"won't":["will","not"],wont:["will","not"],"can't":["can","not"],cant:["can","not"],cannot:["can","not"],"shan't":["should","not"],dont:["do","not"],dun:["do","not"]},Ia=function(e,t){return!0===xa.hasOwnProperty(e.clean)?xa[e.clean]:"ain't"===e.clean||"aint"===e.clean?function(e,t){var r=t.terms(),n=r.indexOf(e),a=r.slice(0,n).find((function(e){return e.tags.Noun}));return a&&a.tags.Plural?["are","not"]:["is","not"]}(e,t):!0===Na.test(e.clean)?[e.clean.replace(Na,""),"not"]:null},Ca=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i,Fa={ll:"will",ve:"have",re:"are",m:"am","n't":"not"},Ba=function(e){var t=e.text.match(Ca);return null===t?null:Fa.hasOwnProperty(t[2])?[t[1],Fa[t[2]]]:null},Oa={wanna:["want","to"],gonna:["going","to"],im:["i","am"],alot:["a","lot"],ive:["i","have"],imma:["I","will"],"where'd":["where","did"],whered:["where","did"],"when'd":["when","did"],whend:["when","did"],howd:["how","did"],whatd:["what","did"],dunno:["do","not","know"],brb:["be","right","back"],gtg:["got","to","go"],irl:["in","real","life"],tbh:["to","be","honest"],imo:["in","my","opinion"],til:["today","i","learned"],rn:["right","now"],twas:["it","was"],"@":["at"]},za=function(e){return Oa.hasOwnProperty(e.clean)?Oa[e.clean]:null},Ga=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i,Ta={that:!0,there:!0},Va={here:!0,there:!0,everywhere:!0},Ja=function(e,t,r){var n=e.text.match(Ga);if(null!==n){if(!0===function(e,t){if(e.tags.Possessive)return!0;if(e.tags.Pronoun||e.tags.QuestionWord)return!1;if(Ta.hasOwnProperty(e.reduced))return!1;var r=t.get(e.next);if(!r)return!0;if(r.tags.Verb)return!!r.tags.Infinitive||!!r.tags.PresentTense;if(r.tags.Noun)return!0!==Va.hasOwnProperty(r.reduced);var n=t.get(r.next);return!(!n||!n.tags.Noun||n.tags.Pronoun)||(r.tags.Adjective||r.tags.Adverb||r.tags.Verb,!1)}(e,t.pool))return e.tag("#Possessive","isPossessive",r),null;if(null!==n)return function(e,t){var r=t.terms(),n=r.indexOf(e);return r.slice(n+1,n+3).find((function(e){return e.tags.PastTense}))}(e,t)?[n[1],"has"]:[n[1],"is"]}return null},Ma=/[a-z\u00C0-\u00FF]'d$/,La={how:!0,what:!0},Sa=function(e,t){if(Ma.test(e.clean)){for(var r=e.clean.replace(/'d$/,""),n=t.terms(),a=n.indexOf(e),i=n.slice(a+1,a+4),o=0;o0?wi=wi.concat(t):wi.push(e)})),wi.forEach((function(e){var t,r,n;return e.required=(t=e.reg,r=[],n=[],t.forEach((function(e){!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&r.push(e.tag),void 0!==e.word&&n.push(e.word))})),{tags:ni(r),words:ni(n)}),e}));var ki=wi,Ai=function(e){ki.forEach((function(t){var r=[];t.required.words.forEach((function(t){r.push(e._cache.words[t]||[])})),t.required.tags.forEach((function(t){r.push(e._cache.tags[t]||[])}));var n=function(e){if(0===e.length)return[];var t={};e.forEach((function(e){e=ni(e);for(var r=0;r5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(l.eq(0))}return"number"==typeof t&&(n=n.get(t)),new e(n.list,this,this.world)},e},Ni=function(e){var r=function(e){a(i,e);var r=u(i);function i(e,n,a){var o;return t(this,i),(o=r.call(this,e,n,a)).contracted=null,o}return n(i,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),r=t[0].isTitleCase();t.forEach((function(e,r){e.set(e.implicit||e.text),e.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),a=this.not(n).splitAfter("@hasComma"),i=(a=a.concat(n)).quotations();return i.found&&(a=a.splitOn(i.eq(0))),a=a.match("#Noun+ (of|by)? the? #Noun+?"),!0!==t.keep_anaphora&&(a=(a=(a=(a=a.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),a=a.not("(of|for|by|the)$"),"number"==typeof e&&(a=a.get(e)),new r(a.list,this,this.world)},e},_i=/\(/,Ki=/\)/,qi=function(e){var r=function(e){a(i,e);var r=u(i);function i(){return t(this,i),r.apply(this,arguments)}return n(i,[{key:"unwrap",value:function(){return this.list.forEach((function(e){var t=e.terms(0);t.pre=t.pre.replace(_i,"");var r=e.lastTerm();r.post=r.post.replace(Ki,"")})),this}}]),i}(e);return e.prototype.parentheses=function(e){var t=[];return this.list.forEach((function(e){for(var r=e.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(e,[{key:"tagger",value:function(){return $i(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();ho.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new ho(e,this,this.world)},ho.prototype.fromText=function(e){var t=Dt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(ho.prototype,co.misc),Object.assign(ho.prototype,co.selections),lo(ho);var go={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(go).forEach((function(e){return ho.prototype[e]=ho.prototype[go[e]]}));var po=ho,mo=function(e){var t=e.termList();return jn(t,e.world),e.world.taggers.forEach((function(t){t(e)})),e};var fo=function e(t){var r=t,n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&r.addWords(t);var n=Dt(e,r),a=new po(n,null,r);return a.tagger(),a};return n.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=r;t&&((n=n.clone()).words={},n.addWords(t));var a=Dt(e,n),i=new po(a,null,n);return(t||i.world.taggers.length>0)&&mo(i),i},n.extend=function(e){return e(po,r,this,tt,se,nt),this},n.fromJSON=function(e){var t=$t(e,r);return new po(t,null,r)},n.clone=function(){return e(r.clone())},n.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(e),this},n.world=function(){return r},n.parseMatch=function(e,t){return We(e,t)},n.version="13.10.5",n.import=n.load,n.plugin=n.extend,n}(new Or);var vo=function(e){let t=e.template("short description");return t&&((r=t)&&"[object Object]"===Object.prototype.toString.call(r))&&t.description?t.description:null;var r};var bo=function(e){return e.parentheses().remove(),e};const yo=function(e){return e.remove("and #Copula .*"),e};var wo=function(e){let t=e.matchOne("#Copula+ (a|an|the|any|one) of?");if(t.found||(t=e.matchOne("#Copula+")),t.found||(t=e.matchOne("refers to (a|an|the|any)? of?")),t.found||(t=e.matchOne("(constitutes|describes) (a|an|the|any)? of?")),!t.found)return null;let r=e.splitOn(t),n=r.eq(1),a=n.match("(a|an|the|any)? of?");return n.remove("(a|an|the|any)? of?"),{before:r.eq(0),verb:r.eq(1),article:a,after:yo(r.eq(2))}};var ko=function(e){return e.remove("and (also|eventually) (a|an|the|#Possessive) .*"),e.remove("!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e};var Ao=function(e){return e.has("(#Place && @hasComma) #Country+$")&&e.remove("#Country+$"),e.has("#Noun (that|which|who) #PresentTense the .*")&&e.remove(" that #PresentTense the .*"),e.has("#Noun #PastTense by the .*")&&e.remove("#PastTense by the .*"),e.remove("#Demonym"),e.remove("(professional|former)"),e.remove("and? held annually .*"),e.remove("taking place each .*"),e.remove("^one of (the|many|several|#Value)+"),e.remove("^(a|an|the)? #Ordinal? #Superlative"),e.remove("^(a|an|the)? #Ordinal? most #Adjective"),e.remove("born in .*"),e.remove("born #Date+ in? #Place+?"),e.remove("(first|initially|originally)? (located|founded|started|based|formed) in .*"),e.remove("(which|who|that) (is|was) .*"),e.remove("^the name of"),e};const Do=function(e){return!!e.has("^(and|the|which|who|whom|also|a|an|the)")||(!!e.has("^(west|north|south|east|part) of")||(!!e.has("^#PastTense by .")||(!!e.has("^(occasionally|sometimes|frequently)")||(!!e.has("^such as")||!!e.has("^(including|featuring|depicting)")))))};var $o=function(e){e.has("#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$")?e.remove("(located|based) in #Place+$"):e.has("(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$")?e.remove("(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$"):e.has("(#Noun|#Value) in #Place+$")?e.remove("in #Place+$"):(e.remove("and? part of #Place+$"),e.remove("and? near #Place+$"));let t=e.clauses();if(t.length>1){let r=t.eq(0),n=t.eq(1);if(Do(n))e=t.eq(0);else if(n.has("^(#PastTense)")&&r.has("(#Noun|#Value)$"))e=t.eq(0);else if(n.has("^(#Gerund)")&&r.has("#Noun$"))e=t.eq(0);else{let r=t.last();Do(r)&&(t.list.pop(),e=t.join())}}return e.has("(#Noun|and) #PastTense by")&&e.remove("#PastTense by .*"),e.remove("and? designed to .*"),e.remove("and? owned by .*"),e.remove("and? consisting of .*"),e.has("@hasComma (which|who) #Verb")&&e.remove("(which|who) .*"),e};var Po=function(e){return e.remove("(small|large|minor|major)"),e.remove("(extinct|retired|annual|biweekly|monthly|daily)"),e.remove("(female|male)"),e.remove("(private|independent|official|unofficial|officially)"),e.remove("(southern|northern|eastern|western|northeastern|northwestern)"),e.remove("^(family|clade|genus|species|order) of"),e};var jo=function(e,t){if(e&&"function"==typeof e.text){let r=e.text();if(r&&r.length>t.min&&r.lengthnew RegExp(`\\b${e}\\b`,"i")));var Co={good:["male","female"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),bad:Io,like:["male","female","century"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),dislike:["people","place","from","in","people from"].map((e=>new RegExp(`\\b${e}\\b`)),"i")};const{like:Fo,dislike:Bo,good:Oo,bad:zo}=Co,Go=/[0-9]{4}/,To=/s$/;var Vo=function(e){let t=e.categories(),r=t.filter((e=>Oo.find((t=>t.test(e)))));return r.length>0&&(t=r),t=t.filter((e=>!zo.find((t=>t.test(e)))&&!Go.test(e))),0===t.length?"":(r=t.filter((e=>Fo.find((t=>t.test(e))))),r.length>0&&(t=r),r=t.filter((e=>!1!==To.test(e)&&(1!==e.slice(" ").length&&void 0===Bo.find((t=>t.test(e)))))),r.length>0&&(t=r),t=t.sort(((e,t)=>{let r=e.split(" ").length,n=t.split(" ").length;return r>n?-1:r5&&e.lengthr?n:r)+1;if(Math.abs(r-n)>(a||100))return a||100;for(var i,o,s,u,l,c,h=[],d=0;d4)return r;u=o===(s=t[i-1])?0:1,l=h[p-1][i]+1,(c=h[p][i-1]+1)1&&i>1&&o===t[i-2]&&e[p-2]===s&&(c=h[p-2][i-2]+u)2&&void 0!==arguments[2]?arguments[2]:3;if(e===t)return 1;if(e.lengtht.fuzzy)return!0;if(!0===t.soft&&(a=B(t.word,e.root))>t.fuzzy)return!0}return t.word===e.clean||t.word===e.text||t.word===e.reduced}return void 0!==t.tag?!0===e.tags[t.tag]:void 0!==t.method?"function"==typeof e[t.method]&&!0===e[t.method]():void 0!==t.regex?t.regex.test(e.clean):void 0!==t.fastOr?!(!e.implicit||!0!==t.fastOr.hasOwnProperty(e.implicit))||(t.fastOr.hasOwnProperty(e.reduced)||t.fastOr.hasOwnProperty(e.text)):void 0!==t.choices&&("and"===t.operator?t.choices.every((function(t){return O(e,t,r,n)})):t.choices.some((function(t){return O(e,t,r,n)})))},G=O=function(e,t,r,n){var a=z(e,t,r,n);return!0===t.negative?!a:a},T={},V={doesMatch:function(e,t,r){return G(this,e,t,r)},isAcronym:function(){return b(this.text)},isImplicit:function(){return""===this.text&&Boolean(this.implicit)},isKnown:function(){return Object.keys(this.tags).some((function(e){return!0!==T[e]}))},setRoot:function(e){var t=e.transforms,r=this.implicit||this.clean;if(this.tags.Plural&&(r=t.toSingular(r,e)),this.tags.Verb&&!this.tags.Negative&&!this.tags.Infinitive){var n=null;this.tags.PastTense?n="PastTense":this.tags.Gerund?n="Gerund":this.tags.PresentTense?n="PresentTense":this.tags.Participle?n="Participle":this.tags.Actor&&(n="Actor"),r=t.toInfinitive(r,e,n)}this.root=r}},J=/[\s-]/,M=/^[A-Z-]+$/,L={textOut:function(e,t,r){e=e||{};var n=this.text,a=this.pre,i=this.post;return!0===e.reduced&&(n=this.reduced||""),!0===e.root&&(n=this.root||""),!0===e.implicit&&this.implicit&&(n=this.implicit||""),!0===e.normal&&(n=this.clean||this.text||""),!0===e.root&&(n=this.root||this.reduced||""),!0===e.unicode&&(n=g(n)),!0===e.titlecase&&(this.tags.ProperNoun&&!this.titleCase()||(this.tags.Acronym?n=n.toUpperCase():M.test(n)&&!this.tags.Acronym&&(n=n.toLowerCase()))),!0===e.lowercase&&(n=n.toLowerCase()),!0===e.acronyms&&this.tags.Acronym&&(n=n.replace(/\./g,"")),!0!==e.whitespace&&!0!==e.root||(a="",i=" ",!1!==J.test(this.post)&&!e.last||this.implicit||(i="")),!0!==e.punctuation||e.root||(!0===this.hasPost(".")?i="."+i:!0===this.hasPost("?")?i="?"+i:!0===this.hasPost("!")?i="!"+i:!0===this.hasPost(",")?i=","+i:!0===this.hasEllipses()&&(i="..."+i)),!0!==t&&(a=""),!0!==r&&(i=""),!0===e.abbreviations&&this.tags.Abbreviation&&(i=i.replace(/^\./,"")),a+n+i}},S={Auxiliary:1,Possessive:1},_=function(e,t){var r=Object.keys(e.tags),n=t.tags;return r=r.sort((function(e,t){return S[t]||!n[t]?-1:n[t]?n[e]?n[e].lineage.length>n[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1}))},K={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},q={json:function(e,t){e=e||{};var r={};return(e=Object.assign({},K,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.clean),e.tags&&(r.tags=Object.keys(this.tags)),e.clean&&(r.clean=this.clean),(e.id||e.offset)&&(r.id=this.id),e.implicit&&null!==this.implicit&&(r.implicit=this.implicit),e.whitespace&&(r.pre=this.pre,r.post=this.post),e.bestTag&&(r.bestTag=_(this,t)[0]),r}},R=Object.assign({},I,C,V,L,q);function W(){return"undefined"!=typeof window&&window.document}var U=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),r=String(r);var n=N(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=c(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(e,[{key:"set",value:function(e){var t=N(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();oe.prototype.clone=function(){var e=new oe(this.text);return e.pre=this.pre,e.post=this.post,e.clean=this.clean,e.reduced=this.reduced,e.root=this.root,e.implicit=this.implicit,e.tags=Object.assign({},this.tags),e},Object.assign(oe.prototype,R),Object.assign(oe.prototype,ie);var se=oe,ue={terms:function(e){if(0===this.length)return[];if(this.cache.terms)return void 0!==e?this.cache.terms[e]:this.cache.terms;for(var t=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,normal:!0}:"reduced"===e?{punctuation:!1,titlecase:!1,lowercase:!0,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"implicit"===e?{punctuation:!0,implicit:!0,whitespace:!0,trim:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),a=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(a=!0);var i=n.reduce((function(i,o,s){if(0===s&&""===o.text&&null!==o.implicit&&!e.implicit)return i;e.last=r&&s===n.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===n.length-1&&r&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&r&&(i=le(i)),!0===e.trim&&(i=i.trim()),i}},he={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},de=/[.?!]\s*$/,ge=function(e,t){t[0].pre=e[0].pre;var r,n,a=e[e.length-1],i=t[t.length-1];i.post=(r=a.post,n=i.post,de.test(n)?n+r.match(/\s*$/):r),a.post="",""===a.post&&(a.post+=" ")},pe=function(e,t,r){var n=e.terms(),a=t.terms();ge(n,a),function(e,t,r){var n=e[e.length-1],a=t[t.length-1],i=n.next;n.next=t[0].id,a.next=i,i&&(r.get(i).prev=a.id);var o=e[0].id;o&&(t[0].prev=o)}(n,a,e.pool);var i=[e],o=e.start,s=[r];return(s=s.concat(r.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length})),e.cache={},e},me=/ /,fe=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===me.test(t.post)&&(t.post+=" ")}(a),function(e,t,r){var n=r[r.length-1];n.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start),r[0].prev=e.terms(0).prev,e.terms(0).prev=n.id}(e,t,a);var i=[e],o=[r];return(o=o.concat(r.parents())).forEach((function(e){var r=e.list.filter((function(e){return e.hasId(n)||e.hasId(t.start)}));i=i.concat(r)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length,e.start===n&&(e.start=t.start),e.cache={}})),e},ve=function(e,t){var r=t.pool(),n=e.terms(),a=r.get(n[0].prev)||{},i=r.get(n[n.length-1].next)||{};n[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,r,n){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=r,a.start===t&&(a.start=n.id),a.cache={})})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},be={append:function(e,t){return pe(this,e,t),this},prepend:function(e,t){return fe(this,e,t),this},delete:function(e){return ve(this,e),this},replace:function(e,t){var r=this.length;pe(this,e,t);var n=this.buildFrom(this.start,this.length);n.length=r,ve(n,t)},splitOn:function(e){var t=this.terms(),r={before:null,match:null,after:null},n=t.findIndex((function(t){return t.id===e.start}));if(-1===n)return r;var a=t.slice(0,n);a.length>0&&(r.before=this.buildFrom(a[0].id,a.length));var i=t.slice(n,n+e.length);i.length>0&&(r.match=this.buildFrom(i[0].id,i.length));var o=t.slice(n+e.length,t.length);return o.length>0&&(r.after=this.buildFrom(o[0].id,o.length,this.pool)),r}},ye={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={};return e.text&&(r.text=this.text()),e.normal&&(r.normal=this.text("normal")),e.clean&&(r.clean=this.text("clean")),e.reduced&&(r.reduced=this.text("reduced")),e.implicit&&(r.implicit=this.text("implicit")),e.root&&(r.root=this.text("root")),e.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),r.terms=this.terms().map((function(r){return r.json(e.terms,t)}))),r}},we={lookAhead:function(e){e||(e=".*");var t=this.pool,r=[],n=this.terms();return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,r=[];return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(e)}},ke=Object.assign({},ue,ce,he,be,ye,we),Ae=function(e,t){if(0===t.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},De=x((function(e,t){t.getGreedy=function(e,t){for(var r=Object.assign({},e.regs[e.r],{start:!1,end:!1}),n=e.t;e.t1&&void 0!==arguments[1]?arguments[1]:0,n=e.regs[e.r],a=!1,i=0;it&&(t=r.length),n}))&&t},t.getGroup=function(e,t,r){if(e.groups[e.groupId])return e.groups[e.groupId];var n=e.terms[t].id;return e.groups[e.groupId]={group:String(r),start:n,length:0},e.groups[e.groupId]}})),$e=function(e,t,r,n){for(var a={t:0,terms:e,r:0,regs:t,groups:{},start_i:r,phrase_length:n,hasGroup:!1,groupId:null,previousGroup:null};a.ra.t)return null;if(!0===i.end&&a.start_i+a.t!==n)return null}if(!0===a.hasGroup){var m=De.getGroup(a,d,i.named);a.t>1&&i.greedy?m.length+=a.t-d:m.length++}}else{if(i.negative){var f=Object.assign({},i);if(f.negative=!1,!0===a.terms[a.t].doesMatch(f,a.start_i+a.t,a.phrase_length))return null}if(!0!==i.optional){if(a.terms[a.t].isImplicit()&&t[a.r-1]&&a.terms[a.t+1]){if(a.terms[a.t-1]&&a.terms[a.t-1].implicit===t[a.r-1].word)return null;if(a.terms[a.t+1].doesMatch(i,a.start_i+a.t,a.phrase_length)){a.t+=2;continue}}return null}}}else{var v=De.greedyTo(a,t[a.r+1]);if(void 0!==i.min&&v-a.ti.max){a.t=a.t+i.max;continue}if(null===v)return null;!0===a.hasGroup&&(De.getGroup(a,a.t,i.named).length=v-a.t),a.t=v}}return{match:a.terms.slice(0,a.t),groups:a.groups}},Pe=function(e,t,r){if(!r||0===r.length)return r;if(t.some((function(e){return e.end}))){var n=e[e.length-1];r=r.filter((function(e){return-1!==e.match.indexOf(n)}))}return r},je=/(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/,He=/([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/,Ee=/ /g,Ne=function(e){return/^[\!\[\^]*(<[^<]*>)?\//.test(e)&&/\/[\?\]\+\*\$~]*$/.test(e)},xe=function(e){return e=(e=e.map((function(e){return e.trim()}))).filter((function(e){return e}))},Ie=function(e){var t=e.split(je),r=[];t.forEach((function(e){Ne(e)?r.push(e):r=r.concat(e.split(He))})),r=xe(r);var n=[];return r.forEach((function(e){!function(e){return/^[\!\[\^]*(<[^<]*>)?\(/.test(e)&&/\)[\?\]\+\*\$~]*$/.test(e)}(e)?Ne(e)?n.push(e):n=n.concat(e.split(Ee)):n.push(e)})),n=xe(n)},Ce=/\{([0-9]+,?[0-9]*)\}/,Fe=/&&/,Be=new RegExp(/^<\s*?(\S+)\s*?>/),Oe=function(e){return e[e.length-1]},ze=function(e){return e[0]},Ge=function(e){return e.substr(1)},Te=function(e){return e.substr(0,e.length-1)},Ve=function(e){return e=Ge(e),e=Te(e)},Je=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===Oe(t)&&(n.end=!0,t=Te(t)),"^"===ze(t)&&(n.start=!0,t=Ge(t)),("["===ze(t)||"]"===Oe(t))&&(n.named=!0,"["===ze(t)?n.groupType="]"===Oe(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===ze(t))){var i=Be.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===Oe(t)&&(n.greedy=!0,t=Te(t)),"*"!==t&&"*"===Oe(t)&&"\\*"!==t&&(n.greedy=!0,t=Te(t)),"?"===Oe(t)&&(n.optional=!0,t=Te(t)),"!"===ze(t)&&(n.negative=!0,t=Ge(t)),"("===ze(t)&&")"===Oe(t)){Fe.test(t)?(n.choices=t.split(Fe),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=Ge(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Te(n.choices[o]),n.choices=n.choices.map((function(e){return e.trim()})),n.choices=n.choices.filter((function(e){return e})),n.choices=n.choices.map((function(t){return t.split(/ /g).map(e)})),t=""}if("/"===ze(t)&&"/"===Oe(t))return t=Ve(t),n.regex=new RegExp(t),n;if("~"===ze(t)&&"~"===Oe(t))return t=Ve(t),n.soft=!0,n.word=t,n}return!0===Ce.test(t)&&(t=t.replace(Ce,(function(e,t){var r=t.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,n.optional=!0,""}))),"#"===ze(t)?(n.tag=Ge(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===ze(t)?(n.method=Ge(t),n):"."===t?(n.anything=!0,n):"*"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace("\\*","*")).replace("\\.","."),n.word=t.toLowerCase()),n)},Me=function(e){for(var t,r=!1,n=-1,a=0;a1&&void 0!==arguments[1]?arguments[1]:{},r=e.filter((function(e){return e.groupType})).length;return r>0&&(e=Me(e)),t.fuzzy||(e=Le(e)),e},_e=function(e){return"[object Array]"===Object.prototype.toString.call(e)},Ke=function(e){return[{choices:e.map((function(e){return[{word:e}]})),operator:"or"}]},qe=function(e){if(!e||!e.list||!e.list[0])return[];var t=[];return e.list.forEach((function(e){var r=[];e.terms().forEach((function(e){r.push(e.id)})),t.push(r)})),[{idBlocks:t}]},Re=function(e,t){return!0===t.fuzzy&&(t.fuzzy=.85),"number"==typeof t.fuzzy&&(e=e.map((function(e){return t.fuzzy>0&&e.word&&(e.fuzzy=t.fuzzy),e.choices&&e.choices.forEach((function(e){e.forEach((function(e){e.fuzzy=t.fuzzy}))})),e}))),e},We=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||""===t)return[];if("object"===e(t)){if(_e(t)){if(0===t.length||!t[0])return[];if("object"===e(t[0]))return t;if("string"==typeof t[0])return Ke(t)}return t&&"Doc"===t.isA?qe(t):[]}"number"==typeof t&&(t=String(t));var n=Ie(t);return n=n.map((function(e){return Je(e)})),n=Se(n,r),n=Re(n,r)},Ue=function(e,t){for(var r=[],n=t[0].idBlocks,a=function(t){n.forEach((function(n){0!==n.length?n.every((function(r,n){return i=t,e[t+n].id===r}))&&(r.push({match:e.slice(t,t+n.length)}),t+=n.length-1):i=t})),i=t},i=0;i2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=We(t)),!0===Ae(e,t))return[];var n=t.filter((function(e){return!0!==e.optional&&!0!==e.negative})).length,a=e.terms(),i=[];if(t[0].idBlocks){var o=Ue(a,t);if(o&&o.length>0)return Pe(a,t,o)}if(!0===t[0].start){var s=$e(a,t,0,a.length);return s&&s.match&&s.match.length>0&&(s.match=s.match.filter((function(e){return e})),i.push(s)),Pe(a,t,i)}for(var u=0;ua.length);u+=1){var l=$e(a.slice(u),t,u,a.length);if(l&&l.match&&l.match.length>0&&(u+=l.match.length-1,l.match=l.match.filter((function(e){return e})),i.push(l),!0===r))return Pe(a,t,i)}return Pe(a,t,i)},Ze=function(e,t){var r={};Qe(e,t).forEach((function(e){e.match.forEach((function(e){r[e.id]=!0}))}));var n=e.terms(),a=[],i=[];return n.forEach((function(e){!0!==r[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Xe={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Qe(this,e,r);return n=n.map((function(e){var r=e.match,n=e.groups,a=t.buildFrom(r[0].id,r.length,n);return a.cache.terms=r,a}))},has:function(e){return Qe(this,e,!0).length>0},not:function(e){var t=this,r=Ze(this,e);return r=r.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var r=this,n=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return r.buildFrom(e[0].id,e.length)}))}},Ye=function e(r,n,a){t(this,e),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Ye.prototype.buildFrom=function(e,t,r){var n=new Ye(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Ye.prototype,Xe),Object.assign(Ye.prototype,ke);var et={term:"terms"};Object.keys(et).forEach((function(e){return Ye.prototype[e]=Ye.prototype[et[e]]}));var tt=Ye,rt=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();rt.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,r){var n=e.words[r].clone();return t[n.id]=n,t}),{});return new rt(t)};var nt=rt,at=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},it=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,ot=/\S/,st=/[ .][A-Z]\.? *$/i,ut=/(?:\u2026|\.{2,}) *$/,lt=/((?:\r?\n|\r)+)/,ct=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,ht=/^\s+/,dt=function(e,t){if(!0===st.test(e))return!1;if(!0===ut.test(e))return!1;if(!1===ct.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},gt=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===ot.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(lt),n=0;n0&&(n.push(l),a[u]="")}if(0===n.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&(0===t.length&&(t[0]=""),t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof e&&("number"==typeof e?e=String(e):At(e)&&(n=e)),n=(n=n||gt(e,t)).map((function(e){return kt(e)})),r=r||new nt;var a=n.map((function(e){e=e.map((function(e){var t=new se(e);return r.add(t),t})),at(e);var t=new tt(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},$t=function(e,t){var r=new nt;return e.map((function(e,n){var a=e.terms.map((function(a,i){var o=new se(a.text);return o.pre=void 0!==a.pre?a.pre:"",void 0===a.post&&(a.post=" ",i>=e.terms.length-1&&(a.post=". ",n>=e.terms.length-1&&(a.post="."))),o.post=void 0!==a.post?a.post:" ",a.tags&&a.tags.forEach((function(e){return o.tag(e,"",t)})),r.add(o),o}));return at(a),new tt(a[0].id,a.length,r)}))},Pt=["Person","Place","Organization"],jt={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:Pt},Actor:{isA:"Noun",notA:Pt},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:Pt},Demonym:{isA:["Noun","ProperNoun"],notA:Pt},Possessive:{isA:"Noun"}},Ht={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Imperative:{isA:"Infinitive"},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"PastTense"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"},Auxiliary:{notA:["Noun","Adjective","Value"]}},Et={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},Fraction:{isA:"Value",notA:["Noun"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},Nt=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],xt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Timezone:{isA:["Date","Noun"],notA:["Adjective","ProperNoun"]},Time:{isA:["Date"],notA:["AtMention"]},Determiner:{notA:Nt},Conjunction:{notA:Nt},Preposition:{notA:Nt},QuestionWord:{notA:["Determiner"]},Currency:{isA:["Noun"]},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},It={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Ct=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:It[t]?e[t].color=It[t]:e[t].isA.some((function(r){return!!It[r]&&(e[t].color=It[r],!0)}))})),e},Ft=function(e){return Object.keys(e).forEach((function(t){for(var r=e[t],n=r.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},St=function(e,t,r){var n=Lt(t);return n1&&(r.hasCompound[i[0]]=!0),void 0===Rt[a]?void 0!==t[n]?("string"==typeof t[n]&&(t[n]=[t[n]]),"string"==typeof a?t[n].push(a):t[n]=t[n].concat(a)):t[n]=a:Rt[a](t,n,r)}))},Ut=function(e){var t=Object.assign({},qt);return Object.keys(Vt).forEach((function(r){var n=Kt(Vt[r]);Object.keys(n).forEach((function(e){n[e]=r})),Wt(n,t,e)})),t},Qt=Wt,Zt=function(e){for(var t=e.irregulars.nouns,r=Object.keys(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===ar.hasOwnProperty(t))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(r=Object.assign({},t.irregulars.verbs[e])),void 0===(r=Object.assign({},sr(e),r)).Gerund&&(r.Gerund=lr.Gerund(e)),void 0===r.PastTense&&(r.PastTense=lr.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=lr.PresentTense(e)),r},hr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],dr=[/ary$/],gr={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},pr=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],mr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],fr=[/ary$/,/ous$/],vr={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},br=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],yr={toSuperlative:function(e){if(gr.hasOwnProperty(e))return gr[e];for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=t.irregulars.nouns;if(r.hasOwnProperty(e))return r[e];var n=Dr(e);return null!==n?n:Ar.test(e)?e+"es":e+"s"},Pr=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(eas)es$/i,"$1e"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],jr=function(e,t){var r,n=t.irregulars.nouns,a=(r=n,Object.keys(r).reduce((function(e,t){return e[r[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof t&&"number"!=typeof t&&null!==t||(t={group:t});var r=We(e,t);if(0===r.length)return this.buildFrom([]);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.reduce((function(e,t){return e.concat(t.match(r))}),[]);return void 0!==t.group&&null!==t.group&&""!==t.group?this.buildFrom(n).groups(t.group):this.buildFrom(n)},t.not=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(0===r.length||!1===Tr(this,r))return this;var n=this.list.reduce((function(e,t){return e.concat(t.not(r))}),[]);return this.buildFrom(n)},t.matchOne=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.filter((function(e){return!0===e.has(r)}));return this.buildFrom(n)},t.ifNo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.list.filter((function(e){return!1===e.has(r)}));return this.buildFrom(n)},t.has=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);return!1!==Tr(this,r)&&this.list.some((function(e){return!0===e.has(r)}))},t.lookAhead=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookAhead(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookAfter=t.lookAhead,t.lookBehind=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookBehind(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookBefore=t.lookBehind,t.before=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms().map((function(e){return e.id})),n=e.match(r)[0],a=t.indexOf(n.start);return 0===a||-1===a?null:e.buildFrom(e.start,a)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.after=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms(),n=t.map((function(e){return e.id})),a=e.match(r)[0],i=n.indexOf(a.start);if(-1===i||!t[i+a.length])return null;var o=t[i+a.length].id,s=e.length-i-a.length;return e.buildFrom(o,s)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.hasAfter=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookAfter(e,t).found}))},t.hasBefore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookBefore(e,t).found}))}})),Jr=function(e,t,r,n){var a=[];"string"==typeof e&&(a=e.split(" ")),t.list.forEach((function(i){var o=i.terms();!0===r&&(o=o.filter((function(r){return r.canBe(e,t.world)}))),o.forEach((function(r,i){a.length>1?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))},Mr={tag:function(e,t){return e?(Jr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(Jr(e,this,!0,t),this):this},unTag:function(e,t){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(e,t,r.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(e,t))}),[]);return this.buildFrom(r)}},Lr={map:function(t){var r=this;if(!t)return this;var n=this.list.map((function(e,n){var a=r.buildFrom([e]);a.from=null;var i=t(a,n);return i&&i.list&&i.list[0]?i.list[0]:i}));return 0===(n=n.filter((function(e){return e}))).length?this.buildFrom(n):"object"!==e(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(e,t){var r=this;return e?(this.list.forEach((function(n,a){var i=r.buildFrom([n]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var r=this.list.filter((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return this.buildFrom(r)},find:function(e){var t=this;if(!e)return this;var r=this.list.find((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return r?this.buildFrom([r]):void 0},some:function(e){var t=this;return e?this.list.some((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var r=[this.list[t]];return this.buildFrom(r)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},Sr=function(e){return e.split(/[ -]/g)},_r=function(e,t,r){for(var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return e.forEach((function(e,n){var a=!0;void 0!==t[n]&&(a=t[n]),e=(e=(e||"").toLowerCase()).replace(/[,;.!?]+$/,"");var i=Sr(e).map((function(e){return e.trim()}));r[i[0]]=r[i[0]]||{},1===i.length?r[i[0]].value=a:(r[i[0]].more=r[i[0]].more||[],r[i[0]].more.push({rest:i.slice(1),value:a}))})),r}(e,t),a=[],i=function(e){for(var t=r.list[e],i=t.terms().map((function(e){return e.reduced})),o=function(e){void 0!==n[i[e]]&&(void 0!==n[i[e]].more&&n[i[e]].more.forEach((function(r){void 0!==i[e+r.rest.length]&&(!0===r.rest.every((function(t,r){return t===i[e+r+1]}))&&a.push({id:t.terms()[e].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[i[e]].value&&a.push({id:t.terms()[e].id,value:n[i[e]].value,length:1}))},s=0;s1&&void 0!==arguments[1]?arguments[1]:{};return t?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(a){var i,o=t;if("function"==typeof t&&(o=t(a)),o&&"object"===e(o)&&"Doc"===o.isA)i=o.list,r.pool().merge(o.pool());else{if("string"!=typeof o)return;!1!==n.keepCase&&a.terms(0).isTitleCase()&&(o=Rr(o)),i=Dt(o,r.world,r.pool());var s=r.buildFrom(i);s.tagger(),i=s.list}if(!0===n.keepTags){var u=a.json({terms:{tags:!0}}).terms;i[0].terms().forEach((function(e,t){u[t]&&e.tagSafe(u[t].tags,"keptTag",r.world)}))}a.replace(i[0],r)})),this):this.delete()},replace:function(e,t,r){return void 0===t?this.replaceWith(e,r):(this.match(e).replaceWith(t,r),this)}},Ur=x((function(e,t){var r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)},n=function(e,t){var r=Dt(e,t.world)[0],n=t.buildFrom([r]);return n.tagger(),t.list=n.list,t};t.append=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(t)&&"Doc"===t.isA?a=t.list[0].clone():"string"==typeof t&&(a=Dt(t,e.world,e.pool())[0]),e.buildFrom([a]).tagger(),n.append(a,e)})),this):n(t,this):this},t.insertAfter=t.append,t.insertAt=t.append,t.prepend=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(e)&&"Doc"===e.isA?a=e.list[0].clone():"string"==typeof e&&(a=Dt(e,t.world,t.pool())[0]),t.buildFrom([a]).tagger(),n.prepend(a,t)})),this):n(e,this):this},t.insertBefore=t.prepend,t.concat=function(){this.uncache();for(var e=this.list.slice(0),t=0;t0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof t&&this.list[t])return this.list[t].json(r);!0===(t=n(t)).root&&this.list.forEach((function(t){t.terms().forEach((function(t){null===t.root&&t.setRoot(e.world)}))}));var a=this.list.map((function(r){return r.json(t,e.world)}));if((t.terms.offset||t.offset||t.terms.index||t.index)&&Xr(this,a,t),t.frequency||t.freq||t.count){var i={};this.list.forEach((function(e){var t=e.text("reduced");i[t]=i[t]||0,i[t]+=1})),this.list.forEach((function(e,t){a[t].count=i[e.text("reduced")]}))}if(t.unique){var o={};a=a.filter((function(e){return!0!==o[e.reduced]&&(o[e.reduced]=!0,!0)}))}return a},t.data=t.json})),en=x((function(e){var t="",r=function(e,t){for(e=e.toString();e.lengtht.count?-1:e.countn?1:0},length:function(e,t){var r=e.text().trim().length,n=t.text().trim().length;return rn?-1:0},wordCount:function(e,t){var r=e.wordCount(),n=t.wordCount();return rn?-1:0}};nn.alphabetical=nn.alpha,nn.wordcount=nn.wordCount;var an={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},on={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(n);r[t]=r[t]||0,r[t]+=1})),t.list.sort((function(e,t){var a=r[e.text(n)],i=r[t.text(n)];return ai?-1:0})),t):an.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,r){return t[e.start]>t[r.start]?1:t[e.start]0){a+=o;continue}}if(void 0===r[i]||!0!==r.hasOwnProperty(i))if(i===e[a].reduced||!0!==r.hasOwnProperty(e[a].reduced)){if(!0===$n.test(i)){var s=i.replace($n,"");!0===r.hasOwnProperty(s)&&e[a].tag(r[s],"noprefix-lexicon",t)}}else e[a].tag(r[e[a].reduced],"lexicon",t);else e[a].tag(r[i],"lexicon",t)}return e},Hn=/[\'‘’‛‵′`´]$/,En=/^(m|k|cm|km|m)\/(s|h|hr)$/,Nn=[[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@1?[0-9](am|pm)$/i,"Time"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,"Time"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^'[0-9]{2}$/,"Year"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,"Date"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date"],[/^gmt[+-][0-9][0-9]?$/i,"Timezone"],[/^utc[+-][0-9][0-9]?$/i,"Timezone"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^woo+a*?h?$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/,["Money","Value"]],[/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/,["Ordinal","NumericValue"]],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"]],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/,["Fraction","NumericValue"]],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,["Value","NumberRange"]],[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/,["Time","NumberRange"]],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],xn=/^[IVXLCDM]{2,}$/,In=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Cn="Adjective",Fn="Infinitive",Bn="PresentTense",On="Singular",zn="PastTense",Gn="Adverb",Tn="Expression",Vn="Actor",Jn="Verb",Mn="Noun",Ln="LastName",Sn={a:[[/.[aeiou]na$/,Mn],[/.[oau][wvl]ska$/,Ln],[/.[^aeiou]ica$/,On],[/^([hyj]a)+$/,Tn]],c:[[/.[^aeiou]ic$/,Cn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,zn],[/.[aeo]{2}[bdgmnprvz]ed$/,zn],[/.[aeiou][sg]hed$/,zn],[/.[aeiou]red$/,zn],[/.[aeiou]r?ried$/,zn],[/.[bcdgtr]led$/,zn],[/.[aoui]f?led$/,zn],[/.[iao]sed$/,zn],[/[aeiou]n?[cs]ed$/,zn],[/[aeiou][rl]?[mnf]ed$/,zn],[/[aeiou][ns]?c?ked$/,zn],[/[aeiou][nl]?ged$/,zn],[/.[tdbwxz]ed$/,zn],[/[^aeiou][aeiou][tvx]ed$/,zn],[/.[cdlmnprstv]ied$/,zn],[/[^aeiou]ard$/,On],[/[aeiou][^aeiou]id$/,Cn],[/.[vrl]id$/,Cn]],e:[[/.[lnr]ize$/,Fn],[/.[^aeiou]ise$/,Fn],[/.[aeiou]te$/,Fn],[/.[^aeiou][ai]ble$/,Cn],[/.[^aeiou]eable$/,Cn],[/.[ts]ive$/,Cn]],h:[[/.[^aeiouf]ish$/,Cn],[/.v[iy]ch$/,Ln],[/^ug?h+$/,Tn],[/^uh[ -]?oh$/,Tn]],i:[[/.[oau][wvl]ski$/,Ln]],k:[[/^(k){2}$/,Tn]],l:[[/.[gl]ial$/,Cn],[/.[^aeiou]ful$/,Cn],[/.[nrtumcd]al$/,Cn],[/.[^aeiou][ei]al$/,Cn]],m:[[/.[^aeiou]ium$/,On],[/[^aeiou]ism$/,On],[/^h*u*m+$/,Tn],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Cn],[/[^aeiou]ician$/,Vn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,Tn],[/^(yo)+$/,Tn],[/^woo+[pt]?$/,Tn]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,On],[/[^i]fer$/,Fn],[/.[^aeiou][ao]pher$/,Vn],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Cn],[/[aeiou].*ist$/,Cn],[/^[a-z]et$/,Jn]],s:[[/.[^aeiou]ises$/,Bn],[/.[rln]ates$/,Bn],[/.[^z]ens$/,Jn],[/.[lstrn]us$/,On],[/.[aeiou]sks$/,Bn],[/.[aeiou]kes$/,Bn],[/[aeiou][^aeiou]is$/,On],[/[a-z]\'s$/,Mn],[/^yes+$/,Tn]],v:[[/.[^aeiou][ai][kln]ov$/,Ln]],y:[[/.[cts]hy$/,Cn],[/.[st]ty$/,Cn],[/.[gk]y$/,Cn],[/.[tnl]ary$/,Cn],[/.[oe]ry$/,On],[/[rdntkbhs]ly$/,Gn],[/...lly$/,Gn],[/[bszmp]{2}y$/,Cn],[/.(gg|bb|zz)ly$/,Cn],[/.[ai]my$/,Cn],[/[ea]{2}zy$/,Cn],[/.[^aeiou]ity$/,On]]},_n="Adjective",Kn="Infinitive",qn="PresentTense",Rn="Singular",Wn="PastTense",Un="Adverb",Qn="Plural",Zn="Actor",Xn="Verb",Yn="Noun",ea="LastName",ta="Modal",ra=[null,null,{ea:Rn,ia:Yn,ic:_n,ly:Un,"'n":Xn,"'t":Xn},{oed:Wn,ued:Wn,xed:Wn," so":Un,"'ll":ta,"'re":"Copula",azy:_n,eer:Yn,end:Xn,ped:Wn,ffy:_n,ify:Kn,ing:"Gerund",ize:Kn,lar:_n,mum:_n,nes:qn,nny:_n,oid:_n,ous:_n,que:_n,rol:Rn,sis:Rn,zes:qn},{amed:Wn,aped:Wn,ched:Wn,lked:Wn,nded:Wn,cted:Wn,dged:Wn,akis:ea,cede:Kn,chuk:ea,czyk:ea,ects:qn,ends:Xn,enko:ea,ette:Rn,fies:qn,fore:Un,gate:Kn,gone:_n,ices:Qn,ints:Qn,ines:Qn,ions:Qn,less:Un,llen:_n,made:_n,nsen:ea,oses:qn,ould:ta,some:_n,sson:ea,tage:Kn,teen:"Value",tion:Rn,tive:_n,tors:Yn,vice:Rn},{tized:Wn,urned:Wn,eased:Wn,ances:Qn,bound:_n,ettes:Qn,fully:Un,ishes:qn,ities:Qn,marek:ea,nssen:ea,ology:Yn,ports:Qn,rough:_n,tches:qn,tieth:"Ordinal",tures:Qn,wards:Un,where:Un},{auskas:ea,keeper:Zn,logist:Zn,teenth:"Value"},{opoulos:ea,borough:"Place",sdottir:ea}],na={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"2){var a=n.clean[n.clean.length-2];if("s"===a)return void n.tag(["Possessive","Noun"],"end-tick",r);"n"===a&&n.tag(["Gerund"],"chillin",r)}En.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&xn.test(r)&&In.test(r)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var r=e.clean.length,n=7;r<=n&&(n=r-1);for(var a=n;a>1;a-=1){var i=e.clean.substr(r-a,r);if(!0===ra[i.length].hasOwnProperty(i)){var o=ra[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var r=e.clean,n=r[r.length-1];if(!0===Sn.hasOwnProperty(n))for(var a=Sn[n],i=0;i35)}(n=(n=n.trim()).replace(/[.!?,]$/,""))&&(e.tag("Emoji","comma-emoji",t),e.text=n,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(aa)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),na.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},oa=function(e,t){var r=e.world;ia.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},va={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},ba=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],ya=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],wa=[/i$/,/ae$/],ka=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var r=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(r.length<=3)return void e.tag("Singular","short-singular",t);if(ba.find((function(t){return e.tags[t]})))return;if(va.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(va.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(ya.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(wa.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},Aa=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),Da=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},$a=/^[A-Z]('s|,)?$/,Pa=/([A-Z]\.){2}[A-Z]?/i,ja={I:!0,A:!0},Ha={neighbours:ca,case:ga,stem:fa,plural:ka,organizations:function(e,t){for(var r=0;r5)&&e.isAcronym()}(e,t)?(e.tag("Acronym","acronym-step",t),e.tag("Noun","acronym-infer",t)):!ja.hasOwnProperty(e.text)&&$a.test(e.text)&&(e.tag("Acronym","one-letter-acronym",t),e.tag("Noun","one-letter-infer",t)),e.tags.Organization&&e.text.length<=3&&e.tag("Acronym","acronym-org",t),e.tags.Organization&&e.isUpperCase()&&e.text.length<=6&&e.tag("Acronym","acronym-org-case",t))}))}},Ea=function(e,t){var r=e.world;return Ha.neighbours(t,r),Ha.case(e),Ha.stem(t,r),t.forEach((function(t){!1===t.isKnown()&&t.tag("Noun","noun-fallback",e.world)})),Ha.organizations(t,r),Ha.acronyms(t,r),t.forEach((function(t){Ha.plural(t,e.world)})),e},Na=/n't$/,xa={"won't":["will","not"],wont:["will","not"],"can't":["can","not"],cant:["can","not"],cannot:["can","not"],"shan't":["should","not"],dont:["do","not"],dun:["do","not"]},Ia=function(e,t){return!0===xa.hasOwnProperty(e.clean)?xa[e.clean]:"ain't"===e.clean||"aint"===e.clean?function(e,t){var r=t.terms(),n=r.indexOf(e),a=r.slice(0,n).find((function(e){return e.tags.Noun}));return a&&a.tags.Plural?["are","not"]:["is","not"]}(e,t):!0===Na.test(e.clean)?[e.clean.replace(Na,""),"not"]:null},Ca=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i,Fa={ll:"will",ve:"have",re:"are",m:"am","n't":"not"},Ba=function(e){var t=e.text.match(Ca);return null===t?null:Fa.hasOwnProperty(t[2])?[t[1],Fa[t[2]]]:null},Oa={wanna:["want","to"],gonna:["going","to"],im:["i","am"],alot:["a","lot"],ive:["i","have"],imma:["I","will"],"where'd":["where","did"],whered:["where","did"],"when'd":["when","did"],whend:["when","did"],howd:["how","did"],whatd:["what","did"],dunno:["do","not","know"],brb:["be","right","back"],gtg:["got","to","go"],irl:["in","real","life"],tbh:["to","be","honest"],imo:["in","my","opinion"],til:["today","i","learned"],rn:["right","now"],twas:["it","was"],"@":["at"]},za=function(e){return Oa.hasOwnProperty(e.clean)?Oa[e.clean]:null},Ga=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i,Ta={that:!0,there:!0},Va={here:!0,there:!0,everywhere:!0},Ja=function(e,t,r){var n=e.text.match(Ga);if(null!==n){if(!0===function(e,t){if(e.tags.Possessive)return!0;if(e.tags.Pronoun||e.tags.QuestionWord)return!1;if(Ta.hasOwnProperty(e.reduced))return!1;var r=t.get(e.next);if(!r)return!0;if(r.tags.Verb)return!!r.tags.Infinitive||!!r.tags.PresentTense;if(r.tags.Noun)return!0!==Va.hasOwnProperty(r.reduced);var n=t.get(r.next);return!(!n||!n.tags.Noun||n.tags.Pronoun)||(r.tags.Adjective||r.tags.Adverb||r.tags.Verb,!1)}(e,t.pool))return e.tag("#Possessive","isPossessive",r),null;if(null!==n)return function(e,t){var r=t.terms(),n=r.indexOf(e);return r.slice(n+1,n+3).find((function(e){return e.tags.PastTense}))}(e,t)?[n[1],"has"]:[n[1],"is"]}return null},Ma=/[a-z\u00C0-\u00FF]'d$/,La={how:!0,what:!0},Sa=function(e,t){if(Ma.test(e.clean)){for(var r=e.clean.replace(/'d$/,""),n=t.terms(),a=n.indexOf(e),i=n.slice(a+1,a+4),o=0;o0?wi=wi.concat(t):wi.push(e)})),wi.forEach((function(e){var t,r,n;return e.required=(t=e.reg,r=[],n=[],t.forEach((function(e){!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&r.push(e.tag),void 0!==e.word&&n.push(e.word))})),{tags:ni(r),words:ni(n)}),e}));var ki=wi,Ai=function(e){ki.forEach((function(t){var r=[];t.required.words.forEach((function(t){r.push(e._cache.words[t]||[])})),t.required.tags.forEach((function(t){r.push(e._cache.tags[t]||[])}));var n=function(e){if(0===e.length)return[];var t={};e.forEach((function(e){e=ni(e);for(var r=0;r5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(l.eq(0))}return"number"==typeof t&&(n=n.get(t)),new e(n.list,this,this.world)},e},Ni=function(e){var r=function(e){a(i,e);var r=u(i);function i(e,n,a){var o;return t(this,i),(o=r.call(this,e,n,a)).contracted=null,o}return n(i,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),r=t[0].isTitleCase();t.forEach((function(e,r){e.set(e.implicit||e.text),e.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),a=this.not(n).splitAfter("@hasComma"),i=(a=a.concat(n)).quotations();return i.found&&(a=a.splitOn(i.eq(0))),a=a.match("#Noun+ (of|by)? the? #Noun+?"),!0!==t.keep_anaphora&&(a=(a=(a=(a=a.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),a=a.not("(of|for|by|the)$"),"number"==typeof e&&(a=a.get(e)),new r(a.list,this,this.world)},e},_i=/\(/,Ki=/\)/,qi=function(e){var r=function(e){a(i,e);var r=u(i);function i(){return t(this,i),r.apply(this,arguments)}return n(i,[{key:"unwrap",value:function(){return this.list.forEach((function(e){var t=e.terms(0);t.pre=t.pre.replace(_i,"");var r=e.lastTerm();r.post=r.post.replace(Ki,"")})),this}}]),i}(e);return e.prototype.parentheses=function(e){var t=[];return this.list.forEach((function(e){for(var r=e.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(e,[{key:"tagger",value:function(){return $i(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();ho.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new ho(e,this,this.world)},ho.prototype.fromText=function(e){var t=Dt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(ho.prototype,co.misc),Object.assign(ho.prototype,co.selections),lo(ho);var go={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(go).forEach((function(e){return ho.prototype[e]=ho.prototype[go[e]]}));var po=ho,mo=function(e){var t=e.termList();return jn(t,e.world),e.world.taggers.forEach((function(t){t(e)})),e};var fo=function e(t){var r=t,n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&r.addWords(t);var n=Dt(e,r),a=new po(n,null,r);return a.tagger(),a};return n.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=r;t&&((n=n.clone()).words={},n.addWords(t));var a=Dt(e,n),i=new po(a,null,n);return(t||i.world.taggers.length>0)&&mo(i),i},n.extend=function(e){return e(po,r,this,tt,se,nt),this},n.fromJSON=function(e){var t=$t(e,r);return new po(t,null,r)},n.clone=function(){return e(r.clone())},n.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(e),this},n.world=function(){return r},n.parseMatch=function(e,t){return We(e,t)},n.version="13.10.5",n.import=n.load,n.plugin=n.extend,n}(new Or);var vo=function(e){let t=e.template("short description");if(t){return(t.json()||{}).description||""}return null};var bo=function(e){return e.parentheses().remove(),e};const yo=function(e){return e.remove("and #Copula .*"),e};var wo=function(e){let t=e.matchOne("#Copula+ (a|an|the|any|one) of?");if(t.found||(t=e.matchOne("#Copula+")),t.found||(t=e.matchOne("refers to (a|an|the|any)? of?")),t.found||(t=e.matchOne("(constitutes|describes) (a|an|the|any)? of?")),!t.found)return null;let r=e.splitOn(t),n=r.eq(1),a=n.match("(a|an|the|any)? of?");return n.remove("(a|an|the|any)? of?"),{before:r.eq(0),verb:r.eq(1),article:a,after:yo(r.eq(2))}};var ko=function(e){return e.remove("and (also|eventually) (a|an|the|#Possessive) .*"),e.remove("!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e};var Ao=function(e){return e.has("(#Place && @hasComma) #Country+$")&&e.remove("#Country+$"),e.has("#Noun (that|which|who) #PresentTense the .*")&&e.remove(" that #PresentTense the .*"),e.has("#Noun #PastTense by the .*")&&e.remove("#PastTense by the .*"),e.remove("#Demonym"),e.remove("(professional|former)"),e.remove("and? held annually .*"),e.remove("taking place each .*"),e.remove("^one of (the|many|several|#Value)+"),e.remove("^(a|an|the)? #Ordinal? #Superlative"),e.remove("^(a|an|the)? #Ordinal? most #Adjective"),e.remove("born in .*"),e.remove("born #Date+ in? #Place+?"),e.remove("(first|initially|originally)? (located|founded|started|based|formed) in .*"),e.remove("(which|who|that) (is|was) .*"),e.remove("^the name of"),e};const Do=function(e){return!!e.has("^(and|the|which|who|whom|also|a|an|the)")||(!!e.has("^(west|north|south|east|part) of")||(!!e.has("^#PastTense by .")||(!!e.has("^(occasionally|sometimes|frequently)")||(!!e.has("^such as")||!!e.has("^(including|featuring|depicting)")))))};var $o=function(e){e.has("#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$")?e.remove("(located|based) in #Place+$"):e.has("(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$")?e.remove("(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$"):e.has("(#Noun|#Value) in #Place+$")?e.remove("in #Place+$"):(e.remove("and? part of #Place+$"),e.remove("and? near #Place+$"));let t=e.clauses();if(t.length>1){let r=t.eq(0),n=t.eq(1);if(Do(n))e=t.eq(0);else if(n.has("^(#PastTense)")&&r.has("(#Noun|#Value)$"))e=t.eq(0);else if(n.has("^(#Gerund)")&&r.has("#Noun$"))e=t.eq(0);else{let r=t.last();Do(r)&&(t.list.pop(),e=t.join())}}return e.has("(#Noun|and) #PastTense by")&&e.remove("#PastTense by .*"),e.remove("and? designed to .*"),e.remove("and? owned by .*"),e.remove("and? consisting of .*"),e.has("@hasComma (which|who) #Verb")&&e.remove("(which|who) .*"),e};var Po=function(e){return e.remove("(small|large|minor|major)"),e.remove("(extinct|retired|annual|biweekly|monthly|daily)"),e.remove("(female|male)"),e.remove("(private|independent|official|unofficial|officially)"),e.remove("(southern|northern|eastern|western|northeastern|northwestern)"),e.remove("^(family|clade|genus|species|order) of"),e};var jo=function(e,t){if(e&&"function"==typeof e.text){let r=e.text();if(r&&r.length>t.min&&r.lengthnew RegExp(`\\b${e}\\b`,"i")));var Co={good:["male","female"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),bad:Io,like:["male","female","century"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),dislike:["people","place","from","in","people from"].map((e=>new RegExp(`\\b${e}\\b`)),"i")};const{like:Fo,dislike:Bo,good:Oo,bad:zo}=Co,Go=/[0-9]{4}/,To=/s$/;var Vo=function(e){let t=e.categories(),r=t.filter((e=>Oo.find((t=>t.test(e)))));return r.length>0&&(t=r),t=t.filter((e=>!zo.find((t=>t.test(e)))&&!Go.test(e))),0===t.length?"":(r=t.filter((e=>Fo.find((t=>t.test(e))))),r.length>0&&(t=r),r=t.filter((e=>!1!==To.test(e)&&(1!==e.slice(" ").length&&void 0===Bo.find((t=>t.test(e)))))),r.length>0&&(t=r),t=t.sort(((e,t)=>{let r=e.split(" ").length,n=t.split(" ").length;return r>n?-1:r5&&e.length i.wikitext(options)).join('\n'); + text += this.infoboxes().map(i => i.makeWikitext(options)).join('\n'); } //render each section if (options.sections === true || options.paragraphs === true || options.sentences === true) { - let sections = this.sections(); // sections = sections.filter((s) => s.title() !== 'References') - - text += sections.map(s => s.wikitext(options)).join('\n'); + let sections = this.sections(); + text += sections.map(s => s.makeWikitext(options)).join('\n'); } // add categories on the bottom @@ -45,7 +45,7 @@ return text; }; - var _01Doc = toWiki$9; + var _01Doc = toWiki$a; const defaults$2 = {}; @@ -60,7 +60,7 @@ return `{{${name}${data}}} `; }; - const toWiki$8 = function (options) { + const toWiki$9 = function (options) { options = options || {}; options = Object.assign({}, defaults$2, options); let text = ''; @@ -71,12 +71,15 @@ } // render some templates? - this.templates().forEach(tmpl => { - text += doTemplate(tmpl) + '\n'; - }); //make a table + if (options.templates === true) { + this.templates().forEach(tmpl => { + text += doTemplate(tmpl.json()) + '\n'; + }); + } //make a table + if (options.tables === true) { - text += this.tables().map(t => t.wikitext(options)).join('\n'); + text += this.tables().map(t => t.makeWikitext(options)).join('\n'); } // make a html bullet-list @@ -85,40 +88,40 @@ } text += this.paragraphs().map(p => { - return p.wikitext(options); + return p.makeWikitext(options); }).join('\n'); // render references // these will be out of place this.references().forEach(ref => { - text += ref.wikitext(options) + '\n'; + text += ref.makeWikitext(options) + '\n'; }); return text; }; - var _02Section = toWiki$8; + var _02Section = toWiki$9; const defaults$1 = {}; - const toWiki$7 = function (options) { + const toWiki$8 = function (options) { options = options || {}; options = Object.assign({}, defaults$1, options); let text = ''; // do images this.images().forEach(img => { - text += img.wikitext(); + text += img.makeWikitext(); }); // do lists this.lists().forEach(list => { - text += list.wikitext(); + text += list.makeWikitext(); }); // render sentences text += this.sentences().map(s => { - return s.wikitext(options); + return s.makeWikitext(options); }).join('\n'); return text; }; - var _03Paragraph = toWiki$7; + var _03Paragraph = toWiki$8; //escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(string) { @@ -156,7 +159,7 @@ links: true }; - const toWiki$6 = function (options) { + const toWiki$7 = function (options) { options = options || {}; options = Object.assign({}, defaults, options); let text = this.text(); @@ -164,7 +167,7 @@ if (options.links === true) { this.links().forEach(link => { let str = link.text() || link.page(); - let tag = link.wikitext(); + let tag = link.makeWikitext(); text = smartReplace_1(text, str, tag); }); } @@ -185,10 +188,10 @@ return text; }; - var _04Sentence = toWiki$6; + var _04Sentence = toWiki$7; // add `[text](href)` to the text - const toWiki$5 = function () { + const toWiki$6 = function () { //if it's an external link, we good if (this.site()) { if (this.text()) { @@ -213,9 +216,9 @@ return `[[${page}]]`; }; - var _05Link = toWiki$5; + var _05Link = toWiki$6; - const toWiki$4 = function () { + const toWiki$5 = function () { let text = `[[${this.file()}|thumb`; let caption = this.data.caption; @@ -226,7 +229,26 @@ return text + ']]'; }; - var image = toWiki$4; + var image = toWiki$5; + + const toWiki$4 = function () { + let text = `{{${this.data.template || ''}`; + Object.keys(this.data).forEach(k => { + if (k === 'template') { + return; + } + + let val = this.data[k]; + + if (val) { + text += `| ${k} = ${val || ''}`; + } + }); + text += '}}\n'; + return text; + }; + + var template = toWiki$4; const toWiki$3 = function () { let text = `{{Infobox ${this._type || ''}\n`; @@ -299,16 +321,17 @@ var table = toWiki; const plugin = function (models) { - models.Doc.prototype.wikitext = _01Doc; - models.Section.prototype.wikitext = _02Section; - models.Paragraph.prototype.wikitext = _03Paragraph; - models.Sentence.prototype.wikitext = _04Sentence; - models.Link.prototype.wikitext = _05Link; - models.Image.prototype.wikitext = image; - models.Infobox.prototype.wikitext = infobox; - models.Table.prototype.wikitext = table; - models.List.prototype.wikitext = list; - models.Reference.prototype.wikitext = reference; + models.Doc.prototype.makeWikitext = _01Doc; + models.Section.prototype.makeWikitext = _02Section; + models.Paragraph.prototype.makeWikitext = _03Paragraph; + models.Sentence.prototype.makeWikitext = _04Sentence; + models.Link.prototype.makeWikitext = _05Link; + models.Image.prototype.makeWikitext = image; + models.Infobox.prototype.makeWikitext = infobox; + models.Template.prototype.makeWikitext = template; + models.Table.prototype.makeWikitext = table; + models.List.prototype.makeWikitext = list; + models.Reference.prototype.makeWikitext = reference; }; var src = plugin; diff --git a/plugins/wikitext/builds/wtf-plugin-wikitext.js.map b/plugins/wikitext/builds/wtf-plugin-wikitext.js.map index 54fada61..c38a519b 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.js.map +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-wikitext.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/image.js","../src/infobox.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n images: true,\n tables: true,\n infoboxes: true,\n categories: true,\n lists: true,\n links: true,\n paragraphs: true\n}\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n\n //if it's a redirect page\n if (this.isRedirect() === true) {\n return `#REDIRECT [[${this.redirectTo().page}]]`\n }\n\n //render infoboxes (up at the top)\n if (options.infoboxes === true) {\n text += this.infoboxes()\n .map((i) => i.wikitext(options))\n .join('\\n')\n }\n\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n let sections = this.sections()\n // sections = sections.filter((s) => s.title() !== 'References')\n text += sections.map((s) => s.wikitext(options)).join('\\n')\n }\n\n // add categories on the bottom\n if (options.categories === true) {\n text += '\\n'\n this.categories().forEach((cat) => (text += `\\n[[Category: ${cat}]]`))\n }\n return text\n}\nmodule.exports = toWiki\n","const defaults = {}\n\nconst doTemplate = function (obj) {\n let data = ''\n let name = obj.template\n Object.keys(obj).forEach((k) => {\n if (k !== 'template') {\n data += ` | ${k} = ${obj[k]}`\n }\n })\n return `{{${name}${data}}} `\n}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n if (this.title()) {\n let side = '=='\n text += `\\n${side} ${this.title()} ${side}\\n`\n }\n // render some templates?\n this.templates().forEach((tmpl) => {\n text += doTemplate(tmpl) + '\\n'\n })\n\n //make a table\n if (options.tables === true) {\n text += this.tables()\n .map((t) => t.wikitext(options))\n .join('\\n')\n }\n\n // make a html bullet-list\n if (options.lists === true) {\n text += this.lists()\n .map((list) => list.text(options))\n .join('\\n')\n }\n text += this.paragraphs()\n .map((p) => {\n return p.wikitext(options)\n })\n .join('\\n')\n\n // render references\n // these will be out of place\n this.references().forEach((ref) => {\n text += ref.wikitext(options) + '\\n'\n })\n\n return text\n}\nmodule.exports = toWiki\n","const defaults = {}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n\n // do images\n this.images().forEach((img) => {\n text += img.wikitext()\n })\n // do lists\n this.lists().forEach((list) => {\n text += list.wikitext()\n })\n // render sentences\n text += this.sentences()\n .map((s) => {\n return s.wikitext(options)\n })\n .join('\\n')\n return text\n}\nmodule.exports = toWiki\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true\n}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = this.text()\n if (options.links === true) {\n this.links().forEach((link) => {\n let str = link.text() || link.page()\n let tag = link.wikitext()\n text = smartReplace(text, str, tag)\n })\n }\n if (options.formatting === true) {\n //support bolds\n this.bold().forEach((str) => {\n let tag = '**' + str + '**'\n text = smartReplace(text, str, tag)\n })\n //do italics\n this.italic().forEach((str) => {\n let tag = '***' + str + '***'\n text = smartReplace(text, str, tag)\n })\n }\n\n return text\n}\nmodule.exports = toWiki\n","// add `[text](href)` to the text\nconst toWiki = function () {\n //if it's an external link, we good\n if (this.site()) {\n if (this.text()) {\n return `[${this.site()}|${this.text()}]`\n }\n return `[${this.site()}]`\n }\n let page = this.page() || ''\n if (this.anchor()) {\n page += `#${this.anchor()}`\n }\n\n let str = this.text() || ''\n if (str && str.toLowerCase() !== page.toLowerCase()) {\n return `[[${page}|${str}]]`\n }\n return `[[${page}]]`\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `[[${this.file()}|thumb`\n let caption = this.data.caption\n if (caption) {\n text += `|${this.data.caption.wikitext()}`\n }\n return text + ']]'\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `{{Infobox ${this._type || ''}\\n`\n Object.keys(this.data).forEach((k) => {\n let val = this.data[k]\n if (val) {\n text += `| ${k} = ${val.wikitext() || ''}\\n`\n }\n })\n text += '}}\\n'\n return text\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let txt = ''\n this.lines().forEach((s) => {\n txt += `* ${s.wikitext()}\\n`\n })\n return txt\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n if (this.data.inline) {\n return `${this.data.inline.wikitext()}`\n }\n let type = this.data.type || 'cite web'\n let data = ''\n Object.keys(this.data).forEach((k) => {\n if (k !== 'template' && k !== 'type') {\n data += ` | ${k} = ${this.data[k]}`\n }\n })\n return `{{${type}${data}}}`\n}\nmodule.exports = toWiki\n","const toWiki = function (options) {\n let rows = this.data\n let wiki = `{| class=\"wikitable\"\\n`\n\n // draw headers\n let headers = Object.keys(rows[0])\n headers = headers.filter((k) => /^col[0-9]/.test(k) !== true)\n if (headers.length > 0) {\n wiki += '|-\\n'\n headers.forEach((k) => {\n wiki += '! ' + k + '\\n'\n })\n }\n //make rows\n rows.forEach((o) => {\n wiki += '|-\\n'\n Object.keys(o).forEach((k) => {\n let val = o[k].wikitext(options)\n wiki += '| ' + val + '\\n'\n })\n })\n wiki += `|}`\n return wiki\n}\nmodule.exports = toWiki\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst image = require('./image')\nconst infobox = require('./infobox')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.wikitext = doc\n models.Section.prototype.wikitext = section\n models.Paragraph.prototype.wikitext = paragraph\n models.Sentence.prototype.wikitext = sentence\n models.Link.prototype.wikitext = link\n models.Image.prototype.wikitext = image\n models.Infobox.prototype.wikitext = infobox\n models.Table.prototype.wikitext = table\n models.List.prototype.wikitext = list\n models.Reference.prototype.wikitext = reference\n}\nmodule.exports = plugin\n"],"names":["defaults","images","tables","infoboxes","categories","lists","links","paragraphs","toWiki","options","Object","assign","text","isRedirect","redirectTo","page","map","i","wikitext","join","sections","sentences","s","forEach","cat","doTemplate","obj","data","name","template","keys","k","title","side","templates","tmpl","t","list","p","references","ref","img","escapeRegExp","string","replace","smartReplace","all","result","String","reg","RegExp","test","link","str","tag","formatting","bold","italic","site","anchor","toLowerCase","file","caption","_type","val","txt","lines","inline","type","rows","wiki","headers","filter","length","o","plugin","models","Doc","prototype","doc","Section","section","Paragraph","paragraph","Sentence","sentence","Link","Image","image","Infobox","infobox","Table","table","List","Reference","reference"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-wikitext.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/image.js","../src/template.js","../src/infobox.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n images: true,\n tables: true,\n templates: true,\n infoboxes: true,\n categories: true,\n lists: true,\n links: true,\n paragraphs: true\n}\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n\n //if it's a redirect page\n if (this.isRedirect() === true) {\n return `#REDIRECT [[${this.redirectTo().page}]]`\n }\n\n //render infoboxes (up at the top)\n if (options.infoboxes === true) {\n text += this.infoboxes()\n .map((i) => i.makeWikitext(options))\n .join('\\n')\n }\n\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n let sections = this.sections()\n text += sections.map((s) => s.makeWikitext(options)).join('\\n')\n }\n\n // add categories on the bottom\n if (options.categories === true) {\n text += '\\n'\n this.categories().forEach((cat) => (text += `\\n[[Category: ${cat}]]`))\n }\n return text\n}\nmodule.exports = toWiki\n","const defaults = {}\n\nconst doTemplate = function (obj) {\n let data = ''\n let name = obj.template\n Object.keys(obj).forEach((k) => {\n if (k !== 'template') {\n data += ` | ${k} = ${obj[k]}`\n }\n })\n return `{{${name}${data}}} `\n}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n if (this.title()) {\n let side = '=='\n text += `\\n${side} ${this.title()} ${side}\\n`\n }\n // render some templates?\n if (options.templates === true) {\n this.templates().forEach((tmpl) => {\n text += doTemplate(tmpl.json()) + '\\n'\n })\n }\n\n //make a table\n if (options.tables === true) {\n text += this.tables()\n .map((t) => t.makeWikitext(options))\n .join('\\n')\n }\n\n // make a html bullet-list\n if (options.lists === true) {\n text += this.lists()\n .map((list) => list.text(options))\n .join('\\n')\n }\n text += this.paragraphs()\n .map((p) => {\n return p.makeWikitext(options)\n })\n .join('\\n')\n\n // render references\n // these will be out of place\n this.references().forEach((ref) => {\n text += ref.makeWikitext(options) + '\\n'\n })\n\n return text\n}\nmodule.exports = toWiki\n","const defaults = {}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n\n // do images\n this.images().forEach((img) => {\n text += img.makeWikitext()\n })\n // do lists\n this.lists().forEach((list) => {\n text += list.makeWikitext()\n })\n // render sentences\n text += this.sentences()\n .map((s) => {\n return s.makeWikitext(options)\n })\n .join('\\n')\n return text\n}\nmodule.exports = toWiki\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true\n}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = this.text()\n if (options.links === true) {\n this.links().forEach((link) => {\n let str = link.text() || link.page()\n let tag = link.makeWikitext()\n text = smartReplace(text, str, tag)\n })\n }\n if (options.formatting === true) {\n //support bolds\n this.bold().forEach((str) => {\n let tag = '**' + str + '**'\n text = smartReplace(text, str, tag)\n })\n //do italics\n this.italic().forEach((str) => {\n let tag = '***' + str + '***'\n text = smartReplace(text, str, tag)\n })\n }\n\n return text\n}\nmodule.exports = toWiki\n","// add `[text](href)` to the text\nconst toWiki = function () {\n //if it's an external link, we good\n if (this.site()) {\n if (this.text()) {\n return `[${this.site()}|${this.text()}]`\n }\n return `[${this.site()}]`\n }\n let page = this.page() || ''\n if (this.anchor()) {\n page += `#${this.anchor()}`\n }\n\n let str = this.text() || ''\n if (str && str.toLowerCase() !== page.toLowerCase()) {\n return `[[${page}|${str}]]`\n }\n return `[[${page}]]`\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `[[${this.file()}|thumb`\n let caption = this.data.caption\n if (caption) {\n text += `|${this.data.caption.wikitext()}`\n }\n return text + ']]'\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `{{${this.data.template || ''}`\n Object.keys(this.data).forEach((k) => {\n if (k === 'template') {\n return\n }\n let val = this.data[k]\n if (val) {\n text += `| ${k} = ${val || ''}`\n }\n })\n text += '}}\\n'\n return text\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `{{Infobox ${this._type || ''}\\n`\n Object.keys(this.data).forEach((k) => {\n let val = this.data[k]\n if (val) {\n text += `| ${k} = ${val.wikitext() || ''}\\n`\n }\n })\n text += '}}\\n'\n return text\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let txt = ''\n this.lines().forEach((s) => {\n txt += `* ${s.wikitext()}\\n`\n })\n return txt\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n if (this.data.inline) {\n return `${this.data.inline.wikitext()}`\n }\n let type = this.data.type || 'cite web'\n let data = ''\n Object.keys(this.data).forEach((k) => {\n if (k !== 'template' && k !== 'type') {\n data += ` | ${k} = ${this.data[k]}`\n }\n })\n return `{{${type}${data}}}`\n}\nmodule.exports = toWiki\n","const toWiki = function (options) {\n let rows = this.data\n let wiki = `{| class=\"wikitable\"\\n`\n\n // draw headers\n let headers = Object.keys(rows[0])\n headers = headers.filter((k) => /^col[0-9]/.test(k) !== true)\n if (headers.length > 0) {\n wiki += '|-\\n'\n headers.forEach((k) => {\n wiki += '! ' + k + '\\n'\n })\n }\n //make rows\n rows.forEach((o) => {\n wiki += '|-\\n'\n Object.keys(o).forEach((k) => {\n let val = o[k].wikitext(options)\n wiki += '| ' + val + '\\n'\n })\n })\n wiki += `|}`\n return wiki\n}\nmodule.exports = toWiki\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst image = require('./image')\nconst template = require('./template')\nconst infobox = require('./infobox')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.makeWikitext = doc\n models.Section.prototype.makeWikitext = section\n models.Paragraph.prototype.makeWikitext = paragraph\n models.Sentence.prototype.makeWikitext = sentence\n models.Link.prototype.makeWikitext = link\n models.Image.prototype.makeWikitext = image\n models.Infobox.prototype.makeWikitext = infobox\n models.Template.prototype.makeWikitext = template\n models.Table.prototype.makeWikitext = table\n models.List.prototype.makeWikitext = list\n models.Reference.prototype.makeWikitext = reference\n}\nmodule.exports = plugin\n"],"names":["defaults","images","tables","templates","infoboxes","categories","lists","links","paragraphs","toWiki","options","Object","assign","text","isRedirect","redirectTo","page","map","i","makeWikitext","join","sections","sentences","s","forEach","cat","doTemplate","obj","data","name","template","keys","k","title","side","tmpl","json","t","list","p","references","ref","img","escapeRegExp","string","replace","smartReplace","all","result","String","reg","RegExp","test","link","str","tag","formatting","bold","italic","site","anchor","toLowerCase","file","caption","wikitext","val","_type","txt","lines","inline","type","rows","wiki","headers","filter","length","o","plugin","models","Doc","prototype","doc","Section","section","Paragraph","paragraph","Sentence","sentence","Link","Image","image","Infobox","infobox","Template","Table","table","List","Reference","reference"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/wikitext/builds/wtf-plugin-wikitext.min.js b/plugins/wikitext/builds/wtf-plugin-wikitext.min.js index 95948491..fe7e7347 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.min.js +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfWikitext=e()}(this,(function(){"use strict";const t={images:!0,tables:!0,infoboxes:!0,categories:!0,lists:!0,links:!0,paragraphs:!0};var e=function(e){e=e||{},e=Object.assign({},t,e);let i="";if(!0===this.isRedirect())return`#REDIRECT [[${this.redirectTo().page}]]`;if(!0===e.infoboxes&&(i+=this.infoboxes().map((t=>t.wikitext(e))).join("\n")),!0===e.sections||!0===e.paragraphs||!0===e.sentences){let t=this.sections();i+=t.map((t=>t.wikitext(e))).join("\n")}return!0===e.categories&&(i+="\n",this.categories().forEach((t=>i+=`\n[[Category: ${t}]]`))),i};const i={};var n=function(t){t=t||{},t=Object.assign({},i,t);let e="";if(this.title()){let t="==";e+=`\n${t} ${this.title()} ${t}\n`}return this.templates().forEach((t=>{e+=function(t){let e="",i=t.template;return Object.keys(t).forEach((i=>{"template"!==i&&(e+=` | ${i} = ${t[i]}`)})),`{{${i}${e}}} `}(t)+"\n"})),!0===t.tables&&(e+=this.tables().map((e=>e.wikitext(t))).join("\n")),!0===t.lists&&(e+=this.lists().map((e=>e.text(t))).join("\n")),e+=this.paragraphs().map((e=>e.wikitext(t))).join("\n"),this.references().forEach((i=>{e+=i.wikitext(t)+"\n"})),e};const s={};var r=function(t){t=t||{},t=Object.assign({},s,t);let e="";return this.images().forEach((t=>{e+=t.wikitext()})),this.lists().forEach((t=>{e+=t.wikitext()})),e+=this.sentences().map((e=>e.wikitext(t))).join("\n"),e};var o=function(t,e,i){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");let n=new RegExp("\\b"+e+"\\b");return t=!0===n.test(t)?t.replace(n,i):t.replace(e,i)};const a={links:!0};var c=function(t){t=t||{},t=Object.assign({},a,t);let e=this.text();return!0===t.links&&this.links().forEach((t=>{let i=t.text()||t.page(),n=t.wikitext();e=o(e,i,n)})),!0===t.formatting&&(this.bold().forEach((t=>{e=o(e,t,"**"+t+"**")})),this.italic().forEach((t=>{e=o(e,t,"***"+t+"***")}))),e};var h=function(){if(this.site())return this.text()?`[${this.site()}|${this.text()}]`:`[${this.site()}]`;let t=this.page()||"";this.anchor()&&(t+="#"+this.anchor());let e=this.text()||"";return e&&e.toLowerCase()!==t.toLowerCase()?`[[${t}|${e}]]`:`[[${t}]]`};var f=function(){let t=`[[${this.file()}|thumb`;return this.data.caption&&(t+="|"+this.data.caption.wikitext()),t+"]]"};var l=function(){let t=`{{Infobox ${this._type||""}\n`;return Object.keys(this.data).forEach((e=>{let i=this.data[e];i&&(t+=`| ${e} = ${i.wikitext()||""}\n`)})),t+="}}\n",t};var p=function(){let t="";return this.lines().forEach((e=>{t+=`* ${e.wikitext()}\n`})),t};var u=function(){if(this.data.inline)return`${this.data.inline.wikitext()}`;let t=this.data.type||"cite web",e="";return Object.keys(this.data).forEach((t=>{"template"!==t&&"type"!==t&&(e+=` | ${t} = ${this.data[t]}`)})),`{{${t}${e}}}`};var x=function(t){let e=this.data,i='{| class="wikitable"\n',n=Object.keys(e[0]);return n=n.filter((t=>!0!==/^col[0-9]/.test(t))),n.length>0&&(i+="|-\n",n.forEach((t=>{i+="! "+t+"\n"}))),e.forEach((e=>{i+="|-\n",Object.keys(e).forEach((n=>{let s=e[n].wikitext(t);i+="| "+s+"\n"}))})),i+="|}",i};return function(t){t.Doc.prototype.wikitext=e,t.Section.prototype.wikitext=n,t.Paragraph.prototype.wikitext=r,t.Sentence.prototype.wikitext=c,t.Link.prototype.wikitext=h,t.Image.prototype.wikitext=f,t.Infobox.prototype.wikitext=l,t.Table.prototype.wikitext=x,t.List.prototype.wikitext=p,t.Reference.prototype.wikitext=u}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfWikitext=e()}(this,(function(){"use strict";const t={images:!0,tables:!0,templates:!0,infoboxes:!0,categories:!0,lists:!0,links:!0,paragraphs:!0};var e=function(e){e=e||{},e=Object.assign({},t,e);let i="";if(!0===this.isRedirect())return`#REDIRECT [[${this.redirectTo().page}]]`;if(!0===e.infoboxes&&(i+=this.infoboxes().map((t=>t.makeWikitext(e))).join("\n")),!0===e.sections||!0===e.paragraphs||!0===e.sentences){let t=this.sections();i+=t.map((t=>t.makeWikitext(e))).join("\n")}return!0===e.categories&&(i+="\n",this.categories().forEach((t=>i+=`\n[[Category: ${t}]]`))),i};const i={};var a=function(t){t=t||{},t=Object.assign({},i,t);let e="";if(this.title()){let t="==";e+=`\n${t} ${this.title()} ${t}\n`}return!0===t.templates&&this.templates().forEach((t=>{e+=function(t){let e="",i=t.template;return Object.keys(t).forEach((i=>{"template"!==i&&(e+=` | ${i} = ${t[i]}`)})),`{{${i}${e}}} `}(t.json())+"\n"})),!0===t.tables&&(e+=this.tables().map((e=>e.makeWikitext(t))).join("\n")),!0===t.lists&&(e+=this.lists().map((e=>e.text(t))).join("\n")),e+=this.paragraphs().map((e=>e.makeWikitext(t))).join("\n"),this.references().forEach((i=>{e+=i.makeWikitext(t)+"\n"})),e};const n={};var s=function(t){t=t||{},t=Object.assign({},n,t);let e="";return this.images().forEach((t=>{e+=t.makeWikitext()})),this.lists().forEach((t=>{e+=t.makeWikitext()})),e+=this.sentences().map((e=>e.makeWikitext(t))).join("\n"),e};var r=function(t,e,i){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");let a=new RegExp("\\b"+e+"\\b");return t=!0===a.test(t)?t.replace(a,i):t.replace(e,i)};const o={links:!0};var c=function(t){t=t||{},t=Object.assign({},o,t);let e=this.text();return!0===t.links&&this.links().forEach((t=>{let i=t.text()||t.page(),a=t.makeWikitext();e=r(e,i,a)})),!0===t.formatting&&(this.bold().forEach((t=>{e=r(e,t,"**"+t+"**")})),this.italic().forEach((t=>{e=r(e,t,"***"+t+"***")}))),e};var h=function(){if(this.site())return this.text()?`[${this.site()}|${this.text()}]`:`[${this.site()}]`;let t=this.page()||"";this.anchor()&&(t+="#"+this.anchor());let e=this.text()||"";return e&&e.toLowerCase()!==t.toLowerCase()?`[[${t}|${e}]]`:`[[${t}]]`};var f=function(){let t=`[[${this.file()}|thumb`;return this.data.caption&&(t+="|"+this.data.caption.wikitext()),t+"]]"};var l=function(){let t="{{"+(this.data.template||"");return Object.keys(this.data).forEach((e=>{if("template"===e)return;let i=this.data[e];i&&(t+=`| ${e} = ${i||""}`)})),t+="}}\n",t};var p=function(){let t=`{{Infobox ${this._type||""}\n`;return Object.keys(this.data).forEach((e=>{let i=this.data[e];i&&(t+=`| ${e} = ${i.wikitext()||""}\n`)})),t+="}}\n",t};var k=function(){let t="";return this.lines().forEach((e=>{t+=`* ${e.wikitext()}\n`})),t};var m=function(){if(this.data.inline)return`${this.data.inline.wikitext()}`;let t=this.data.type||"cite web",e="";return Object.keys(this.data).forEach((t=>{"template"!==t&&"type"!==t&&(e+=` | ${t} = ${this.data[t]}`)})),`{{${t}${e}}}`};var u=function(t){let e=this.data,i='{| class="wikitable"\n',a=Object.keys(e[0]);return a=a.filter((t=>!0!==/^col[0-9]/.test(t))),a.length>0&&(i+="|-\n",a.forEach((t=>{i+="! "+t+"\n"}))),e.forEach((e=>{i+="|-\n",Object.keys(e).forEach((a=>{let n=e[a].wikitext(t);i+="| "+n+"\n"}))})),i+="|}",i};return function(t){t.Doc.prototype.makeWikitext=e,t.Section.prototype.makeWikitext=a,t.Paragraph.prototype.makeWikitext=s,t.Sentence.prototype.makeWikitext=c,t.Link.prototype.makeWikitext=h,t.Image.prototype.makeWikitext=f,t.Infobox.prototype.makeWikitext=p,t.Template.prototype.makeWikitext=l,t.Table.prototype.makeWikitext=u,t.List.prototype.makeWikitext=k,t.Reference.prototype.makeWikitext=m}})); diff --git a/plugins/wikitext/builds/wtf-plugin-wikitext.mjs b/plugins/wikitext/builds/wtf-plugin-wikitext.mjs index 7bc56729..9403cc6e 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.mjs +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.mjs @@ -1,7 +1,8 @@ -/* wtf-plugin-wikitext 0.2.0 MIT */ +/* wtf-plugin-wikitext 1.1.0 MIT */ const defaults$3 = { images: true, tables: true, + templates: true, infoboxes: true, categories: true, lists: true, @@ -9,7 +10,7 @@ const defaults$3 = { paragraphs: true }; -const toWiki$9 = function (options) { +const toWiki$a = function (options) { options = options || {}; options = Object.assign({}, defaults$3, options); let text = ''; //if it's a redirect page @@ -20,14 +21,13 @@ const toWiki$9 = function (options) { if (options.infoboxes === true) { - text += this.infoboxes().map(i => i.wikitext(options)).join('\n'); + text += this.infoboxes().map(i => i.makeWikitext(options)).join('\n'); } //render each section if (options.sections === true || options.paragraphs === true || options.sentences === true) { - let sections = this.sections(); // sections = sections.filter((s) => s.title() !== 'References') - - text += sections.map(s => s.wikitext(options)).join('\n'); + let sections = this.sections(); + text += sections.map(s => s.makeWikitext(options)).join('\n'); } // add categories on the bottom @@ -39,7 +39,7 @@ const toWiki$9 = function (options) { return text; }; -var _01Doc = toWiki$9; +var _01Doc = toWiki$a; const defaults$2 = {}; @@ -54,7 +54,7 @@ const doTemplate = function (obj) { return `{{${name}${data}}} `; }; -const toWiki$8 = function (options) { +const toWiki$9 = function (options) { options = options || {}; options = Object.assign({}, defaults$2, options); let text = ''; @@ -65,12 +65,15 @@ const toWiki$8 = function (options) { } // render some templates? - this.templates().forEach(tmpl => { - text += doTemplate(tmpl) + '\n'; - }); //make a table + if (options.templates === true) { + this.templates().forEach(tmpl => { + text += doTemplate(tmpl.json()) + '\n'; + }); + } //make a table + if (options.tables === true) { - text += this.tables().map(t => t.wikitext(options)).join('\n'); + text += this.tables().map(t => t.makeWikitext(options)).join('\n'); } // make a html bullet-list @@ -79,40 +82,40 @@ const toWiki$8 = function (options) { } text += this.paragraphs().map(p => { - return p.wikitext(options); + return p.makeWikitext(options); }).join('\n'); // render references // these will be out of place this.references().forEach(ref => { - text += ref.wikitext(options) + '\n'; + text += ref.makeWikitext(options) + '\n'; }); return text; }; -var _02Section = toWiki$8; +var _02Section = toWiki$9; const defaults$1 = {}; -const toWiki$7 = function (options) { +const toWiki$8 = function (options) { options = options || {}; options = Object.assign({}, defaults$1, options); let text = ''; // do images this.images().forEach(img => { - text += img.wikitext(); + text += img.makeWikitext(); }); // do lists this.lists().forEach(list => { - text += list.wikitext(); + text += list.makeWikitext(); }); // render sentences text += this.sentences().map(s => { - return s.wikitext(options); + return s.makeWikitext(options); }).join('\n'); return text; }; -var _03Paragraph = toWiki$7; +var _03Paragraph = toWiki$8; //escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(string) { @@ -150,7 +153,7 @@ const defaults = { links: true }; -const toWiki$6 = function (options) { +const toWiki$7 = function (options) { options = options || {}; options = Object.assign({}, defaults, options); let text = this.text(); @@ -158,7 +161,7 @@ const toWiki$6 = function (options) { if (options.links === true) { this.links().forEach(link => { let str = link.text() || link.page(); - let tag = link.wikitext(); + let tag = link.makeWikitext(); text = smartReplace_1(text, str, tag); }); } @@ -179,10 +182,10 @@ const toWiki$6 = function (options) { return text; }; -var _04Sentence = toWiki$6; +var _04Sentence = toWiki$7; // add `[text](href)` to the text -const toWiki$5 = function () { +const toWiki$6 = function () { //if it's an external link, we good if (this.site()) { if (this.text()) { @@ -207,9 +210,9 @@ const toWiki$5 = function () { return `[[${page}]]`; }; -var _05Link = toWiki$5; +var _05Link = toWiki$6; -const toWiki$4 = function () { +const toWiki$5 = function () { let text = `[[${this.file()}|thumb`; let caption = this.data.caption; @@ -220,7 +223,26 @@ const toWiki$4 = function () { return text + ']]'; }; -var image = toWiki$4; +var image = toWiki$5; + +const toWiki$4 = function () { + let text = `{{${this.data.template || ''}`; + Object.keys(this.data).forEach(k => { + if (k === 'template') { + return; + } + + let val = this.data[k]; + + if (val) { + text += `| ${k} = ${val || ''}`; + } + }); + text += '}}\n'; + return text; +}; + +var template = toWiki$4; const toWiki$3 = function () { let text = `{{Infobox ${this._type || ''}\n`; @@ -293,16 +315,17 @@ const toWiki = function (options) { var table = toWiki; const plugin = function (models) { - models.Doc.prototype.wikitext = _01Doc; - models.Section.prototype.wikitext = _02Section; - models.Paragraph.prototype.wikitext = _03Paragraph; - models.Sentence.prototype.wikitext = _04Sentence; - models.Link.prototype.wikitext = _05Link; - models.Image.prototype.wikitext = image; - models.Infobox.prototype.wikitext = infobox; - models.Table.prototype.wikitext = table; - models.List.prototype.wikitext = list; - models.Reference.prototype.wikitext = reference; + models.Doc.prototype.makeWikitext = _01Doc; + models.Section.prototype.makeWikitext = _02Section; + models.Paragraph.prototype.makeWikitext = _03Paragraph; + models.Sentence.prototype.makeWikitext = _04Sentence; + models.Link.prototype.makeWikitext = _05Link; + models.Image.prototype.makeWikitext = image; + models.Infobox.prototype.makeWikitext = infobox; + models.Template.prototype.makeWikitext = template; + models.Table.prototype.makeWikitext = table; + models.List.prototype.makeWikitext = list; + models.Reference.prototype.makeWikitext = reference; }; var src = plugin; diff --git a/plugins/wikitext/package.json b/plugins/wikitext/package.json index 55035ada..00488c02 100644 --- a/plugins/wikitext/package.json +++ b/plugins/wikitext/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-wikitext", "description": "wikitext output plugin for wtf_wikipedia", - "version": "1.0.0", + "version": "1.1.0", "main": "./builds/wtf-plugin-wikitext.js", "unpkg": "./builds/wtf-plugin-wikitext.min.js", "module": "./builds/wtf-plugin-wikitext.mjs", diff --git a/scratch.js b/scratch.js index 28dc4fb7..22586731 100644 --- a/scratch.js +++ b/scratch.js @@ -6,100 +6,9 @@ wtf.extend(require('./plugins/wikitext/src')) // let doc = wtf(str) // console.log(doc.templates(1)[0].json()) -// let str = `{{Infobox country -// | common_name = United Kingdom -// | name = {{collapsible list -// | title = hello -// | {{Infobox -// | data1={{lang|foo}} -// | data2=bar -// }} -// }} -// }} -// ` -// let obj = wtf(str).infobox(0).json() -// console.log(obj) - -let str = ` {{Infobox settlement - |official_name = Dollar Point, California - |settlement_type = [[census-designated place]] - |image_skyline = - |imagesize = - |image_caption = - |image_seal = - |image_map = Placer_County_California_Incorporated_and_Unincorporated_areas_Dollar_Point_Highlighted.svg - |mapsize = 250x200px - |map_caption = Location in [[Placer County, California|Placer County]] and the state of [[California]] - |image_map1 = - |mapsize1 = - |map_caption1 = - |pushpin_map = USA - |pushpin_relief = yes - | pushpin_map_caption = Location in the United States - |subdivision_type = [[List of countries|Country]] - |subdivision_name = {{USA}} - |subdivision_type1 = [[Political divisions of the United States|State]] - |subdivision_name1 = {{flag|California}} - |subdivision_type2 = [[List of counties in California|County]] - |subdivision_name2 = [[Placer County, California|Placer]] - |government_type = - |leader_title = N/A - |leader_name = - |leader_title1 = [[California State Legislature|State Senate]] - |leader_name1 = [[Dave Cox]] ([[California Republican Party|R]]) - |leader_title2 = [[California State Assembly|State Assembly]] - |leader_name2 = [[Ted Gaines]] (R) - |leader_title3 = [[California's 4th congressional district|U. S. Congress]] - |leader_name3 = {{Representative|cacd|4|fmt=usleader}}{{Cite GovTrack|CA|4|accessdate=March 3, 2013}} - |established_date = - - - |area_magnitude = - | unit_pref = US - | area_footnotes = [http://www.census.gov/geo/www/gazetteer/files/Gaz_places_national.txt U.S. Census] {{webarchive |url=http://www.webcitation.org/699nOulzi?url=http://www.census.gov/geo/www/gazetteer/files/Gaz_places_national.txt |date=2012-07-14 }} - | area_total_sq_mi = 1.634 - | area_land_sq_mi = 1.634 - | area_water_sq_mi = 0 - | area_total_km2 = 4.232 - | area_land_km2 = 4.232 - | area_water_km2 = 0 - | area_water_percent = 0 - | area_note = - - |elevation_ft = 6483 - |elevation_m = 1976 - |population_as_of = [[2010 United States Census|2010]] - |population_footnotes = - |population_total = 1215 - |population_metro = - |population_density_km2 = auto - |population_density_sq_mi = - |timezone = [[Pacific Time Zone|PST]] - |utc_offset = -8 - |coordinates = {{coord|39|11|19|N|120|6|32|W|region:US_type:city|display=inline,title}} - |timezone_DST = PDT - |utc_offset_DST = -7 - |postal_code_type = [[ZIP code]] - |postal_code = 96145 - |area_code = [[Area code 530|530]] - |blank_name = [[Federal Information Processing Standard|FIPS code]] - |blank_info = 06-19455 - |blank1_name = [[Geographic Names Information System|GNIS]] feature IDs - |blank1_info = 1723422; 2408680 - |footnotes = - |website = - }} - '''Dollar Point''' is a [[census-designated place]] (CDP) in [[Placer County, California|Placer County]], [[California]], [[United States]], along the northwest shore of [[Lake Tahoe]]. It is part of the [[Sacramento, California|Sacramento]]–[[Arden-Arcade, California|Arden-Arcade]]–[[Roseville, California|Roseville]] [[Sacramento metropolitan area|Metropolitan Statistical Area]]. The population was 1,215 at the [[2010 United States Census|2010 census]] down from 1,539 at the 2000 census. - - Dollar Point has been noted for its [[place names considered unusual|unusual place name]].{{cite book|last=Thompson|first=George E.|title=You Live Where?: Interesting and Unusual Facts about where We Live|url=https://books.google.com/books?id=0Ia7Rga26OkC&pg=PA10|date=1 July 2009|publisher=iUniverse|isbn=978-1-4401-3421-0|page=10}} - - ==History== - In 1884 the Glenbrook Mills logged 337 acres on a point on Lake Tahoe. In 1898 [[Lake Tahoe Railway and Transportation Company]] (D.L. Bliss) was formed and built {{Convert|16|miles|km}} of narrow gauge track into the area that became known as Dollar Point. [[Southern Pacific Transportation Company|Southern Pacific]] leased the track rights in 1925 and converted the tracks to [[Standard gauge]] in 1926, bought the property in 1933, and abandoned the tracks in 1943. In 1916 Lora Josephine Knight bought the point. The land was originally part of an area called Chinquapin by the [[Washoe people|Washoe Indians]]. [[Robert Dollar]] purchased many properties such as the 1,436 acres in [[Rossmoor, Walnut Creek, California|Rossmoor, California]] and in 1927 he purchased the area that had been called "Old Lousy", "the lousy point", and Observatory Point, from Lora Knight. She became well known for building [[Vikingsholm]] Castle in 1929. She and her husband were also primary financial backers of [[Charles Lindbergh]]'s non-stop solo flight across the Atlantic. - - Dollar Point is located within the [[Sierra Nevada (U.S.)|Sierra Nevada Mountain Range]] on the Northwest corner of Lake Tahoe. [[Carnelian Bay, California|Carnelian Bay]] is on the north side, [[Tahoe City, California|Tahoe City]] to the south, and [[Tahoe National Forest]] and [[Burton Creek State Park]] extends along the entire east side. [[California State Route 28|State Route 28]] is the only major highway access to the area and runs the length of the northwest boundary of Dollar Point. Dollar also purchased a react of land to the east of SR 28 that is now called Chinquapin development.{{cite web | url=http://www.dollarpoint.org/community-info/dollar-point-history/ | title=A Brief History of Dollar Point | publisher=Dollar Point Association | accessdate=March 4, 2015}} - - ==Geography== - Dollar Point is located at {{coord|39|11|19|N|120|6|32|W|type:city}} (39.188639, -120.108848).{{cite web|url=http://www.census.gov/geo/www/gazetteer/gazette.html|publisher=[[United States Census Bureau]]|accessdate=2011-04-23|date=2011-02-12|title=US Gazetteer files: 2010, 2000, and 1990}} - ` -let obj = wtf(str).coordinate(13) +let str = `{{Infobox country +| common_name = United Kingdom +}} +` +let obj = wtf(str).infobox(0).json() console.log(obj) diff --git a/src/_version.js b/src/_version.js index 0f240653..cf988eff 100644 --- a/src/_version.js +++ b/src/_version.js @@ -1 +1 @@ -module.exports = '8.5.1' \ No newline at end of file +module.exports = '9.0.0' \ No newline at end of file From fb939c2fe6e71059aa4feff2422250140f15258a Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 13:35:16 -0400 Subject: [PATCH 115/117] fix typescript, docs for new release --- README.md | 52 ++++++++++++++---------- changelog.md | 15 +++++-- types/index.d.ts | 101 +++++++++++++++++++++++++++++------------------ 3 files changed, 105 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index c35fc205..41d4c94c 100644 --- a/README.md +++ b/README.md @@ -481,11 +481,11 @@ wtf - **.isRedirect()** - if the page is just a redirect to another page - **.redirectTo()** - the page this redirects to - **.isDisambiguation()** - is this a placeholder page to direct you to one-of-many possible pages -- **.categories()** - +- **.categories()** - return all categories of the document - **.sections()** - return a list of the Document's sections - **.paragraphs()** - return a list of Paragraphs, in all sections - **.sentences()** - return a list of all sentences in the document -- **.images()** - +- **.images()** - return all images found in the document - **.links()** - return a list of all links, in all parts of the document - **.lists()** - sections in a page where each line begins with a bullet point - **.tables()** - return a list of all structured tables in the document @@ -495,6 +495,7 @@ wtf - **.coordinates()** - geo-locations that appear on the page - **.text()** - plaintext, human-readable output for the page - **.json()** - a 'stringifyable' output of the page's main data +- **.wikitext()** - original wiki markup ### Section @@ -503,12 +504,12 @@ wtf - **.indentation()** - how many steps deep into the table of contents it is - **.sentences()** - return a list of sentences in this section - **.paragraphs()** - return a list of paragraphs in this section -- **.links()** - -- **.tables()** - -- **.templates()** - -- **.infoboxes()** - -- **.coordinates()** - -- **.lists()** - +- **.links()** - list of all links, in all paragraphs and templates +- **.tables()** - list of all html tables +- **.templates()** - list of all templates in this section +- **.infoboxes()** - list of all infoboxes found in this section +- **.coordinates()** - list of all coordinate templates found in this section +- **.lists()** - list of all lists in this section - **.interwiki()** - any links to other language wikis - **.images()** - return a list of any images in this section - **.references()** - return a list of 'citations' in this section @@ -517,26 +518,29 @@ wtf - **.lastSibling()** - a section before this one, under the current parent: eg. 1930s → 1920s - **.children()** - any sections more specific than this one: eg. History → [PreHistory, 1920s, 1930s] - **.parent()** - the section, broader than this one: eg. 1920s → History -- **.text()** - -- **.json()** - +- **.text()** - readable plaintext for this section +- **.json()** - return all section data +- **.wikitext()** - original wiki markup ### Paragraph -- **.sentences()** - -- **.references()** - -- **.lists()** - -- **.images()** - -- **.links()** - -- **.interwiki()** - +- **.sentences()** - return a list of sentence objects in this paragraph +- **.references()** - any citations, or references in all sentences +- **.lists()** - any lists found in this paragraph +- **.images()** - any images found in this paragraph +- **.links()** - list of all links in all sentences +- **.interwiki()** - any links to other language wikis - **.text()** - generate readable plaintext for this paragraph - **.json()** - generate some generic data for this paragraph in JSON format +- **.wikitext()** - original wiki markup ### Sentence -- **.links()** - -- **.bolds()** - -- **.italics()** - -- **.json()** - +- **.links()** - list of all links +- **.bolds()** - list of all bold texts +- **.italics()** - list of all italic formatted text +- **.json()** - return all sentence data +- **.wikitext()** - original wiki markup ### Image @@ -546,21 +550,24 @@ wtf - **.format()** - get file format (e.g. `jpg`) - **.json()** - return some generic metadata for this image - **.text()** - does nothing +- **.wikitext()** - original wiki markup ### Template - **.text()** - does this template generate any readable plaintext? - **.json()** - get all the data for this template +- **.wikitext()** - original wiki markup ### Infobox -- **.links()** - +- **.links()** - any internal or external links in this infobox - **.keyValue()** - generate simple key:value strings from this infobox - **.image()** - grab the main image from this infobox - **.get()** - lookup properties from their key - **.template()** - which infobox, eg 'Infobox Person' - **.text()** - generate readable plaintext for this infobox - **.json()** - generate some generic 'stringifyable' data for this infobox +- **.wikitext()** - original wiki markup ### List @@ -568,6 +575,7 @@ wtf - **.links()** - get all links mentioned in this list - **.text()** - generate readable plaintext for this list - **.json()** - generate some generic easily-parsable data for this list +- **.wikitext()** - original wiki markup ### Reference @@ -575,6 +583,7 @@ wtf - **.links()** - get any links mentioned in this reference - **.text()** - returns nothing - **.json()** - generate some generic metadata data for this reference +- **.wikitext()** - original wiki markup ### Table @@ -582,6 +591,7 @@ wtf - **.keyValue()** - generate a simple list of key:value objects for this table - **.text()** - returns nothing - **.json()** - generate some useful metadata data for this table +- **.wikitext()** - original wiki markup
diff --git a/changelog.md b/changelog.md index 1afafa57..00c85ed0 100644 --- a/changelog.md +++ b/changelog.md @@ -6,11 +6,18 @@ #### 9.0.0 -big cleanup of .fetch() (thanks wouter!), 'parse' param for templates. +Tldr: + +- `.templates()` now return Template objects, instead of json. +- cool new http library for `.fetch()` +- custom templates recieve pre-parsed json +- more development of plugins + +detail: - **[breaking]** - .templates() now returns Template objects, like other methods (call .json()) -- **[breaking]** - change interpretation of reversed params in .fetch() method -- **[breaking]** - change params to new templates added by plugins +- **[breaking]** - change interpretation of reversed params in .fetch() method (thanks wouter!) +- **[breaking]** - change params for custom templates - **[breaking]** - move .random() and .category() to plugin-api - **[breaking]** - always return an array for plural methods, even with number param, like .links(3) - **[possibly-breaking]** - cleanup null|undefined responses from methods @@ -20,12 +27,12 @@ big cleanup of .fetch() (thanks wouter!), 'parse' param for templates. - **[change]** - move wiktionary templates to `wtf-plugin-wiktionary` - **[change]** - Link.text() now returns page - **[change]** - improvements to 'soft' `isDisambiguation` detection +- **[change]** - deprecate wtf-plugin-category (move to wtf-plugin-api) - **[new]** - api plugin - **[new]** - disambig plugin - **[new]** - person plugin - **[new]** - Table.get() method - **[new]** - set new infoboxes using .extend() -- deprecate wtf-plugin-category (move to wtf-plugin-api) - plugin-api 0.0.1 - plugin-classify 1.0.0 diff --git a/types/index.d.ts b/types/index.d.ts index bd3482ea..0b9310a7 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -66,29 +66,29 @@ declare module wtf { isDisambig(): boolean /** fetch a list of this page's categories */ - categories(): string[] + categories(clue?: number): string[] /** fetch the first or nth category */ category(clue?: number): string /**return a list, or given-index of the Document's sections */ - sections(): Section[] + sections(clue?: number): Section[] /** fetch the nth section */ sections(clue?: string): Section[] /** fetch the first Section */ section(clue?: number | string): Section /**return a list, or given-index of Paragraphs, in all sections */ - paragraphs(): Paragraph[] + paragraphs(clue?: number): Paragraph[] /**grab the first paragraph */ paragraph(n?: number): Paragraph /** list of all sentences in the document*/ - sentences(): Sentence[] + sentences(clue?: number): Sentence[] /** return the first sentence in the document*/ sentence(n?: number): Sentence /** return all images in the document */ - images(): Image[] + images(clue?: number): Image[] /** return the first image in the document */ image(n?: number): Image @@ -101,16 +101,16 @@ declare module wtf { interwiki(clue?: number): object /**sections in a page where each line begins with a bullet point */ - lists(): List[] + lists(clue?: number): List[] lists(n?: number): List /**list of all structured tables in the document */ - tables(): Table[] + tables(clue?: number): Table[] table(n?: number): Table /**list any type of structured-data elements, typically wrapped in like {{this}} */ - templates(clue?: string): object[] - template(clue?: number): object + templates(clue?: string): Template[] + template(clue?: number): Template /**list of 'citations' in the document */ references(clue?: string): Reference[] @@ -126,14 +126,15 @@ declare module wtf { coordinate(clue?: string|number): object /**specific type of template, that appear on the top-right of the page */ - infoboxes(): Infobox[] + infoboxes(clue?: number): Infobox[] infobox(clue?: number): Infobox /**plaintext, human-readable output for the page */ text(options?: object): string /**a 'stringifyable' output of the page's main data */ json(options?: object): object - + /**original markup text */ + wikitext(): string /** helper information for the document */ debug(): Document } @@ -151,36 +152,36 @@ declare module wtf { /**how many steps deep into the table of contents it is */ indentation(): number - sentences(): Sentence[] + sentences(clue?: number): Sentence[] sentence(n: number): Sentence - paragraphs(): Paragraph[] + paragraphs(clue?: number): Paragraph[] paragraph(n?: number): Paragraph links(n?: string): object[] link(n?: number): object - tables(): Table[] + tables(clue?: number): Table[] table(n?: number): Table - templates(clue?: string): object[] - template(clue?: number): object + templates(clue?: string): Template[] + template(clue?: number): Template - infoboxes(): Infobox[] + infoboxes(clue?: number): Infobox[] infoboxe(clue?: number): Infobox - coordinates(): object[] + coordinates(clue?: number): object[] coordinate(clue?: number): object - lists(): List[] + lists(clue?: number): List[] list(clue?: number): List /**any links to other language wikis */ - interwiki(): object[] + interwiki(clue?: number): object[] interwikis(num: number): object /**return a list of any images in this section */ - images(): Image[] + images(clue?: number): Image[] image(clue?: number): Image references(clue?: string): Reference[] @@ -215,10 +216,12 @@ declare module wtf { section(n?: number): Section /**the section, broader than this one: eg. 1920s → History */ parent(): null | Section - + /** readable plaintext */ text(options?: object): string - + /** all parsed data */ json(options?: object): object + /**original markup text */ + wikitext(): string } class Infobox { @@ -242,9 +245,22 @@ declare module wtf { /** Alias of keyValue() */ data(): object + /** readable plaintext */ text(): string + /** all parsed data */ + json(options?: object): object + /** original wiki markup */ + wikitext(): string + } + class Template { + private data: object + /** readable plaintext */ + text(): string + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } class Table { @@ -259,10 +275,12 @@ declare module wtf { // Alais of keyValue keyval(options?: object): object - + /** readable plaintext */ text(): string - + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } class Reference { @@ -273,10 +291,12 @@ declare module wtf { links(n: number): object links(n?: string): object[] - + /** readable plaintext */ text(): string - + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } class Paragraph { @@ -304,10 +324,12 @@ declare module wtf { interwiki(clue?: number): object interwiki(): object[] - + /** readable plaintext */ text(options?: object): string - + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } class Image { @@ -332,10 +354,12 @@ declare module wtf { thumb(size?: number): string format(): string - + /** readable plaintext */ text(): string - + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } class List { @@ -349,10 +373,12 @@ declare module wtf { interwiki(clue?: number): object[] interwiki(): object[] - + /** readable plaintext */ text(options?: object): string - + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } class Sentence { @@ -370,13 +396,12 @@ declare module wtf { italics(clue?: number|string): string[] italic(clue?: number|string): string - + /** readable plaintext */ text(str?: string): string - - /** Alias of text */ - plaintext(str?: string): string - + /** all parsed data */ json(options?: object): object + /** original wiki markup */ + wikitext(): string } } From e45b8f0362bae416841aa69f5a19b187dc2764e0 Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 13:54:30 -0400 Subject: [PATCH 116/117] linter and coverage fixes --- plugins/summary/builds/wtf-plugin-summary.js | 37 +++++++++++++------ .../summary/builds/wtf-plugin-summary.js.map | 2 +- .../summary/builds/wtf-plugin-summary.min.js | 2 +- plugins/summary/builds/wtf-plugin-summary.mjs | 37 +++++++++++++------ plugins/summary/src/category/02-change.js | 27 ++++++++++++-- plugins/summary/tests/summary.test.js | 4 +- plugins/wikis/openstreetmap/plugin.js | 8 ++-- tests/integration/paragraphs.test.js | 9 +++++ 8 files changed, 91 insertions(+), 35 deletions(-) diff --git a/plugins/summary/builds/wtf-plugin-summary.js b/plugins/summary/builds/wtf-plugin-summary.js index ad3fede3..996860db 100644 --- a/plugins/summary/builds/wtf-plugin-summary.js +++ b/plugins/summary/builds/wtf-plugin-summary.js @@ -10046,7 +10046,7 @@ }; var _01Neighbours = checkNeighbours; - var titleCase$5 = /^[A-Z][a-z'\u00C0-\u00FF]/; + var titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; var hasNumber = /[0-9]/; /** look for any grammar signals based on capital/lowercase */ @@ -10058,7 +10058,7 @@ for (var i = 1; i < terms.length; i++) { var term = terms[i]; - if (titleCase$5.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) { + if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) { term.tag('ProperNoun', 'titlecase-noun', world); } } @@ -15282,8 +15282,23 @@ var _01Choose = fromCategory; - const titleCase = str => { - return str.charAt(0).toUpperCase() + str.substr(1); + const useAn = function (str) { + const a_regexs = [/^onc?e/i, //'wu' sound of 'o' + /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' + /^eul/i]; + + for (let i = 0; i < a_regexs.length; i++) { + if (a_regexs[i].test(str)) { + return false; + } + } //basic vowel-startings + + + if (/^[aeiou]/i.test(str)) { + return true; + } + + return false; }; // 'American songwriters' to 'an American songwriter' @@ -15292,14 +15307,12 @@ c.nouns().toSingular(); // add article to the front if (options.article) { - let article = 'A'; - let noun = c.nouns(0); - - if (noun && noun.found) { - article = c.nouns(0).json({ - terms: false - })[0].article || article; - article = titleCase(article); + let article = 'A'; // let noun = c.nouns(0) + + if (useAn(cat) === true) { + // console.log(c.nouns(0)) + // article = c.nouns(0).json({ terms: false })[0].article || article + article = 'An'; } let first = c.terms(0); diff --git a/plugins/summary/builds/wtf-plugin-summary.js.map b/plugins/summary/builds/wtf-plugin-summary.js.map index 024321cc..ad213369 100644 --- a/plugins/summary/builds/wtf-plugin-summary.js.map +++ b/plugins/summary/builds/wtf-plugin-summary.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-summary.js","sources":["../node_modules/compromise/builds/compromise.mjs","../src/template/index.js","../src/sentence/00-preProcess.js","../src/sentence/01-pivot.js","../src/sentence/02-byClause.js","../src/sentence/03-safeCuts.js","../src/sentence/04-hardCuts.js","../src/sentence/05-lastTry.js","../src/sentence/_isGood.js","../src/sentence/index.js","../src/category/regs.js","../src/category/01-choose.js","../src/category/02-change.js","../src/category/index.js","../src/index.js"],"sourcesContent":["/* compromise 13.10.5 MIT */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\n//this is a not-well-thought-out way to reduce our dependence on `object===object` stuff\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term\n\nfunction makeId(str) {\n str = str || '_';\n var text = str + '-';\n\n for (var i = 0; i < 7; i++) {\n text += chars[Math.floor(Math.random() * chars.length)];\n }\n\n return text;\n}\n\nvar _id = makeId;\n\n//a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii.\n//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n//http://en.wikipedia.org/wiki/List_of_Unicode_characters\n//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\nvar compact = {\n '!': '¡',\n '?': '¿Ɂ',\n '\"': '“”\"❝❞',\n \"'\": '‘‛❛❜',\n '-': '—–',\n a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ',\n b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ',\n d: 'ÐĎďĐđƉƊȡƋƌǷ',\n e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ',\n f: 'ƑƒϜϝӺӻҒғſ',\n g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n I: 'ÌÍÎÏ',\n i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії',\n j: 'ĴĵǰȷɈɉϳЈј',\n k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n m: 'ΜϺϻМмӍӎ',\n n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ',\n p: 'ƤƿΡρϷϸϼРрҎҏÞ',\n q: 'Ɋɋ',\n r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ',\n v: 'νѴѵѶѷ',\n w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ'\n}; //decompress data into two hashes\n\nvar unicode = {};\nObject.keys(compact).forEach(function (k) {\n compact[k].split('').forEach(function (s) {\n unicode[s] = k;\n });\n});\n\nvar killUnicode = function killUnicode(str) {\n var chars = str.split('');\n chars.forEach(function (s, i) {\n if (unicode[s]) {\n chars[i] = unicode[s];\n }\n });\n return chars.join('');\n};\n\nvar unicode_1 = killUnicode; // console.log(killUnicode('bjŏȒk—Ɏó'));\n\nvar periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/;\nvar oneLetterAcronym$1 = /^[A-Z]\\.,?$/;\nvar noPeriodAcronym = /[A-Z]{2,}('s|,)?$/;\nvar lowerCaseAcronym = /([a-z]\\.)+[a-z]\\.?$/;\n\nvar isAcronym$2 = function isAcronym(str) {\n //like N.D.A\n if (periodAcronym.test(str) === true) {\n return true;\n } //like c.e.o\n\n\n if (lowerCaseAcronym.test(str) === true) {\n return true;\n } //like 'F.'\n\n\n if (oneLetterAcronym$1.test(str) === true) {\n return true;\n } //like NDA\n\n\n if (noPeriodAcronym.test(str) === true) {\n return true;\n }\n\n return false;\n};\n\nvar isAcronym_1$1 = isAcronym$2;\n\nvar hasSlash$1 = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/;\n/** some basic operations on a string to reduce noise */\n\nvar clean = function clean(str) {\n str = str || '';\n str = str.toLowerCase();\n str = str.trim();\n var original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork\n\n str = unicode_1(str); //rough handling of slashes - 'see/saw'\n\n if (hasSlash$1.test(str) === true) {\n str = str.replace(/\\/.*/, '');\n } //#tags, @mentions\n\n\n str = str.replace(/^[#@]/, ''); //punctuation\n\n str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes\n\n str = str.replace(/[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]+/g, \"'\"); // coerce double curly quotes\n\n str = str.replace(/[\\u0022\\u00AB\\u00BB\\u201C\\u201D\\u201E\\u201F\\u2033\\u2034\\u2036\\u2037\\u2E42\\u301D\\u301E\\u301F\\uFF02]+/g, '\"'); //coerce Unicode ellipses\n\n str = str.replace(/\\u2026/g, '...'); //en-dash\n\n str = str.replace(/\\u2013/g, '-'); //lookin'->looking (make it easier for conjugation)\n\n str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment\n\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n str = str.replace('-', '');\n } //compact acronyms\n\n\n if (isAcronym_1$1(str)) {\n str = str.replace(/\\./g, '');\n } //strip leading & trailing grammatical punctuation\n\n\n if (/^[:;]/.test(str) === false) {\n str = str.replace(/\\.{3,}$/g, '');\n str = str.replace(/[\",\\.!:;\\?\\)]+$/g, '');\n str = str.replace(/^['\"\\(]+/g, '');\n } // remove zero-width characters\n\n\n str = str.replace(/[\\u200B-\\u200D\\uFEFF]/g, ''); //do this again..\n\n str = str.trim(); //oh shucks,\n\n if (str === '') {\n str = original;\n } //nice-numbers\n\n\n str = str.replace(/([0-9]),([0-9])/g, '$1$2');\n return str;\n};\n\nvar clean_1 = clean; // console.log(normalize('Dr. V Cooper'));\n\n/** reduced is one step further than clean */\nvar reduced = function reduced(str) {\n // remove apostrophes\n str = str.replace(/['’]s$/, '');\n str = str.replace(/s['’]$/, 's');\n return str;\n};\n\nvar reduce = reduced;\n\n//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n//we have slightly different rules for start/end - like #hashtags.\n\nvar startings = /^[ \\n\\t\\.\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u0027\\u201C\\u201F\\u201B\\u201E\\u2E42\\u201A\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/;\nvar endings = /[ \\n\\t\\.'\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u201D\\u00B4\\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\n\nvar hasSlash = /\\//;\nvar hasApostrophe = /['’]/;\nvar hasAcronym = /^[a-z]\\.([a-z]\\.)+/i;\nvar minusNumber = /^[-+\\.][0-9]/;\nvar shortYear = /^'[0-9]{2}/;\n/** turn given text into a parsed-up object\n * seperate the 'meat' of the word from the whitespace+punctuation\n */\n\nvar parseTerm = function parseTerm(str) {\n var original = str;\n var pre = '';\n var post = '';\n str = str.replace(startings, function (found) {\n pre = found; // support '-40'\n\n if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) {\n pre = '';\n return found;\n } // support years like '97\n\n\n if (pre === \"'\" && shortYear.test(str)) {\n pre = '';\n return found;\n }\n\n return '';\n });\n str = str.replace(endings, function (found) {\n post = found; // keep s-apostrophe - \"flanders'\" or \"chillin'\"\n\n if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) {\n post = post.replace(hasApostrophe, '');\n return \"'\";\n } //keep end-period in acronym\n\n\n if (hasAcronym.test(str) === true) {\n post = post.replace(/\\./, '');\n return '.';\n }\n\n return '';\n }); //we went too far..\n\n if (str === '') {\n // do a very mild parse, and hope for the best.\n original = original.replace(/ *$/, function (after) {\n post = after || '';\n return '';\n });\n str = original;\n pre = '';\n post = post;\n } // create the various forms of our text,\n\n\n var clean = clean_1(str);\n var parsed = {\n text: str,\n clean: clean,\n reduced: reduce(clean),\n pre: pre,\n post: post\n }; // support aliases for slashes\n\n if (hasSlash.test(str)) {\n str.split(hasSlash).forEach(function (word) {\n parsed.alias = parsed.alias || {};\n parsed.alias[word.trim()] = true;\n });\n }\n\n return parsed;\n};\n\nvar parse$2 = parseTerm;\n\nfunction createCommonjsModule(fn) {\n var module = { exports: {} };\n\treturn fn(module, module.exports), module.exports;\n}\n\nvar _01Case = createCommonjsModule(function (module, exports) {\n var titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\n var upperCase = /^[A-Z]+s?$/;\n /** convert all text to uppercase */\n\n exports.toUpperCase = function () {\n this.text = this.text.toUpperCase();\n return this;\n };\n /** convert all text to lowercase */\n\n\n exports.toLowerCase = function () {\n this.text = this.text.toLowerCase();\n return this;\n };\n /** only set the first letter to uppercase\n * leave any existing uppercase alone\n */\n\n\n exports.toTitleCase = function () {\n this.text = this.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, function (x) {\n return x.toUpperCase();\n }); //support unicode?\n\n return this;\n };\n /** if all letters are uppercase */\n\n\n exports.isUpperCase = function () {\n return upperCase.test(this.text);\n };\n /** if the first letter is uppercase, and the rest are lowercase */\n\n\n exports.isTitleCase = function () {\n return titleCase.test(this.text);\n };\n\n exports.titleCase = exports.isTitleCase;\n});\n\nvar _02Punctuation$1 = createCommonjsModule(function (module, exports) {\n // these methods are called with '@hasComma' in the match syntax\n // various unicode quotation-mark formats\n var startQuote = /(\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F)/;\n var endQuote = /(\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E)/;\n /** search the term's 'post' punctuation */\n\n exports.hasPost = function (punct) {\n return this.post.indexOf(punct) !== -1;\n };\n /** search the term's 'pre' punctuation */\n\n\n exports.hasPre = function (punct) {\n return this.pre.indexOf(punct) !== -1;\n };\n /** does it have a quotation symbol? */\n\n\n exports.hasQuote = function () {\n return startQuote.test(this.pre) || endQuote.test(this.post);\n };\n\n exports.hasQuotation = exports.hasQuote;\n /** does it have a comma? */\n\n exports.hasComma = function () {\n return this.hasPost(',');\n };\n /** does it end in a period? */\n\n\n exports.hasPeriod = function () {\n return this.hasPost('.') === true && this.hasPost('...') === false;\n };\n /** does it end in an exclamation */\n\n\n exports.hasExclamation = function () {\n return this.hasPost('!');\n };\n /** does it end with a question mark? */\n\n\n exports.hasQuestionMark = function () {\n return this.hasPost('?') || this.hasPost('¿');\n };\n /** is there a ... at the end? */\n\n\n exports.hasEllipses = function () {\n return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…');\n };\n /** is there a semicolon after this word? */\n\n\n exports.hasSemicolon = function () {\n return this.hasPost(';');\n };\n /** is there a slash '/' in this word? */\n\n\n exports.hasSlash = function () {\n return /\\//.test(this.text);\n };\n /** a hyphen connects two words like-this */\n\n\n exports.hasHyphen = function () {\n var hyphen = /^(-|–|—)$/;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** a dash separates words - like that */\n\n\n exports.hasDash = function () {\n var hyphen = / (-|–|—) /;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** is it multiple words combinded */\n\n\n exports.hasContraction = function () {\n return Boolean(this.implicit);\n };\n /** try to sensibly put this punctuation mark into the term */\n\n\n exports.addPunctuation = function (punct) {\n // dont add doubles\n if (punct === ',' || punct === ';') {\n this.post = this.post.replace(punct, '');\n }\n\n this.post = punct + this.post;\n return this;\n };\n});\n\n// fuzzy-match (damerau-levenshtein)\n// Based on tad-lispy /node-damerau-levenshtein\n// https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js\n// count steps (insertions, deletions, substitutions, or transpositions)\nvar editDistance = function editDistance(strA, strB) {\n var aLength = strA.length,\n bLength = strB.length; // fail-fast\n\n if (aLength === 0) {\n return bLength;\n }\n\n if (bLength === 0) {\n return aLength;\n } // If the limit is not defined it will be calculate from this and that args.\n\n\n var limit = (bLength > aLength ? bLength : aLength) + 1;\n\n if (Math.abs(aLength - bLength) > (limit || 100)) {\n return limit || 100;\n } // init the array\n\n\n var matrix = [];\n\n for (var i = 0; i < limit; i++) {\n matrix[i] = [i];\n matrix[i].length = limit;\n }\n\n for (var _i = 0; _i < limit; _i++) {\n matrix[0][_i] = _i;\n } // Calculate matrix.\n\n\n var j, a_index, b_index, cost, min, t;\n\n for (var _i2 = 1; _i2 <= aLength; ++_i2) {\n a_index = strA[_i2 - 1];\n\n for (j = 1; j <= bLength; ++j) {\n // Check the jagged distance total so far\n if (_i2 === j && matrix[_i2][j] > 4) {\n return aLength;\n }\n\n b_index = strB[j - 1];\n cost = a_index === b_index ? 0 : 1; // Step 5\n // Calculate the minimum (much faster than Math.min(...)).\n\n min = matrix[_i2 - 1][j] + 1; // Deletion.\n\n if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion.\n\n if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution.\n // Update matrix.\n\n var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min;\n\n if (shouldUpdate) {\n matrix[_i2][j] = t;\n } else {\n matrix[_i2][j] = min;\n }\n }\n } // return number of steps\n\n\n return matrix[aLength][bLength];\n}; // score similarity by from 0-1 (steps/length)\n\n\nvar fuzzyMatch = function fuzzyMatch(strA, strB) {\n var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n\n if (strA === strB) {\n return 1;\n } //don't even bother on tiny strings\n\n\n if (strA.length < minLength || strB.length < minLength) {\n return 0;\n }\n\n var steps = editDistance(strA, strB);\n var length = Math.max(strA.length, strB.length);\n var relative = length === 0 ? 0 : steps / length;\n var similarity = 1 - relative;\n return similarity;\n};\n\nvar _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match\n\nvar wrapMatch = function wrapMatch() {};\n/** ignore optional/greedy logic, straight-up term match*/\n\n\nvar doesMatch = function doesMatch(t, reg, index, length) {\n // support id matches\n if (reg.id === t.id) {\n return true;\n } // support '.'\n\n\n if (reg.anything === true) {\n return true;\n } // support '^' (in parentheses)\n\n\n if (reg.start === true && index !== 0) {\n return false;\n } // support '$' (in parentheses)\n\n\n if (reg.end === true && index !== length - 1) {\n return false;\n } //support a text match\n\n\n if (reg.word !== undefined) {\n //match contractions\n if (t.implicit !== null && t.implicit === reg.word) {\n return true;\n } // term aliases for slashes and things\n\n\n if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) {\n return true;\n } // support ~ match\n\n\n if (reg.soft === true && reg.word === t.root) {\n return true;\n } // support fuzzy match param\n\n\n if (reg.fuzzy !== undefined) {\n var score = _fuzzy(reg.word, t.reduced);\n\n if (score > reg.fuzzy) {\n return true;\n } // support fuzzy + soft match\n\n\n if (reg.soft === true) {\n score = _fuzzy(reg.word, t.root);\n\n if (score > reg.fuzzy) {\n return true;\n }\n }\n } //match either .clean or .text\n\n\n return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced;\n } //support #Tag\n\n\n if (reg.tag !== undefined) {\n return t.tags[reg.tag] === true;\n } //support @method\n\n\n if (reg.method !== undefined) {\n if (typeof t[reg.method] === 'function' && t[reg.method]() === true) {\n return true;\n }\n\n return false;\n } //support /reg/\n\n\n if (reg.regex !== undefined) {\n return reg.regex.test(t.clean);\n } // support optimized (one|two)\n\n\n if (reg.fastOr !== undefined) {\n if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) {\n return true;\n }\n\n return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text);\n } //support slower (one|two)\n\n\n if (reg.choices !== undefined) {\n // try to support && operator\n if (reg.operator === 'and') {\n // must match them all\n return reg.choices.every(function (r) {\n return wrapMatch(t, r, index, length);\n });\n } // or must match one\n\n\n return reg.choices.some(function (r) {\n return wrapMatch(t, r, index, length);\n });\n }\n\n return false;\n}; // wrap result for !negative match logic\n\n\nwrapMatch = function wrapMatch(t, reg, index, length) {\n var result = doesMatch(t, reg, index, length);\n\n if (reg.negative === true) {\n return !result;\n }\n\n return result;\n};\n\nvar _doesMatch = wrapMatch;\n\nvar boring = {};\n/** check a match object against this term */\n\nvar doesMatch_1 = function doesMatch_1(reg, index, length) {\n return _doesMatch(this, reg, index, length);\n};\n/** does this term look like an acronym? */\n\n\nvar isAcronym_1 = function isAcronym_1() {\n return isAcronym_1$1(this.text);\n};\n/** is this term implied by a contraction? */\n\n\nvar isImplicit = function isImplicit() {\n return this.text === '' && Boolean(this.implicit);\n};\n/** does the term have at least one good tag? */\n\n\nvar isKnown = function isKnown() {\n return Object.keys(this.tags).some(function (t) {\n return boring[t] !== true;\n });\n};\n/** cache the root property of the term */\n\n\nvar setRoot = function setRoot(world) {\n var transform = world.transforms;\n var str = this.implicit || this.clean;\n\n if (this.tags.Plural) {\n str = transform.toSingular(str, world);\n }\n\n if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) {\n var tense = null;\n\n if (this.tags.PastTense) {\n tense = 'PastTense';\n } else if (this.tags.Gerund) {\n tense = 'Gerund';\n } else if (this.tags.PresentTense) {\n tense = 'PresentTense';\n } else if (this.tags.Participle) {\n tense = 'Participle';\n } else if (this.tags.Actor) {\n tense = 'Actor';\n }\n\n str = transform.toInfinitive(str, world, tense);\n }\n\n this.root = str;\n};\n\nvar _03Misc = {\n doesMatch: doesMatch_1,\n isAcronym: isAcronym_1,\n isImplicit: isImplicit,\n isKnown: isKnown,\n setRoot: setRoot\n};\n\nvar hasSpace$1 = /[\\s-]/;\nvar isUpperCase = /^[A-Z-]+$/; // const titleCase = str => {\n// return str.charAt(0).toUpperCase() + str.substr(1)\n// }\n\n/** return various text formats of this term */\n\nvar textOut = function textOut(options, showPre, showPost) {\n options = options || {};\n var word = this.text;\n var before = this.pre;\n var after = this.post; // -word-\n\n if (options.reduced === true) {\n word = this.reduced || '';\n }\n\n if (options.root === true) {\n word = this.root || '';\n }\n\n if (options.implicit === true && this.implicit) {\n word = this.implicit || '';\n }\n\n if (options.normal === true) {\n word = this.clean || this.text || '';\n }\n\n if (options.root === true) {\n word = this.root || this.reduced || '';\n }\n\n if (options.unicode === true) {\n word = unicode_1(word);\n } // cleanup case\n\n\n if (options.titlecase === true) {\n if (this.tags.ProperNoun && !this.titleCase()) ; else if (this.tags.Acronym) {\n word = word.toUpperCase(); //uppercase acronyms\n } else if (isUpperCase.test(word) && !this.tags.Acronym) {\n // lowercase everything else\n word = word.toLowerCase();\n }\n }\n\n if (options.lowercase === true) {\n word = word.toLowerCase();\n } // remove the '.'s from 'F.B.I.' (safely)\n\n\n if (options.acronyms === true && this.tags.Acronym) {\n word = word.replace(/\\./g, '');\n } // -before/after-\n\n\n if (options.whitespace === true || options.root === true) {\n before = '';\n after = ' ';\n\n if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) {\n after = '';\n }\n }\n\n if (options.punctuation === true && !options.root) {\n //normalized end punctuation\n if (this.hasPost('.') === true) {\n after = '.' + after;\n } else if (this.hasPost('?') === true) {\n after = '?' + after;\n } else if (this.hasPost('!') === true) {\n after = '!' + after;\n } else if (this.hasPost(',') === true) {\n after = ',' + after;\n } else if (this.hasEllipses() === true) {\n after = '...' + after;\n }\n }\n\n if (showPre !== true) {\n before = '';\n }\n\n if (showPost !== true) {\n // let keep = after.match(/\\)/) || ''\n after = ''; //keep //after.replace(/[ .?!,]+/, '')\n } // remove the '.' from 'Mrs.' (safely)\n\n\n if (options.abbreviations === true && this.tags.Abbreviation) {\n after = after.replace(/^\\./, '');\n }\n\n return before + word + after;\n};\n\nvar _04Text = {\n textOut: textOut\n};\n\nvar boringTags = {\n Auxiliary: 1,\n Possessive: 1\n};\n/** a subjective ranking of tags kinda tfidf-based */\n\nvar rankTags = function rankTags(term, world) {\n var tags = Object.keys(term.tags);\n var tagSet = world.tags;\n tags = tags.sort(function (a, b) {\n //bury the tags we dont want\n if (boringTags[b] || !tagSet[b]) {\n return -1;\n } // unknown tags are interesting\n\n\n if (!tagSet[b]) {\n return 1;\n }\n\n if (!tagSet[a]) {\n return 0;\n } // then sort by #of parent tags (most-specific tags first)\n\n\n if (tagSet[a].lineage.length > tagSet[b].lineage.length) {\n return 1;\n }\n\n if (tagSet[a].isA.length > tagSet[b].isA.length) {\n return -1;\n }\n\n return 0;\n });\n return tags;\n};\n\nvar _bestTag = rankTags;\n\nvar jsonDefault = {\n text: true,\n tags: true,\n implicit: true,\n whitespace: true,\n clean: false,\n id: false,\n index: false,\n offset: false,\n bestTag: false\n};\n/** return various metadata for this term */\n\nvar json$1 = function json(options, world) {\n options = options || {};\n options = Object.assign({}, jsonDefault, options);\n var result = {}; // default on\n\n if (options.text) {\n result.text = this.text;\n }\n\n if (options.normal) {\n result.normal = this.clean;\n }\n\n if (options.tags) {\n result.tags = Object.keys(this.tags);\n } // default off\n\n\n if (options.clean) {\n result.clean = this.clean;\n }\n\n if (options.id || options.offset) {\n result.id = this.id;\n }\n\n if (options.implicit && this.implicit !== null) {\n result.implicit = this.implicit;\n }\n\n if (options.whitespace) {\n result.pre = this.pre;\n result.post = this.post;\n }\n\n if (options.bestTag) {\n result.bestTag = _bestTag(this, world)[0];\n }\n\n return result;\n};\n\nvar _05Json$1 = {\n json: json$1\n};\n\nvar methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1);\n\nfunction isClientSide() {\n return typeof window !== 'undefined' && window.document;\n}\n/** add spaces at the end */\n\n\nvar padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n};\n/** output for verbose-mode */\n\n\nvar logTag = function logTag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 15) + '\\x1b[0m + \\x1b[32m' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason + '';\n }\n\n console.log(log);\n};\n/** output for verbose mode */\n\n\nvar logUntag = function logUntag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 3) + ' \\x1b[31m - #' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason;\n }\n\n console.log(log);\n};\n\nvar isArray$3 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n\nvar titleCase$4 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar fns$1 = {\n logTag: logTag,\n logUntag: logUntag,\n isArray: isArray$3,\n titleCase: titleCase$4\n};\n\n/** add a tag, and its descendents, to a term */\n\nvar addTag = function addTag(t, tag, reason, world) {\n var tagset = world.tags; //support '.' or '-' notation for skipping the tag\n\n if (tag === '' || tag === '.' || tag === '-') {\n return;\n }\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n }\n\n tag = fns$1.titleCase(tag); //if we already got this one\n\n if (t.tags[tag] === true) {\n return;\n } // log it?\n\n\n var isVerbose = world.isVerbose();\n\n if (isVerbose === true) {\n fns$1.logTag(t, tag, reason);\n } //add tag\n\n\n t.tags[tag] = true; //whee!\n //check tagset for any additional things to do...\n\n if (tagset.hasOwnProperty(tag) === true) {\n //add parent Tags\n tagset[tag].isA.forEach(function (down) {\n t.tags[down] = true;\n\n if (isVerbose === true) {\n fns$1.logTag(t, '→ ' + down);\n }\n }); //remove any contrary tags\n\n t.unTag(tagset[tag].notA, '←', world);\n }\n};\n/** support an array of tags */\n\n\nvar addTags = function addTags(term, tags, reason, world) {\n if (typeof tags !== 'string') {\n for (var i = 0; i < tags.length; i++) {\n addTag(term, tags[i], reason, world);\n } // tags.forEach(tag => addTag(term, tag, reason, world))\n\n } else {\n addTag(term, tags, reason, world);\n }\n};\n\nvar add = addTags;\n\nvar lowerCase = /^[a-z]/;\n\nvar titleCase$3 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** remove this tag, and its descentents from the term */\n\n\nvar unTag$1 = function unTag(t, tag, reason, world) {\n var isVerbose = world.isVerbose(); //support '*' for removing all tags\n\n if (tag === '*') {\n t.tags = {};\n return t;\n }\n\n tag = tag.replace(/^#/, '');\n\n if (lowerCase.test(tag) === true) {\n tag = titleCase$3(tag);\n } // remove the tag\n\n\n if (t.tags[tag] === true) {\n delete t.tags[tag]; //log in verbose-mode\n\n if (isVerbose === true) {\n fns$1.logUntag(t, tag, reason);\n }\n } //delete downstream tags too\n\n\n var tagset = world.tags;\n\n if (tagset[tag]) {\n var lineage = tagset[tag].lineage;\n\n for (var i = 0; i < lineage.length; i++) {\n if (t.tags[lineage[i]] === true) {\n delete t.tags[lineage[i]];\n\n if (isVerbose === true) {\n fns$1.logUntag(t, ' - ' + lineage[i]);\n }\n }\n }\n }\n\n return t;\n}; //handle an array of tags\n\n\nvar untagAll = function untagAll(term, tags, reason, world) {\n if (typeof tags !== 'string' && tags) {\n for (var i = 0; i < tags.length; i++) {\n unTag$1(term, tags[i], reason, world);\n }\n\n return;\n }\n\n unTag$1(term, tags, reason, world);\n};\n\nvar unTag_1$1 = untagAll;\n\nvar canBe$2 = function canBe(term, tag, world) {\n var tagset = world.tags; // cleanup tag\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n } //fail-fast\n\n\n if (tagset[tag] === undefined) {\n return true;\n } //loop through tag's contradictory tags\n\n\n var enemies = tagset[tag].notA || [];\n\n for (var i = 0; i < enemies.length; i++) {\n if (term.tags[enemies[i]] === true) {\n return false;\n }\n }\n\n if (tagset[tag].isA !== undefined) {\n return canBe(term, tagset[tag].isA, world); //recursive\n }\n\n return true;\n};\n\nvar canBe_1$1 = canBe$2;\n\n/** add a tag or tags, and their descendents to this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\nvar tag_1 = function tag_1(tags, reason, world) {\n add(this, tags, reason, world);\n return this;\n};\n/** only tag this term if it's consistent with it's current tags */\n\n\nvar tagSafe$1 = function tagSafe(tags, reason, world) {\n if (canBe_1$1(this, tags, world)) {\n add(this, tags, reason, world);\n }\n\n return this;\n};\n/** remove a tag or tags, and their descendents from this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\n\nvar unTag_1 = function unTag_1(tags, reason, world) {\n unTag_1$1(this, tags, reason, world);\n return this;\n};\n/** is this tag consistent with the word's current tags?\n * @param {string | string[]} tags - a tag or tags\n * @returns {boolean}\n */\n\n\nvar canBe_1 = function canBe_1(tags, world) {\n return canBe_1$1(this, tags, world);\n};\n\nvar tag$1 = {\n tag: tag_1,\n tagSafe: tagSafe$1,\n unTag: unTag_1,\n canBe: canBe_1\n};\n\nvar Term = /*#__PURE__*/function () {\n function Term() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n _classCallCheck(this, Term);\n\n text = String(text);\n var obj = parse$2(text); // the various forms of our text\n\n this.text = obj.text || '';\n this.clean = obj.clean;\n this.reduced = obj.reduced;\n this.root = null;\n this.implicit = null;\n this.pre = obj.pre || '';\n this.post = obj.post || '';\n this.tags = {};\n this.prev = null;\n this.next = null;\n this.id = _id(obj.clean);\n this.isA = 'Term'; // easier than .constructor...\n // support alternative matches\n\n if (obj.alias) {\n this.alias = obj.alias;\n }\n }\n /** set the text of the Term to something else*/\n\n\n _createClass(Term, [{\n key: \"set\",\n value: function set(str) {\n var obj = parse$2(str);\n this.text = obj.text;\n this.clean = obj.clean;\n return this;\n }\n }]);\n\n return Term;\n}();\n/** create a deep-copy of this term */\n\n\nTerm.prototype.clone = function () {\n var term = new Term(this.text);\n term.pre = this.pre;\n term.post = this.post;\n term.clean = this.clean;\n term.reduced = this.reduced;\n term.root = this.root;\n term.implicit = this.implicit;\n term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc)\n // term.id = this.id\n\n return term;\n};\n\nObject.assign(Term.prototype, methods$8);\nObject.assign(Term.prototype, tag$1);\nvar Term_1 = Term;\n\n/** return a flat array of Term objects */\nvar terms = function terms(n) {\n if (this.length === 0) {\n return [];\n } // use cache, if it exists\n\n\n if (this.cache.terms) {\n if (n !== undefined) {\n return this.cache.terms[n];\n }\n\n return this.cache.terms;\n }\n\n var terms = [this.pool.get(this.start)];\n\n for (var i = 0; i < this.length - 1; i += 1) {\n var id = terms[terms.length - 1].next;\n\n if (id === null) {\n // throw new Error('linked-list broken')\n console.error(\"Compromise error: Linked list broken in phrase '\" + this.start + \"'\");\n break;\n }\n\n var term = this.pool.get(id);\n terms.push(term); //return this one?\n\n if (n !== undefined && n === i) {\n return terms[n];\n }\n }\n\n if (n === undefined) {\n this.cache.terms = terms;\n }\n\n if (n !== undefined) {\n return terms[n];\n }\n\n return terms;\n};\n/** return a shallow or deep copy of this phrase */\n\n\nvar clone$1 = function clone(isShallow) {\n var _this = this;\n\n if (isShallow) {\n var p = this.buildFrom(this.start, this.length);\n p.cache = this.cache;\n return p;\n } //how do we clone part of the pool?\n\n\n var terms = this.terms();\n var newTerms = terms.map(function (t) {\n return t.clone();\n }); // console.log(newTerms)\n //connect these new ids up\n\n newTerms.forEach(function (t, i) {\n //add it to the pool..\n _this.pool.add(t);\n\n if (newTerms[i + 1]) {\n t.next = newTerms[i + 1].id;\n }\n\n if (newTerms[i - 1]) {\n t.prev = newTerms[i - 1].id;\n }\n });\n return this.buildFrom(newTerms[0].id, newTerms.length);\n};\n/** return last term object */\n\n\nvar lastTerm = function lastTerm() {\n var terms = this.terms();\n return terms[terms.length - 1];\n};\n/** quick lookup for a term id */\n\n\nvar hasId = function hasId(wantId) {\n if (this.length === 0 || !wantId) {\n return false;\n }\n\n if (this.start === wantId) {\n return true;\n } // use cache, if available\n\n\n if (this.cache.terms) {\n var _terms = this.cache.terms;\n\n for (var i = 0; i < _terms.length; i++) {\n if (_terms[i].id === wantId) {\n return true;\n }\n }\n\n return false;\n } // otherwise, go through each term\n\n\n var lastId = this.start;\n\n for (var _i = 0; _i < this.length - 1; _i += 1) {\n var term = this.pool.get(lastId);\n\n if (term === undefined) {\n console.error(\"Compromise error: Linked list broken. Missing term '\".concat(lastId, \"' in phrase '\").concat(this.start, \"'\\n\")); // throw new Error('linked List error')\n\n return false;\n }\n\n if (term.next === wantId) {\n return true;\n }\n\n lastId = term.next;\n }\n\n return false;\n};\n/** how many seperate, non-empty words is it? */\n\n\nvar wordCount = function wordCount() {\n return this.terms().filter(function (t) {\n return t.text !== '';\n }).length;\n};\n/** get the full-sentence this phrase belongs to */\n\n\nvar fullSentence = function fullSentence() {\n var t = this.terms(0); //find first term in sentence\n\n while (t.prev) {\n t = this.pool.get(t.prev);\n }\n\n var start = t.id;\n var len = 1; //go to end of sentence\n\n while (t.next) {\n t = this.pool.get(t.next);\n len += 1;\n }\n\n return this.buildFrom(start, len);\n};\n\nvar _01Utils$1 = {\n terms: terms,\n clone: clone$1,\n lastTerm: lastTerm,\n hasId: hasId,\n wordCount: wordCount,\n fullSentence: fullSentence\n};\n\nvar trimEnd = function trimEnd(str) {\n return str.replace(/ +$/, '');\n};\n/** produce output in the given format */\n\n\nvar text$1 = function text() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var isFirst = arguments.length > 1 ? arguments[1] : undefined;\n var isLast = arguments.length > 2 ? arguments[2] : undefined;\n\n if (typeof options === 'string') {\n if (options === 'normal') {\n options = {\n whitespace: true,\n unicode: true,\n lowercase: true,\n punctuation: true,\n acronyms: true,\n abbreviations: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'clean') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'reduced') {\n options = {\n punctuation: false,\n //Hmm: is this reversed?\n titlecase: false,\n lowercase: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: true\n };\n } else if (options === 'implicit') {\n options = {\n punctuation: true,\n implicit: true,\n whitespace: true,\n trim: true\n };\n } else if (options === 'root') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n root: true\n };\n } else {\n options = {};\n }\n }\n\n var terms = this.terms(); //this this phrase a complete sentence?\n\n var isFull = false;\n\n if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) {\n isFull = true;\n }\n\n var text = terms.reduce(function (str, t, i) {\n // don't output intro space for a contraction-match i'm good => \"[am] good\"\n if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) {\n return str;\n }\n\n options.last = isLast && i === terms.length - 1;\n var showPre = true;\n var showPost = true;\n\n if (isFull === false) {\n // dont show beginning whitespace\n if (i === 0 && isFirst) {\n showPre = false;\n } // dont show end-whitespace\n\n\n if (i === terms.length - 1 && isLast) {\n showPost = false;\n }\n }\n\n var txt = t.textOut(options, showPre, showPost); // console.log(terms)\n // if (options.titlecase && i === 0) {\n // txt = titleCase(txt)\n // }\n\n return str + txt;\n }, ''); //full-phrases show punctuation, but not whitespace\n\n if (isFull === true && isLast) {\n text = trimEnd(text);\n }\n\n if (options.trim === true) {\n text = text.trim();\n }\n\n return text;\n};\n\nvar _02Text = {\n text: text$1\n};\n\n/** remove start and end whitespace */\nvar trim = function trim() {\n var terms = this.terms();\n\n if (terms.length > 0) {\n //trim starting\n terms[0].pre = terms[0].pre.replace(/^\\s+/, ''); //trim ending\n\n var lastTerm = terms[terms.length - 1];\n lastTerm.post = lastTerm.post.replace(/\\s+$/, '');\n }\n\n return this;\n};\n\nvar _03Change = {\n trim: trim\n};\n\nvar endOfSentence = /[.?!]\\s*$/; // replacing a 'word.' with a 'word!'\n\nvar combinePost = function combinePost(before, after) {\n //only transfer the whitespace\n if (endOfSentence.test(after)) {\n var whitespace = before.match(/\\s*$/);\n return after + whitespace;\n }\n\n return before;\n}; //add whitespace to the start of the second bit\n\n\nvar addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) {\n // add any existing pre-whitespace to beginning\n newTerms[0].pre = beforeTerms[0].pre;\n var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms\n\n var newTerm = newTerms[newTerms.length - 1];\n newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation\n\n lastTerm.post = ''; //before ←[space] - after\n\n if (lastTerm.post === '') {\n lastTerm.post += ' ';\n }\n}; //insert this segment into the linked-list\n\n\nvar stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) {\n var lastBefore = beforeTerms[beforeTerms.length - 1];\n var lastNew = newTerms[newTerms.length - 1];\n var afterId = lastBefore.next; //connect ours in (main → newPhrase)\n\n lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after)\n\n lastNew.next = afterId; //do it backwards, too\n\n if (afterId) {\n // newPhrase ← after\n var afterTerm = pool.get(afterId);\n afterTerm.prev = lastNew.id;\n } // before ← newPhrase\n\n\n var beforeId = beforeTerms[0].id;\n\n if (beforeId) {\n var newTerm = newTerms[0];\n newTerm.prev = beforeId;\n }\n}; // avoid stretching a phrase twice.\n\n\nvar unique$5 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another.\n\n\nvar appendPhrase = function appendPhrase(before, newPhrase, doc) {\n var beforeTerms = before.terms();\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list\n\n stitchIn$1(beforeTerms, newTerms, before.pool); // stretch!\n // make each effected phrase longer\n\n var toStretch = [before];\n var hasId = before.start;\n var docs = [doc];\n docs = docs.concat(doc.parents()); // find them all!\n\n docs.forEach(function (parent) {\n // only the phrases that should change\n var shouldChange = parent.list.filter(function (p) {\n return p.hasId(hasId);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count a phrase\n\n toStretch = unique$5(toStretch);\n toStretch.forEach(function (p) {\n p.length += newPhrase.length;\n });\n before.cache = {};\n return before;\n};\n\nvar append = appendPhrase;\n\nvar hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one\n// '[new] [◻old]' -or- '[old] [◻new] [old]'\n\nvar addWhitespace = function addWhitespace(newTerms) {\n //add a space before our new text?\n // add a space after our text\n var lastTerm = newTerms[newTerms.length - 1];\n\n if (hasSpace.test(lastTerm.post) === false) {\n lastTerm.post += ' ';\n }\n\n return;\n}; //insert this segment into the linked-list\n\n\nvar stitchIn = function stitchIn(main, newPhrase, newTerms) {\n // [newPhrase] → [main]\n var lastTerm = newTerms[newTerms.length - 1];\n lastTerm.next = main.start; // [before] → [main]\n\n var pool = main.pool;\n var start = pool.get(main.start);\n\n if (start.prev) {\n var before = pool.get(start.prev);\n before.next = newPhrase.start;\n } //do it backwards, too\n // before ← newPhrase\n\n\n newTerms[0].prev = main.terms(0).prev; // newPhrase ← main\n\n main.terms(0).prev = lastTerm.id;\n};\n\nvar unique$4 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another\n\n\nvar joinPhrase = function joinPhrase(original, newPhrase, doc) {\n var starterId = original.start;\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace(newTerms); //insert this segment into the linked-list\n\n stitchIn(original, newPhrase, newTerms); //increase the length of our phrases\n\n var toStretch = [original];\n var docs = [doc];\n docs = docs.concat(doc.parents());\n docs.forEach(function (d) {\n // only the phrases that should change\n var shouldChange = d.list.filter(function (p) {\n return p.hasId(starterId) || p.hasId(newPhrase.start);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count\n\n toStretch = unique$4(toStretch); // stretch these phrases\n\n toStretch.forEach(function (p) {\n p.length += newPhrase.length; // change the start too, if necessary\n\n if (p.start === starterId) {\n p.start = newPhrase.start;\n }\n\n p.cache = {};\n });\n return original;\n};\n\nvar prepend = joinPhrase;\n\n//recursively decrease the length of all the parent phrases\nvar shrinkAll = function shrinkAll(doc, id, deleteLength, after) {\n var arr = doc.parents();\n arr.push(doc);\n arr.forEach(function (d) {\n //find our phrase to shrink\n var phrase = d.list.find(function (p) {\n return p.hasId(id);\n });\n\n if (!phrase) {\n return;\n }\n\n phrase.length -= deleteLength; // does it start with this soon-removed word?\n\n if (phrase.start === id) {\n phrase.start = after.id;\n }\n\n phrase.cache = {};\n }); // cleanup empty phrase objects\n\n doc.list = doc.list.filter(function (p) {\n if (!p.start || !p.length) {\n return false;\n }\n\n return true;\n });\n};\n/** wrap the linked-list around these terms\n * so they don't appear any more\n */\n\n\nvar deletePhrase = function deletePhrase(phrase, doc) {\n var pool = doc.pool();\n var terms = phrase.terms(); //grab both sides of the chain,\n\n var prev = pool.get(terms[0].prev) || {};\n var after = pool.get(terms[terms.length - 1].next) || {};\n\n if (terms[0].implicit && prev.implicit) {\n prev.set(prev.implicit);\n prev.post += ' ';\n } // //first, change phrase lengths\n\n\n shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after]\n\n if (prev) {\n prev.next = after.id;\n } // connect [prev]<-[after]\n\n\n if (after) {\n after.prev = prev.id;\n } // lastly, actually delete the terms from the pool?\n // for (let i = 0; i < terms.length; i++) {\n // pool.remove(terms[i].id)\n // }\n\n};\n\nvar _delete$1 = deletePhrase;\n\n/** put this text at the end */\n\nvar append_1 = function append_1(newPhrase, doc) {\n append(this, newPhrase, doc);\n return this;\n};\n/** add this text to the beginning */\n\n\nvar prepend_1 = function prepend_1(newPhrase, doc) {\n prepend(this, newPhrase, doc);\n return this;\n};\n\nvar _delete = function _delete(doc) {\n _delete$1(this, doc);\n return this;\n}; // stich-in newPhrase, stretch 'doc' + parents\n\n\nvar replace$1 = function replace(newPhrase, doc) {\n //add it do the end\n var firstLength = this.length;\n append(this, newPhrase, doc); //delete original terms\n\n var tmp = this.buildFrom(this.start, this.length);\n tmp.length = firstLength;\n _delete$1(tmp, doc);\n};\n/**\n * Turn this phrase object into 3 phrase objects\n */\n\n\nvar splitOn = function splitOn(p) {\n var terms = this.terms();\n var result = {\n before: null,\n match: null,\n after: null\n };\n var index = terms.findIndex(function (t) {\n return t.id === p.start;\n });\n\n if (index === -1) {\n return result;\n } //make all three sections into phrase-objects\n\n\n var start = terms.slice(0, index);\n\n if (start.length > 0) {\n result.before = this.buildFrom(start[0].id, start.length);\n }\n\n var match = terms.slice(index, index + p.length);\n\n if (match.length > 0) {\n result.match = this.buildFrom(match[0].id, match.length);\n }\n\n var end = terms.slice(index + p.length, terms.length);\n\n if (end.length > 0) {\n result.after = this.buildFrom(end[0].id, end.length, this.pool);\n }\n\n return result;\n};\n\nvar _04Insert = {\n append: append_1,\n prepend: prepend_1,\n \"delete\": _delete,\n replace: replace$1,\n splitOn: splitOn\n};\n\n/** return json metadata for this phrase */\nvar json = function json() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var res = {}; // text data\n\n if (options.text) {\n res.text = this.text();\n }\n\n if (options.normal) {\n res.normal = this.text('normal');\n }\n\n if (options.clean) {\n res.clean = this.text('clean');\n }\n\n if (options.reduced) {\n res.reduced = this.text('reduced');\n }\n\n if (options.implicit) {\n res.implicit = this.text('implicit');\n }\n\n if (options.root) {\n res.root = this.text('root');\n }\n\n if (options.trim) {\n if (res.text) {\n res.text = res.text.trim();\n }\n\n if (res.normal) {\n res.normal = res.normal.trim();\n }\n\n if (res.reduced) {\n res.reduced = res.reduced.trim();\n }\n } // terms data\n\n\n if (options.terms) {\n if (options.terms === true) {\n options.terms = {};\n }\n\n res.terms = this.terms().map(function (t) {\n return t.json(options.terms, world);\n });\n }\n\n return res;\n};\n\nvar _05Json = {\n json: json\n};\n\n/** match any terms after this phrase */\nvar lookAhead = function lookAhead(regs) {\n // if empty match string, return everything after\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getAfter = function getAfter(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getAfter(term.next); //recursion\n }\n };\n\n var all = this.terms();\n var lastTerm = all[all.length - 1];\n getAfter(lastTerm.next);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[0].id, terms.length);\n return p.match(regs);\n};\n/** match any terms before this phrase */\n\n\nvar lookBehind = function lookBehind(regs) {\n // if empty match string, return everything before\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getBefore = function getBefore(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getBefore(term.prev); //recursion\n }\n };\n\n var term = pool.get(this.start);\n getBefore(term.prev);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[terms.length - 1].id, terms.length);\n return p.match(regs);\n};\n\nvar _06Lookahead = {\n lookAhead: lookAhead,\n lookBehind: lookBehind\n};\n\nvar methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead);\n\n// try to avoid doing the match\nvar failFast$1 = function failFast(p, regs) {\n if (regs.length === 0) {\n return true;\n }\n\n for (var i = 0; i < regs.length; i += 1) {\n var reg = regs[i]; //logical quick-ones\n\n if (reg.optional !== true && reg.negative !== true) {\n //start/end impossibilites\n if (reg.start === true && i > 0) {\n return true;\n }\n } //this is not possible\n\n\n if (reg.anything === true && reg.negative === true) {\n return true;\n }\n }\n\n return false;\n};\n\nvar _02FailFast = failFast$1;\n\nvar _matchLogic = createCommonjsModule(function (module, exports) {\n //found a match? it's greedy? keep going!\n exports.getGreedy = function (state, endReg) {\n // for greedy checking, we no longer care about the reg.start\n // value, and leaving it can cause failures for anchored greedy\n // matches. ditto for end-greedy matches: we need an earlier non-\n // ending match to succceed until we get to the actual end.\n var reg = Object.assign({}, state.regs[state.r], {\n start: false,\n end: false\n });\n var start = state.t;\n\n for (; state.t < state.terms.length; state.t += 1) {\n //stop for next-reg match\n if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) {\n return state.t;\n }\n\n var count = state.t - start + 1; // is it max-length now?\n\n if (reg.max !== undefined && count === reg.max) {\n return state.t;\n } //stop here\n\n\n if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null;\n }\n\n return state.t;\n }\n }\n\n return state.t;\n }; //'unspecific greedy' is a weird situation.\n\n\n exports.greedyTo = function (state, nextReg) {\n var t = state.t; //if there's no next one, just go off the end!\n\n if (!nextReg) {\n return state.terms.length;\n } //otherwise, we're looking for the next one\n\n\n for (; t < state.terms.length; t += 1) {\n if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) {\n return t;\n }\n } //guess it doesn't exist, then.\n\n\n return null;\n }; //we have a special case where an end-anchored greedy match may need to\n //start matching before the actual end; we do this by (temporarily!)\n //removing the \"end\" property from the matching token... since this is\n //very situation-specific, we *only* do this when we really need to.\n\n\n exports.isEndGreedy = function (reg, state) {\n if (reg.end === true && reg.greedy === true) {\n if (state.start_i + state.t < state.phrase_length - 1) {\n var tmpReg = Object.assign({}, reg, {\n end: false\n });\n\n if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) {\n return true;\n }\n }\n }\n\n return false;\n }; // match complex OR cases like (a|b|foo bar)\n\n\n exports.doOrBlock = function (state) {\n var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var block = state.regs[state.r];\n var wasFound = false; // do each multiword sequence\n\n for (var c = 0; c < block.choices.length; c += 1) {\n // try to match this list of tokens\n var regs = block.choices[c];\n wasFound = regs.every(function (cr, w_index) {\n var extra = 0;\n var t = state.t + w_index + skipN + extra;\n\n if (state.terms[t] === undefined) {\n return false;\n }\n\n var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)'\n\n if (foundBlock === true && cr.greedy === true) {\n for (var i = 1; i < state.terms.length; i += 1) {\n var term = state.terms[t + i];\n\n if (term) {\n var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length);\n\n if (keepGoing === true) {\n extra += 1;\n } else {\n break;\n }\n }\n }\n }\n\n skipN += extra;\n return foundBlock;\n });\n\n if (wasFound) {\n skipN += regs.length;\n break;\n }\n } // we found a match - is it greedy though?\n\n\n if (wasFound && block.greedy === true) {\n return exports.doOrBlock(state, skipN); // try it again!\n }\n\n return skipN;\n }; // match AND cases like (#Noun && foo)\n\n\n exports.doAndBlock = function (state) {\n var longest = 0; // all blocks must match, and we return the greediest match\n\n var reg = state.regs[state.r];\n var allDidMatch = reg.choices.every(function (block) {\n // for multi-word blocks, all must match\n var allWords = block.every(function (cr, w_index) {\n var tryTerm = state.t + w_index;\n\n if (state.terms[tryTerm] === undefined) {\n return false;\n }\n\n return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length);\n });\n\n if (allWords === true && block.length > longest) {\n longest = block.length;\n }\n\n return allWords;\n });\n\n if (allDidMatch === true) {\n return longest;\n }\n\n return false;\n }; // get or create named group\n\n\n exports.getGroup = function (state, term_index, name) {\n if (state.groups[state.groupId]) {\n return state.groups[state.groupId];\n }\n\n var termId = state.terms[term_index].id;\n state.groups[state.groupId] = {\n group: String(name),\n start: termId,\n length: 0\n };\n return state.groups[state.groupId];\n };\n});\n\n/** tries to match a sequence of terms, starting from here */\n\nvar tryHere = function tryHere(terms, regs, start_i, phrase_length) {\n // all the variables that matter\n var state = {\n t: 0,\n //the term index we're on\n terms: terms,\n //the working slice of term objects\n r: 0,\n // the reg index we're on\n regs: regs,\n //our match conditions\n groups: {},\n //all named-group matches\n start_i: start_i,\n // term index we're starting from\n phrase_length: phrase_length,\n // # of terms in the sentence\n hasGroup: false,\n groupId: null,\n previousGroup: null\n }; // we must satisfy each rule in 'regs'\n\n for (; state.r < regs.length; state.r += 1) {\n var reg = regs[state.r]; // Check if this reg has a named capture group\n\n state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same\n\n if (state.hasGroup === true) {\n var prev = regs[state.r - 1];\n\n if (prev && prev.named === reg.named && state.previousGroup) {\n state.groupId = state.previousGroup;\n } else {\n state.groupId = _id(reg.named);\n state.previousGroup = state.groupId;\n }\n } //have we run-out of terms?\n\n\n if (!state.terms[state.t]) {\n //are all remaining regs optional or negative?\n var haveNeeds = regs.slice(state.r).some(function (remain) {\n return !remain.optional;\n });\n\n if (haveNeeds === false) {\n break; //done!\n }\n\n return null; // die\n } //support 'unspecific greedy' .* properly\n\n\n if (reg.anything === true && reg.greedy === true) {\n var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough\n\n if (reg.min !== undefined && skipto - state.t < reg.min) {\n return null;\n } // reduce it back, if it's too long\n\n\n if (reg.max !== undefined && skipto - state.t > reg.max) {\n state.t = state.t + reg.max;\n continue;\n }\n\n if (skipto === null) {\n return null; //couldn't find it\n } // is it really this easy?....\n\n\n if (state.hasGroup === true) {\n var g = _matchLogic.getGroup(state, state.t, reg.named);\n g.length = skipto - state.t;\n }\n\n state.t = skipto;\n continue;\n } // support multi-word OR (a|b|foo bar)\n\n\n if (reg.choices !== undefined && reg.operator === 'or') {\n var skipNum = _matchLogic.doOrBlock(state);\n\n if (skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g.length += skipNum;\n }\n\n state.t += skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // support AND (#Noun && foo) blocks\n\n\n if (reg.choices !== undefined && reg.operator === 'and') {\n var _skipNum = _matchLogic.doAndBlock(state);\n\n if (_skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g2 = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g2.length += _skipNum;\n }\n\n state.t += _skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // ok, finally test the term/reg\n\n\n var term = state.terms[state.t];\n var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length);\n\n if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) {\n var startAt = state.t; // if it's a negative optional match... :0\n\n if (reg.optional && regs[state.r + 1] && reg.negative) {\n continue;\n } // okay, it was a match, but if it's optional too,\n // we should check the next reg too, to skip it?\n\n\n if (reg.optional && regs[state.r + 1]) {\n // does the next reg match it too?\n var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length);\n\n if (reg.negative || nextRegMatched) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n var nextTerm = state.terms[state.t + 1];\n\n if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) {\n state.r += 1;\n }\n }\n } //advance to the next term!\n\n\n state.t += 1; //check any ending '$' flags\n\n if (reg.end === true) {\n //if this isn't the last term, refuse the match\n if (state.t !== state.terms.length && reg.greedy !== true) {\n return null; //die\n }\n } //try keep it going!\n\n\n if (reg.greedy === true) {\n state.t = _matchLogic.getGreedy(state, regs[state.r + 1]);\n\n if (state.t === null) {\n return null; //greedy was too short\n }\n\n if (reg.min && reg.min > state.t) {\n return null; //greedy was too short\n } // if this was also an end-anchor match, check to see we really\n // reached the end\n\n\n if (reg.end === true && state.start_i + state.t !== phrase_length) {\n return null; //greedy didn't reach the end\n }\n }\n\n if (state.hasGroup === true) {\n // Get or create capture group\n var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length\n\n\n if (state.t > 1 && reg.greedy) {\n _g3.length += state.t - startAt;\n } else {\n _g3.length++;\n }\n }\n\n continue;\n } // ok, it doesn't match.\n // did it *actually match* a negative?\n\n\n if (reg.negative) {\n var tmpReg = Object.assign({}, reg);\n tmpReg.negative = false; // try removing it\n\n var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length);\n\n if (foundNeg === true) {\n return null; //bye!\n }\n } //bah, who cares, keep going\n\n\n if (reg.optional === true) {\n continue;\n } // should we skip-over an implicit word?\n\n\n if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) {\n // if the last match was implicit too, we're missing a word.\n if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) {\n return null;\n } // does the next one match?\n\n\n if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) {\n state.t += 2;\n continue;\n }\n }\n\n return null; //die\n } //return our result\n\n\n return {\n match: state.terms.slice(0, state.t),\n groups: state.groups\n };\n};\n\nvar _03TryMatch = tryHere;\n\n// final checks on the validity of our results\nvar postProcess$1 = function postProcess(terms, regs, matches) {\n if (!matches || matches.length === 0) {\n return matches;\n } // ensure end reg has the end term\n\n\n var atEnd = regs.some(function (r) {\n return r.end;\n });\n\n if (atEnd) {\n var lastTerm = terms[terms.length - 1];\n matches = matches.filter(function (_ref) {\n var arr = _ref.match;\n return arr.indexOf(lastTerm) !== -1;\n });\n }\n\n return matches;\n};\n\nvar _04PostProcess = postProcess$1;\n\n// supported suffix-flags:\n// suffixes: ? ] + * $ {2,6} ~\n// [\\?\\]\\+\\*\\$~]*\n// prefixes: ! [ ^\n// [\\!\\[\\^]*\n// match 'foo /yes/' and not 'foo/no/bar'\nvar bySlashes = /(?:^|\\s)([\\!\\[\\^]*(?:<[^<]*>)?\\/.*?[^\\\\\\/]\\/[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // match '(yes) but not foo(no)bar'\n\nvar byParentheses = /([\\!\\[\\^]*(?:<[^<]*>)?\\([^\\)]+[^\\\\\\)]\\)[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // okay\n\nvar byWord = / /g;\n\nvar isBlock = function isBlock(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\(/.test(str) && /\\)[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar isReg = function isReg(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\//.test(str) && /\\/[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar cleanUp = function cleanUp(arr) {\n arr = arr.map(function (str) {\n return str.trim();\n });\n arr = arr.filter(function (str) {\n return str;\n });\n return arr;\n};\n\nvar parseBlocks = function parseBlocks(txt) {\n // parse by /regex/ first\n var arr = txt.split(bySlashes);\n var res = []; // parse by (blocks), next\n\n arr.forEach(function (str) {\n if (isReg(str)) {\n res.push(str);\n return;\n }\n\n res = res.concat(str.split(byParentheses));\n });\n res = cleanUp(res); // split by spaces, now\n\n var _final = [];\n res.forEach(function (str) {\n if (isBlock(str)) {\n _final.push(str);\n } else if (isReg(str)) {\n _final.push(str);\n } else {\n _final = _final.concat(str.split(byWord));\n }\n });\n _final = cleanUp(_final);\n return _final;\n};\n\nvar _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses))\n\n/* break-down a match expression into this:\n{\n word:'',\n tag:'',\n regex:'',\n\n start:false,\n end:false,\n negative:false,\n anything:false,\n greedy:false,\n optional:false,\n\n named:'',\n choices:[],\n}\n*/\nvar hasMinMax = /\\{([0-9]+,?[0-9]*)\\}/;\nvar andSign = /&&/;\nvar captureName = new RegExp(/^<\\s*?(\\S+)\\s*?>/);\n\nvar titleCase$2 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar end = function end(str) {\n return str[str.length - 1];\n};\n\nvar start = function start(str) {\n return str[0];\n};\n\nvar stripStart = function stripStart(str) {\n return str.substr(1);\n};\n\nvar stripEnd = function stripEnd(str) {\n return str.substr(0, str.length - 1);\n};\n\nvar stripBoth = function stripBoth(str) {\n str = stripStart(str);\n str = stripEnd(str);\n return str;\n}; //\n\n\nvar parseToken = function parseToken(w) {\n var obj = {}; //collect any flags (do it twice)\n\n for (var i = 0; i < 2; i += 1) {\n //end-flag\n if (end(w) === '$') {\n obj.end = true;\n w = stripEnd(w);\n } //front-flag\n\n\n if (start(w) === '^') {\n obj.start = true;\n w = stripStart(w);\n } //capture group (this one can span multiple-terms)\n\n\n if (start(w) === '[' || end(w) === ']') {\n obj.named = true;\n\n if (start(w) === '[') {\n obj.groupType = end(w) === ']' ? 'single' : 'start';\n } else {\n obj.groupType = 'end';\n }\n\n w = w.replace(/^\\[/, '');\n w = w.replace(/\\]$/, ''); // Use capture group name\n\n if (start(w) === '<') {\n var res = captureName.exec(w);\n\n if (res.length >= 2) {\n obj.named = res[1];\n w = w.replace(res[0], '');\n }\n }\n } //back-flags\n\n\n if (end(w) === '+') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (end(w) === '?') {\n obj.optional = true;\n w = stripEnd(w);\n }\n\n if (start(w) === '!') {\n obj.negative = true; // obj.optional = true\n\n w = stripStart(w);\n } //wrapped-flags\n\n\n if (start(w) === '(' && end(w) === ')') {\n // support (one && two)\n if (andSign.test(w)) {\n obj.choices = w.split(andSign);\n obj.operator = 'and';\n } else {\n obj.choices = w.split('|');\n obj.operator = 'or';\n } //remove '(' and ')'\n\n\n obj.choices[0] = stripStart(obj.choices[0]);\n var last = obj.choices.length - 1;\n obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results\n\n obj.choices = obj.choices.map(function (s) {\n return s.trim();\n });\n obj.choices = obj.choices.filter(function (s) {\n return s;\n }); //recursion alert!\n\n obj.choices = obj.choices.map(function (str) {\n return str.split(/ /g).map(parseToken);\n });\n w = '';\n } //regex\n\n\n if (start(w) === '/' && end(w) === '/') {\n w = stripBoth(w);\n obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp\n\n return obj;\n } //soft-match\n\n\n if (start(w) === '~' && end(w) === '~') {\n w = stripBoth(w);\n obj.soft = true;\n obj.word = w;\n return obj;\n }\n } // support #Tag{1,9}\n\n\n if (hasMinMax.test(w) === true) {\n w = w.replace(hasMinMax, function (a, b) {\n var arr = b.split(/,/g);\n\n if (arr.length === 1) {\n // '{3}'\tExactly three times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[0]);\n } else {\n // '{2,4}' Two to four times\n // '{3,}' Three or more times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[1] || 999);\n } // use same method as '+'\n\n\n obj.greedy = true; // 0 as min means the same as '?'\n\n obj.optional = true;\n return '';\n });\n } //do the actual token content\n\n\n if (start(w) === '#') {\n obj.tag = stripStart(w);\n obj.tag = titleCase$2(obj.tag);\n return obj;\n } //dynamic function on a term object\n\n\n if (start(w) === '@') {\n obj.method = stripStart(w);\n return obj;\n }\n\n if (w === '.') {\n obj.anything = true;\n return obj;\n } //support alone-astrix\n\n\n if (w === '*') {\n obj.anything = true;\n obj.greedy = true;\n obj.optional = true;\n return obj;\n }\n\n if (w) {\n //somehow handle encoded-chars?\n w = w.replace('\\\\*', '*');\n w = w.replace('\\\\.', '.');\n obj.word = w.toLowerCase();\n }\n\n return obj;\n};\n\nvar _02ParseToken = parseToken;\n\n// name any [unnamed] capture-groups with a number\nvar nameGroups = function nameGroups(tokens) {\n var convert = false;\n var index = -1;\n var current; //'fill in' capture groups between start-end\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]; // Give name to un-named single tokens\n\n if (token.groupType === 'single' && token.named === true) {\n index += 1;\n token.named = index;\n continue;\n } // Start converting tokens\n\n\n if (token.groupType === 'start') {\n convert = true;\n\n if (typeof token.named === 'string' || typeof token.named === 'number') {\n current = token.named;\n } else {\n index += 1;\n current = index;\n }\n } // Ensure this token has the right name\n\n\n if (convert) {\n token.named = current;\n } // Stop converting tokens\n\n\n if (token.groupType === 'end') {\n convert = false;\n }\n }\n\n return tokens;\n}; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word\n\n\nvar doFastOrMode = function doFastOrMode(tokens) {\n return tokens.map(function (token) {\n if (token.choices !== undefined) {\n // are they all straight-up words? then optimize them.\n var shouldPack = token.choices.every(function (block) {\n if (block.length !== 1) {\n return false;\n }\n\n var reg = block[0];\n\n if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) {\n return true; //reg is simple-enough\n }\n\n return false;\n });\n\n if (shouldPack === true) {\n var oneOf = {};\n token.choices.forEach(function (block) {\n oneOf[block[0].word] = true;\n });\n token.fastOr = oneOf;\n delete token.choices;\n }\n }\n\n return token;\n });\n}; // allow multiword OR (foo|one two)\n// const doMultiWord = function (tokens) {\n// return tokens.map(token => {\n// if (token.choices !== undefined) {\n// let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false\n// if (isMulti !== false) {\n// token.multiword = true\n// // turn all choices into arrays\n// token.choices = token.choices.map(choice => {\n// if (choice.word) {\n// choice.sequence = choice.word.split(hasASpace)\n// delete choice.word\n// }\n// return choice\n// })\n// }\n// }\n// return token\n// })\n// }\n// const doBlockMode = function (tokens) {\n// return tokens.map(token => {\n// // we've already setup fastOr mode\n// if (token.choices !== undefined) {\n// // console.log(token)\n// }\n// return token\n// })\n// }\n\n\nvar postProcess = function postProcess(tokens) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // ensure all capture groups are filled between start and end\n // give all capture groups names\n var count = tokens.filter(function (t) {\n return t.groupType;\n }).length;\n\n if (count > 0) {\n tokens = nameGroups(tokens);\n } // convert 'choices' format to 'fastOr' format\n\n\n if (!opts.fuzzy) {\n tokens = doFastOrMode(tokens);\n } // support multiword OR (foo bar|baz)\n // tokens = doMultiWord(tokens)\n // support (one two three)\n // tokens = doBlockMode(tokens)\n\n\n return tokens;\n};\n\nvar _03PostProcess = postProcess;\n\nvar isArray$2 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn an array into a 'choices' list\n\n\nvar byArray = function byArray(arr) {\n var blocks = arr.map(function (s) {\n return [{\n word: s\n }];\n });\n return [{\n choices: blocks,\n operator: 'or'\n }];\n}; // turn a Doc object into a reg of ids to lookup\n\n\nvar fromDoc = function fromDoc(doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return [];\n }\n\n var regs = [];\n doc.list.forEach(function (p) {\n var ids = [];\n p.terms().forEach(function (t) {\n ids.push(t.id);\n });\n regs.push(ids);\n });\n return [{\n idBlocks: regs\n }];\n}; // add fuzziness etc to each reg\n\n\nvar addOptions = function addOptions(tokens, opts) {\n // add default fuzzy-search limit\n if (opts.fuzzy === true) {\n opts.fuzzy = 0.85;\n }\n\n if (typeof opts.fuzzy === 'number') {\n tokens = tokens.map(function (reg) {\n // add a fuzzy-match on 'word' tokens\n if (opts.fuzzy > 0 && reg.word) {\n reg.fuzzy = opts.fuzzy;\n } //add it to or|and choices too\n\n\n if (reg.choices) {\n reg.choices.forEach(function (block) {\n block.forEach(function (r) {\n r.fuzzy = opts.fuzzy;\n });\n });\n }\n\n return reg;\n });\n }\n\n return tokens;\n};\n/** parse a match-syntax string into json */\n\n\nvar syntax = function syntax(input) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // fail-fast\n if (input === null || input === undefined || input === '') {\n return [];\n } //try to support a ton of different formats:\n\n\n if (_typeof(input) === 'object') {\n if (isArray$2(input)) {\n if (input.length === 0 || !input[0]) {\n return [];\n } //is it a pre-parsed reg-list?\n\n\n if (_typeof(input[0]) === 'object') {\n return input;\n } //support a flat array of normalized words\n\n\n if (typeof input[0] === 'string') {\n return byArray(input);\n }\n } //support passing-in a compromise object as a match\n\n\n if (input && input.isA === 'Doc') {\n return fromDoc(input);\n }\n\n return [];\n }\n\n if (typeof input === 'number') {\n input = String(input); //go for it?\n }\n\n var tokens = _01ParseBlocks(input); //turn them into objects\n\n tokens = tokens.map(function (str) {\n return _02ParseToken(str);\n }); //clean up anything weird\n\n tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc\n\n tokens = addOptions(tokens, opts); // console.log(tokens)\n\n return tokens;\n};\n\nvar matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)'))\n\n// match an explicit sequence of term ids\n// take a phrase and find any of the idBlocks in it\nvar idLookup = function idLookup(terms, regs) {\n var matches = [];\n var blocklist = regs[0].idBlocks;\n\n var _loop = function _loop(_t) {\n blocklist.forEach(function (block) {\n if (block.length === 0) {\n t = _t;\n return;\n }\n\n var foundAll = block.every(function (id, i) {\n t = _t;\n return terms[_t + i].id === id;\n });\n\n if (foundAll) {\n matches.push({\n match: terms.slice(_t, _t + block.length)\n }); // skip top-loop forward\n\n _t += block.length - 1;\n }\n });\n t = _t;\n };\n\n for (var t = 0; t < terms.length; t += 1) {\n _loop(t);\n }\n\n return matches;\n};\n\nvar idLookup_1 = idLookup;\n\n/** returns a simple array of arrays */\n\nvar matchAll = function matchAll(p, regs) {\n var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n //if we forgot to parse it..\n if (typeof regs === 'string') {\n regs = matchSyntax(regs);\n } //try to dismiss it, at-once\n\n\n if (_02FailFast(p, regs) === true) {\n return [];\n } //any match needs to be this long, at least\n\n\n var minLength = regs.filter(function (r) {\n return r.optional !== true && r.negative !== true;\n }).length;\n var terms = p.terms();\n var matches = []; // these id-lookups can be super-fast\n\n if (regs[0].idBlocks) {\n var res = idLookup_1(terms, regs);\n\n if (res && res.length > 0) {\n return _04PostProcess(terms, regs, res);\n }\n } //optimisation for '^' start logic\n\n\n if (regs[0].start === true) {\n var _res = _03TryMatch(terms, regs, 0, terms.length);\n\n if (_res && _res.match && _res.match.length > 0) {\n _res.match = _res.match.filter(function (m) {\n return m;\n });\n matches.push(_res);\n }\n\n return _04PostProcess(terms, regs, matches);\n } //try starting, from every term\n\n\n for (var i = 0; i < terms.length; i += 1) {\n // slice may be too short\n if (i + minLength > terms.length) {\n break;\n } //try it!\n\n\n var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length);\n\n if (_res2 && _res2.match && _res2.match.length > 0) {\n //zoom forward!\n i += _res2.match.length - 1; //[capture-groups] return some null responses\n\n _res2.match = _res2.match.filter(function (m) {\n return m;\n });\n matches.push(_res2); //ok, maybe that's enough?\n\n if (matchOne === true) {\n return _04PostProcess(terms, regs, matches);\n }\n }\n }\n\n return _04PostProcess(terms, regs, matches);\n};\n\nvar _01MatchAll = matchAll;\n\n/** return anything that doesn't match.\n * returns a simple array of arrays\n */\n\nvar notMatch = function notMatch(p, regs) {\n var found = {};\n var arr = _01MatchAll(p, regs);\n arr.forEach(function (_ref) {\n var ts = _ref.match;\n ts.forEach(function (t) {\n found[t.id] = true;\n });\n }); //return anything not found\n\n var terms = p.terms();\n var result = [];\n var current = [];\n terms.forEach(function (t) {\n if (found[t.id] === true) {\n if (current.length > 0) {\n result.push(current);\n current = [];\n }\n\n return;\n }\n\n current.push(t);\n });\n\n if (current.length > 0) {\n result.push(current);\n }\n\n return result;\n};\n\nvar not$1 = notMatch;\n\n/** return an array of matching phrases */\n\nvar match_1 = function match_1(regs) {\n var _this = this;\n\n var justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var matches = _01MatchAll(this, regs, justOne); //make them phrase objects\n\n matches = matches.map(function (_ref) {\n var match = _ref.match,\n groups = _ref.groups;\n\n var p = _this.buildFrom(match[0].id, match.length, groups);\n\n p.cache.terms = match;\n return p;\n });\n return matches;\n};\n/** return boolean if one match is found */\n\n\nvar has = function has(regs) {\n var matches = _01MatchAll(this, regs, true);\n return matches.length > 0;\n};\n/** remove all matches from the result */\n\n\nvar not = function not(regs) {\n var _this2 = this;\n\n var matches = not$1(this, regs); //make them phrase objects\n\n matches = matches.map(function (list) {\n return _this2.buildFrom(list[0].id, list.length);\n });\n return matches;\n};\n/** return a list of phrases that can have this tag */\n\n\nvar canBe$1 = function canBe(tag, world) {\n var _this3 = this;\n\n var results = [];\n var terms = this.terms();\n var previous = false;\n\n for (var i = 0; i < terms.length; i += 1) {\n var can = terms[i].canBe(tag, world);\n\n if (can === true) {\n if (previous === true) {\n //add it to the end\n results[results.length - 1].push(terms[i]);\n } else {\n results.push([terms[i]]); //make a new one\n }\n\n previous = can;\n }\n } //turn them into Phrase objects\n\n\n results = results.filter(function (a) {\n return a.length > 0;\n }).map(function (arr) {\n return _this3.buildFrom(arr[0].id, arr.length);\n });\n return results;\n};\n\nvar match = {\n match: match_1,\n has: has,\n not: not,\n canBe: canBe$1\n};\n\nvar Phrase = function Phrase(id, length, pool) {\n _classCallCheck(this, Phrase);\n\n this.start = id;\n this.length = length;\n this.isA = 'Phrase'; // easier than .constructor...\n\n Object.defineProperty(this, 'pool', {\n enumerable: false,\n writable: true,\n value: pool\n });\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, 'groups', {\n enumerable: false,\n writable: true,\n value: {}\n });\n};\n/** create a new Phrase object from an id and length */\n\n\nPhrase.prototype.buildFrom = function (id, length, groups) {\n var p = new Phrase(id, length, this.pool); //copy-over or replace capture-groups too\n\n if (groups && Object.keys(groups).length > 0) {\n p.groups = groups;\n } else {\n p.groups = this.groups;\n }\n\n return p;\n}; //apply methods\n\n\nObject.assign(Phrase.prototype, match);\nObject.assign(Phrase.prototype, methods$7); //apply aliases\n\nvar aliases$1 = {\n term: 'terms'\n};\nObject.keys(aliases$1).forEach(function (k) {\n return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]];\n});\nvar Phrase_1 = Phrase;\n\n/** a key-value store of all terms in our Document */\nvar Pool = /*#__PURE__*/function () {\n function Pool() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Pool);\n\n //quiet this property in console.logs\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: words\n });\n }\n /** throw a new term object in */\n\n\n _createClass(Pool, [{\n key: \"add\",\n value: function add(term) {\n this.words[term.id] = term;\n return this;\n }\n /** find a term by it's id */\n\n }, {\n key: \"get\",\n value: function get(id) {\n return this.words[id];\n }\n /** find a term by it's id */\n\n }, {\n key: \"remove\",\n value: function remove(id) {\n delete this.words[id];\n }\n }, {\n key: \"merge\",\n value: function merge(pool) {\n Object.assign(this.words, pool.words);\n return this;\n }\n /** helper method */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length\n };\n }\n }]);\n\n return Pool;\n}();\n/** make a deep-copy of all terms */\n\n\nPool.prototype.clone = function () {\n var _this = this;\n\n var keys = Object.keys(this.words);\n var words = keys.reduce(function (h, k) {\n var t = _this.words[k].clone();\n\n h[t.id] = t;\n return h;\n }, {});\n return new Pool(words);\n};\n\nvar Pool_1 = Pool;\n\n//add forward/backward 'linked-list' prev/next ids\nvar linkTerms = function linkTerms(terms) {\n terms.forEach(function (term, i) {\n if (i > 0) {\n term.prev = terms[i - 1].id;\n }\n\n if (terms[i + 1]) {\n term.next = terms[i + 1].id;\n }\n });\n};\n\nvar _linkTerms = linkTerms;\n\n//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.\n// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n// @spencermountain 2017 MIT\n//proper nouns with exclamation marks\n// const blacklist = {\n// yahoo: true,\n// joomla: true,\n// jeopardy: true,\n// }\n//regs-\nvar initSplit = /(\\S.+?[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049])(?=\\s+|$)/g;\nvar hasSomething = /\\S/;\nvar isAcronym$1 = /[ .][A-Z]\\.? *$/i;\nvar hasEllipse = /(?:\\u2026|\\.{2,}) *$/;\nvar newLine = /((?:\\r?\\n|\\r)+)/; // Match different new-line formats\n\nvar hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i;\nvar startWhitespace = /^\\s+/; // Start with a regex:\n\nvar naiive_split = function naiive_split(text) {\n var all = []; //first, split by newline\n\n var lines = text.split(newLine);\n\n for (var i = 0; i < lines.length; i++) {\n //split by period, question-mark, and exclamation-mark\n var arr = lines[i].split(initSplit);\n\n for (var o = 0; o < arr.length; o++) {\n all.push(arr[o]);\n }\n }\n\n return all;\n};\n/** does this look like a sentence? */\n\n\nvar isSentence = function isSentence(str, abbrevs) {\n // check for 'F.B.I.'\n if (isAcronym$1.test(str) === true) {\n return false;\n } //check for '...'\n\n\n if (hasEllipse.test(str) === true) {\n return false;\n } // must have a letter\n\n\n if (hasLetter.test(str) === false) {\n return false;\n }\n\n var txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '');\n var words = txt.split(' ');\n var lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.'\n\n if (abbrevs.hasOwnProperty(lastWord)) {\n return false;\n } // //check for jeopardy!\n // if (blacklist.hasOwnProperty(lastWord)) {\n // return false\n // }\n\n\n return true;\n};\n\nvar splitSentences = function splitSentences(text, world) {\n var abbrevs = world.cache.abbreviations;\n text = text || '';\n text = String(text);\n var sentences = []; // First do a greedy-split..\n\n var chunks = []; // Ensure it 'smells like' a sentence\n\n if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n return sentences;\n } // cleanup unicode-spaces\n\n\n text = text.replace('\\xa0', ' '); // Start somewhere:\n\n var splits = naiive_split(text); // Filter-out the crap ones\n\n for (var i = 0; i < splits.length; i++) {\n var s = splits[i];\n\n if (s === undefined || s === '') {\n continue;\n } //this is meaningful whitespace\n\n\n if (hasSomething.test(s) === false) {\n //add it to the last one\n if (chunks[chunks.length - 1]) {\n chunks[chunks.length - 1] += s;\n continue;\n } else if (splits[i + 1]) {\n //add it to the next one\n splits[i + 1] = s + splits[i + 1];\n continue;\n }\n } //else, only whitespace, no terms, no sentence\n\n\n chunks.push(s);\n } //detection of non-sentence chunks:\n //loop through these chunks, and join the non-sentence chunks back together..\n\n\n for (var _i = 0; _i < chunks.length; _i++) {\n var c = chunks[_i]; //should this chunk be combined with the next one?\n\n if (chunks[_i + 1] && isSentence(c, abbrevs) === false) {\n chunks[_i + 1] = c + (chunks[_i + 1] || '');\n } else if (c && c.length > 0) {\n //&& hasLetter.test(c)\n //this chunk is a proper sentence..\n sentences.push(c);\n chunks[_i] = '';\n }\n } //if we never got a sentence, return the given text\n\n\n if (sentences.length === 0) {\n return [text];\n } //move whitespace to the ends of sentences, when possible\n //['hello',' world'] -> ['hello ','world']\n\n\n for (var _i2 = 1; _i2 < sentences.length; _i2 += 1) {\n var ws = sentences[_i2].match(startWhitespace);\n\n if (ws !== null) {\n sentences[_i2 - 1] += ws[0];\n sentences[_i2] = sentences[_i2].replace(startWhitespace, '');\n }\n }\n\n return sentences;\n};\n\nvar _01Sentences = splitSentences; // console.log(sentence_parser('john f. kennedy'));\n\nvar wordlike = /\\S/;\nvar isBoundary = /^[!?.]+$/;\nvar naiiveSplit = /(\\S+)/;\nvar isSlash = /[a-z] ?\\/ ?[a-z]*$/;\nvar notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '\"', \"'\", '`'];\nnotWord = notWord.reduce(function (h, c) {\n h[c] = true;\n return h;\n}, {});\n\nvar hasHyphen = function hasHyphen(str) {\n //dont split 're-do'\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n return false;\n } //letter-number 'aug-20'\n\n\n var reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)(-|–|—)([a-z0-9\\u00C0-\\u00FF].*)/i;\n\n if (reg.test(str) === true) {\n return true;\n } //number-letter '20-aug'\n\n\n var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\\u00C0-\\u00FF`\"'/-]+$)/i;\n\n if (reg2.test(str) === true) {\n return true;\n } //support weird number-emdash combo '2010–2011'\n // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i\n // if (reg2.test(str)) {\n // return true\n // }\n\n\n return false;\n}; // 'he / she' should be one word\n\n\nvar combineSlashes = function combineSlashes(arr) {\n for (var i = 1; i < arr.length - 1; i++) {\n if (isSlash.test(arr[i])) {\n arr[i - 1] += arr[i] + arr[i + 1];\n arr[i] = null;\n arr[i + 1] = null;\n }\n }\n\n return arr;\n};\n\nvar splitHyphens = function splitHyphens(word) {\n var arr = []; //support multiple-hyphenated-terms\n\n var hyphens = word.split(/[-–—]/);\n var whichDash = '-';\n var found = word.match(/[-–—]/);\n\n if (found && found[0]) {\n whichDash = found;\n }\n\n for (var o = 0; o < hyphens.length; o++) {\n if (o === hyphens.length - 1) {\n arr.push(hyphens[o]);\n } else {\n arr.push(hyphens[o] + whichDash);\n }\n }\n\n return arr;\n};\n\nvar isArray$1 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn a string into an array of strings (naiive for now, lumped later)\n\n\nvar splitWords = function splitWords(str) {\n var result = [];\n var arr = []; //start with a naiive split\n\n str = str || '';\n\n if (typeof str === 'number') {\n str = String(str);\n }\n\n if (isArray$1(str)) {\n return str;\n }\n\n var words = str.split(naiiveSplit);\n\n for (var i = 0; i < words.length; i++) {\n //split 'one-two'\n if (hasHyphen(words[i]) === true) {\n arr = arr.concat(splitHyphens(words[i]));\n continue;\n }\n\n arr.push(words[i]);\n } //greedy merge whitespace+arr to the right\n\n\n var carry = '';\n\n for (var _i = 0; _i < arr.length; _i++) {\n var word = arr[_i]; //if it's more than a whitespace\n\n if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n //put whitespace on end of previous term, if possible\n if (result.length > 0) {\n result[result.length - 1] += carry;\n result.push(word);\n } else {\n //otherwise, but whitespace before\n result.push(carry + word);\n }\n\n carry = '';\n } else {\n carry += word;\n }\n } //handle last one\n\n\n if (carry) {\n if (result.length === 0) {\n result[0] = '';\n }\n\n result[result.length - 1] += carry; //put it on the end\n } // combine 'one / two'\n\n\n result = combineSlashes(result); // remove empty results\n\n result = result.filter(function (s) {\n return s;\n });\n return result;\n};\n\nvar _02Words = splitWords;\n\nvar isArray = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n/** turn a string into an array of Phrase objects */\n\n\nvar fromText = function fromText() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var pool = arguments.length > 2 ? arguments[2] : undefined;\n var sentences = null; //a bit of validation, first\n\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text);\n } else if (isArray(text)) {\n sentences = text;\n }\n } //tokenize into words\n\n\n sentences = sentences || _01Sentences(text, world);\n sentences = sentences.map(function (str) {\n return _02Words(str);\n }); //turn them into proper objects\n\n pool = pool || new Pool_1();\n var phrases = sentences.map(function (terms) {\n terms = terms.map(function (str) {\n var term = new Term_1(str);\n pool.add(term);\n return term;\n }); //add next/previous ids\n\n _linkTerms(terms); //return phrase objects\n\n var p = new Phrase_1(terms[0].id, terms.length, pool);\n p.cache.terms = terms;\n return p;\n }); //return them ready for a Document object\n\n return phrases;\n};\n\nvar _01Tokenizer = fromText;\n\nvar fromJSON = function fromJSON(json, world) {\n var pool = new Pool_1();\n var phrases = json.map(function (p, k) {\n var terms = p.terms.map(function (o, i) {\n var term = new Term_1(o.text);\n term.pre = o.pre !== undefined ? o.pre : '';\n\n if (o.post === undefined) {\n o.post = ' '; //no given space for very last term\n\n if (i >= p.terms.length - 1) {\n o.post = '. ';\n\n if (k >= p.terms.length - 1) {\n o.post = '.';\n }\n }\n }\n\n term.post = o.post !== undefined ? o.post : ' ';\n\n if (o.tags) {\n o.tags.forEach(function (tag) {\n return term.tag(tag, '', world);\n });\n }\n\n pool.add(term);\n return term;\n }); //add prev/next links\n\n _linkTerms(terms); // return a proper Phrase object\n\n return new Phrase_1(terms[0].id, terms.length, pool);\n });\n return phrases;\n};\n\nvar fromJSON_1 = fromJSON;\n\nvar _version = '13.10.5';\n\nvar entity = ['Person', 'Place', 'Organization'];\nvar nouns$1 = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural'\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun'\n },\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization', 'Date']\n },\n FirstName: {\n isA: 'Person'\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName']\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName']\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName']\n },\n NickName: {\n isA: 'Person',\n notA: ['FirstName', 'LastName']\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName', 'Value']\n },\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization']\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City']\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country']\n },\n Region: {\n isA: ['Place', 'ProperNoun']\n },\n Address: {\n isA: 'Place'\n },\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place']\n },\n SportsTeam: {\n isA: 'Organization'\n },\n School: {\n isA: 'Organization'\n },\n Company: {\n isA: 'Organization'\n },\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular']\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun'\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place']\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity\n },\n //`john's`\n Possessive: {\n isA: 'Noun' // notA: 'Pronoun',\n\n }\n};\n\nvar verbs$1 = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value']\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'FutureTense']\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund']\n },\n //close the door!\n Imperative: {\n isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'],\n\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense']\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense']\n },\n // will walk\n FutureTense: {\n isA: 'Verb'\n },\n // is\n Copula: {\n isA: 'Verb'\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive']\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund'\n },\n Pluperfect: {\n isA: 'Verb'\n },\n // shown\n Participle: {\n isA: 'PastTense'\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb'\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb'\n },\n //this can be an adverb\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value']\n }\n};\n\nvar values = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal']\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal']\n },\n Fraction: {\n isA: 'Value',\n notA: ['Noun']\n },\n RomanNumeral: {\n isA: 'Cardinal',\n //can be a person, too\n notA: ['Ordinal', 'TextValue']\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue']\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue']\n },\n Money: {\n isA: 'Cardinal'\n },\n Percent: {\n isA: 'Value'\n }\n};\n\nvar anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord'];\nvar misc$1 = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value']\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective']\n },\n // better\n Comparative: {\n isA: ['Adjective']\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative']\n },\n NumberRange: {\n isA: ['Contraction']\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value']\n },\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Adverb', 'Preposition', 'Adjective']\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time']\n },\n WeekDay: {\n isA: ['Date', 'Noun']\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n notA: ['Adjective', 'ProperNoun']\n },\n // '9:20pm'\n Time: {\n isA: ['Date'],\n notA: ['AtMention']\n },\n //glue\n Determiner: {\n notA: anything\n },\n Conjunction: {\n notA: anything\n },\n Preposition: {\n notA: anything\n },\n // what, who, why\n QuestionWord: {\n notA: ['Determiner']\n },\n // peso, euro\n Currency: {\n isA: ['Noun']\n },\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb']\n },\n // dr.\n Abbreviation: {},\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email']\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n //non-exclusive\n Acronym: {\n notA: ['Plural', 'RomanNumeral']\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value']\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value']\n }\n};\n\n// i just made these up\nvar colorMap = {\n Noun: 'blue',\n Verb: 'green',\n Negative: 'green',\n Date: 'red',\n Value: 'red',\n Adjective: 'magenta',\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan'\n};\n/** add a debug color to some tags */\n\nvar addColors = function addColors(tags) {\n Object.keys(tags).forEach(function (k) {\n // assigned from plugin, for example\n if (tags[k].color) {\n tags[k].color = tags[k].color;\n return;\n } // defined above\n\n\n if (colorMap[k]) {\n tags[k].color = colorMap[k];\n return;\n }\n\n tags[k].isA.some(function (t) {\n if (colorMap[t]) {\n tags[k].color = colorMap[t];\n return true;\n }\n\n return false;\n });\n });\n return tags;\n};\n\nvar _color = addColors;\n\nvar unique$3 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; //add 'downward' tags (that immediately depend on this one)\n\n\nvar inferIsA = function inferIsA(tags) {\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k];\n var len = tag.isA.length;\n\n for (var i = 0; i < len; i++) {\n var down = tag.isA[i];\n\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA);\n }\n } // clean it up\n\n\n tag.isA = unique$3(tag.isA);\n });\n return tags;\n};\n\nvar _isA = inferIsA;\n\nvar unique$2 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; // crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\n\n\nvar inferNotA = function inferNotA(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.notA = tag.notA || [];\n tag.isA.forEach(function (down) {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n var notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || [];\n tag.notA = tag.notA.concat(notA);\n }\n }); // any tag that lists us as a conflict, we conflict it back.\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key);\n }\n } // clean it up\n\n\n tag.notA = unique$2(tag.notA);\n });\n return tags;\n};\n\nvar _notA = inferNotA;\n\n// a lineage is all 'incoming' tags that have this as 'isA'\nvar inferLineage = function inferLineage(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.lineage = []; // find all tags with it in their 'isA' set\n\n for (var i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i]);\n }\n }\n });\n return tags;\n};\n\nvar _lineage = inferLineage;\n\nvar validate = function validate(tags) {\n // cleanup format\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k]; // ensure isA is an array\n\n tag.isA = tag.isA || [];\n\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA];\n } // ensure notA is an array\n\n\n tag.notA = tag.notA || [];\n\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA];\n }\n });\n return tags;\n}; // build-out the tag-graph structure\n\n\nvar inferTags = function inferTags(tags) {\n // validate data\n tags = validate(tags); // build its 'down tags'\n\n tags = _isA(tags); // infer the conflicts\n\n tags = _notA(tags); // debug tag color\n\n tags = _color(tags); // find incoming links\n\n tags = _lineage(tags);\n return tags;\n};\n\nvar inference = inferTags;\n\nvar addIn = function addIn(obj, tags) {\n Object.keys(obj).forEach(function (k) {\n tags[k] = obj[k];\n });\n};\n\nvar build = function build() {\n var tags = {};\n addIn(nouns$1, tags);\n addIn(verbs$1, tags);\n addIn(values, tags);\n addIn(misc$1, tags); // do the graph-stuff\n\n tags = inference(tags);\n return tags;\n};\n\nvar tags = build();\n\nvar _data = {\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc\",\n \"Copula\": \"true¦a1is,w0;as,ere;m,re\",\n \"PastTense\": \"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan\",\n \"Condition\": \"true¦if,lest,unless\",\n \"Preposition\": \"true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Gerund\": \"true¦accord0be0develop0go0result0stain0;ing\",\n \"Negative\": \"true¦n0;ever,o0;!n,t\",\n \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n \"Plural\": \"true¦records\",\n \"Conjunction\": \"true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Abbreviation\": \"true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:15;1:12;2:18;a15b0Sc0Jd0Ce09f04gZhViUjel0kitty,lSmOnNoMpHquestionGrEs9t6u4w3;ay,om02;nc0Zs 3;doll0Kst0M; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoMt3uper bowl,yst14;ep4ri2u3;de0Xff;faSmoS;st1ze;al0i2o3;om,se;! mark;a6i1la5r4u3;dPrpoH;eroga00ie0Gobl0U;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em\",\n \"FemaleName\": \"true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt\",\n \"Honorific\": \"true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al\",\n \"SportsTeam\": \"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls\",\n \"Uncountable\": \"true¦0:1I;1:16;2:1X;a1Rb1Jc1Ad17e10f0Ug0Nh0Ii0Ej0Dknowled1Ql08mYnews,oXpTrOsDt8vi7w3;a5ea0Bi4oo3;d,l;ldlife,ne;rmth,t0;neg17ol0Ctae;e6h5oothpaste,r3una;affTou3;ble,sers,t;ermod1Mund0;a,nnis;aBcene0Aeri1hAil9kittl1now,o8p6t4u3;g10nshi0Q;ati1Le3;am,el;ace1Ee3;ci1ed;ap,cc0;k,v0;eep,ingl1;d0Dfe18l3nd,tish;m11t;a6e4ic3;e,ke0M;c3laxa0Isearch;ogni0Hrea0H;bi1in;aPe5hys2last9o3ress04;l3rk,w0;it2yA;a12trZ;bstetr2il,xygen;aAe8ilk,o5u3;mps,s3;ic;n3o0I;ey,o3;gamy;a3chan2;sl1t;chine3il,themat2; learn0Bry;aught0e5i4ogi0Su3;ck,g0I;ce,ghtn08ngui0QteratN;a3isM;th0;ewelAusti0L;ce,mp3nformaUtself;a3ortan0J;ti3;en0H;a6isto5o3;ck3mework,n3spitali0B;ey;ry;ir,libut,ppiD;ene6o4r3um,ymna0D;aCound;l3ssip;d,f; 3t2;editQpo3;ol;i7lour,o4urnit3;ure;od,rgive3uri0wl;ne3;ss;c9sh;conom2duca8lectr7n5quip6th2very3;body,o3thH;ne;joy3tertain3;ment;iciPon2;tiI;ar4iabet1raugh4;es;ts;aAelcius,h6iv2l5o3urrency;al,ld w3nfusiDttD;ar;ass2oth5;aos,e3;e4w3;ing;se;r7sh;a7eef,i4lood,owls,read,utt0;er;lliar4s3;on;ds;g3ss;ga3;ge;c8dvi7ero5ir4mnes3rt,thlet2;ty;craft;b2d3naut2;ynam2;ce;id,ou3;st2;ics\",\n \"Infinitive\": \"true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s\",\n \"Organization\": \"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c\",\n \"Demonym\": \"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n \"Possessive\": \"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne\",\n \"Currency\": \"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s\",\n \"City\": \"true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",\n \"Country\": \"true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an\",\n \"Region\": \"true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma\",\n \"Place\": \"true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s\",\n \"MaleName\": \"true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:B6;7:CW;8:C8;9:DK;A:DL;B:A6;C:C2;aCObBLcAJd9He8Nf85g7Ih6Ui6Ej5Ek52l4Dm35n2To2Np2Fqu2Dr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Tkaria,n5W;hEkD;!aCM;ar5WeCL;aLoFuD;sDu2KvBY;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBMssX;avi3ho4;aMeKiFoDyaC2;jcie8Clfgang,odrow,utD;!er;lDnst1;bFey,frD1lD;aBDiD;am,e,s;e9Fur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5C;avAWeDist0oy,um0;ntAOv5Zy;bGdFmDny;!as,mDoharu;aCTie,y;!d;iBy;mDt5;!my,othy;adFeoEia8GomD;!as;!do8P;!de5;dGrD;en9LrD;an9KeDy;ll,n9J;!dy;dgh,ha,iDnn3req,tsu4T;cB5ka;aTcotRePhLiJoHpenc3tDur1Vylve9Kzym1;anFeDua8D;f0phBTvDwa8C;e62ie;!islaw,l8;lom1nBFuD;leyma7ta;dDlBm1yabonga;!dhart7Bn8;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y7;aDbasti0k2Al4Rrg4Oth,ymoAU;m5n;!tD;!ie,y;lEmDnti2Eq5Bul;!ke5MmCu4;ik,vato7X;aYeUheAAiQoHuEyD;an,ou;b7NdEf5pe7SssD;!elBZ;ol3Fy;an,bKcJdIel,geHh0landBQmGnFry,sEyD;!ce;coe,s;!aAHnC;an,eo;l47r;e5Og3n8olfo,ri7A;co,ky;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on\",\n \"LastName\": \"true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta\",\n \"WeekDay\": \"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",\n \"Month\": \"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il\",\n \"Date\": \"true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w\",\n \"FirstName\": \"true¦aKblair,cGdevFgabrieEhinaDjBk8l7m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is\",\n \"Person\": \"true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er\",\n \"Verb\": \"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en\",\n \"PhrasalVerb\": \"true¦0:7E;1:72;2:7Q;3:7G;4:6V;5:7T;6:7I;7:6O;8:71;9:6P;A:5T;B:7C;C:7J;D:6Q;E:7L;F:7D;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietDr1Ms0FtVuTvacuum 1wLyammerBzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r7s7;eel Fip G;aJiIn2L;gh 0Crd0;n Fr 3S;it 60k7lk6rm 6Bsh 7Lt6Ov53;rgeBsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleDp G;ckDde 02;neDp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov8up;aIe 4Vll52;m 1r 01;ckBke Jlk I;ov8u53;aIba4d2in,o3Fup;ba4ft8p58w3;a0Nc0Me0Gh0Ci09l05m04n03o02pXquare WtOuMwI;earKiI;ngJtch I;aw3ba4o75; by;ck Iit 1m 1ss0;in,up;aNe10iMoKrIucH;aigh1ZiI;ke 6En3C;p Irm22;by,in,oC;nHr 1tc3V;cHmp0nd Ir6Xve6y 1;ba4d2up;d2oCup;arHeLiKlJrIurB;ingBuc7;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row F;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v8;gn 4WngJt Iz7;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v7;aTeQiPoLuI;b 4Sle0n Istl7;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arEin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleBess JiLoI;p 1;ah1Ron;iIp 5Fr3XurDwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leBn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt F;arrowDerd0oI;d6teD;aQeNiMoKuI;ddl7lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur7lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft8ba4d2forw2Jin45ov8uI;nd8p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arEd2;av1Mt 36velI; o3T;c7p 1sh ItchBugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic7mpA;ke30tD;c39zz 1;aUePiMoJuI;nkerDrry 1s0Z;lIneArse2W;d Ie 1;ba4d2fast,o05up;de Jt I;ba4on,up;aw3o5;aIlp0;d Kl 2Ar It 1;fIof;rom;in,oXu1H;cHm 1nJve Iz25;it,to;d Ig 2EkerK;d2in,o5;aWeQive Oloss 22oKrJunI; f0Q;in3Gow 2A; Iof 0Y;aJb1Dit,oIrEt0Su18;ff,n,v8;bo5ft8hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrEup;ff,n,ut,v8;cJhIl1WrEt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownBy 1;aw3oC;eIshe1N; 1z7;lKol I;aIwi1G;bo5rE;d 9low 1;aJeIip0;sh0;g 9ke0mIrI;e G;gPlNnLrJsIzzle0;h G;e Im 1;aw3ba4up;d0isI;h 1;e Il 19;aw3fN;ht ba4ure0;eNnJsI;s 1;cKd I;fIoC;or;e F;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v8;a4ehi20;e J;at0dge0nd Iy7;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl7;aYhVlean 9oIross Fut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd8;ogeth8;ut,v8;th,wI;ard;a4y;pIrEw3;art;eIipA;ck FeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Ft6;ry JvI;e 01;aw3o18;l ImD;aIba4d2o16up;rEw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t F;in,o5up;e I;ov8;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrEw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgDil 9n7oLssKttlJunce Ix F;aw3ba4;e 9; arE;k Ft 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov8up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h F;ainBe F;g FkB; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arEo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt\",\n \"Comparable\": \"true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd\",\n \"TextOrdinal\": \"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th\",\n \"Cardinal\": \"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s\",\n \"Expression\": \"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la\",\n \"Adverb\": \"true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Determiner\": \"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n};\n\nvar seq = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n cache$1 = seq.split(\"\").reduce(function (n, o, e) {\n return n[o] = e, n;\n}, {}),\n toAlphaCode = function toAlphaCode(n) {\n if (void 0 !== seq[n]) return seq[n];\n var o = 1,\n e = 36,\n t = \"\";\n\n for (; n >= e; n -= e, o++, e *= 36) {\n }\n\n for (; o--;) {\n var _o = n % 36;\n\n t = String.fromCharCode((_o < 10 ? 48 : 55) + _o) + t, n = (n - _o) / 36;\n }\n\n return t;\n},\n fromAlphaCode = function fromAlphaCode(n) {\n if (void 0 !== cache$1[n]) return cache$1[n];\n var o = 0,\n e = 1,\n t = 36,\n r = 1;\n\n for (; e < n.length; o += t, e++, t *= 36) {\n }\n\n for (var _e = n.length - 1; _e >= 0; _e--, r *= 36) {\n var _t = n.charCodeAt(_e) - 48;\n\n _t > 10 && (_t -= 7), o += _t * r;\n }\n\n return o;\n};\n\nvar encoding = {\n toAlphaCode: toAlphaCode,\n fromAlphaCode: fromAlphaCode\n},\n symbols = function symbols(n) {\n var o = new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");\n\n for (var e = 0; e < n.nodes.length; e++) {\n var t = o.exec(n.nodes[e]);\n\n if (!t) {\n n.symCount = e;\n break;\n }\n\n n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]);\n }\n\n n.nodes = n.nodes.slice(n.symCount, n.nodes.length);\n};\n\nvar indexFromRef = function indexFromRef(n, o, e) {\n var t = encoding.fromAlphaCode(o);\n return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount;\n},\n toArray = function toArray(n) {\n var o = [],\n e = function e(t, r) {\n var s = n.nodes[t];\n \"!\" === s[0] && (o.push(r), s = s.slice(1));\n var c = s.split(/([A-Z0-9,]+)/g);\n\n for (var _s = 0; _s < c.length; _s += 2) {\n var u = c[_s],\n i = c[_s + 1];\n if (!u) continue;\n var l = r + u;\n\n if (\",\" === i || void 0 === i) {\n o.push(l);\n continue;\n }\n\n var f = indexFromRef(n, i, t);\n e(f, l);\n }\n };\n\n return e(0, \"\"), o;\n},\n unpack = function unpack(n) {\n var o = {\n nodes: n.split(\";\"),\n syms: [],\n symCount: 0\n };\n return n.match(\":\") && symbols(o), toArray(o);\n};\n\nvar unpack_1$1 = unpack,\n unpack_1$1$1 = function unpack_1$1$1(n) {\n var o = n.split(\"|\").reduce(function (n, o) {\n var e = o.split(\"¦\");\n return n[e[0]] = e[1], n;\n }, {}),\n e = {};\n return Object.keys(o).forEach(function (n) {\n var t = unpack_1$1(o[n]);\n \"true\" === n && (n = !0);\n\n for (var _o2 = 0; _o2 < t.length; _o2++) {\n var r = t[_o2];\n !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n;\n }\n }), e;\n};\n\nvar efrtUnpack_min = unpack_1$1$1;\n\n//words that can't be compressed, for whatever reason\nvar misc = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n 'motel 6': 'Organization',\n g8: 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date',\n her: ['Possessive', 'Pronoun'],\n his: ['Possessive', 'Pronoun'],\n their: ['Possessive', 'Pronoun'],\n themselves: ['Possessive', 'Pronoun'],\n your: ['Possessive', 'Pronoun'],\n our: ['Possessive', 'Pronoun'],\n my: ['Possessive', 'Pronoun'],\n its: ['Possessive', 'Pronoun']\n};\n\nvar fancy = {\n Unit: function Unit(lex, w) {\n lex[w] = ['Abbreviation', 'Unit'];\n },\n Cardinal: function Cardinal(lex, w) {\n lex[w] = ['TextValue', 'Cardinal'];\n },\n TextOrdinal: function TextOrdinal(lex, w) {\n lex[w] = ['Ordinal', 'TextValue'];\n lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths'\n },\n // add plural/singular forms\n Singular: function Singular(lex, w, world) {\n lex[w] = 'Singular';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || 'Plural';\n },\n // conjugate these verbs\n Infinitive: function Infinitive(lex, w, world) {\n lex[w] = 'Infinitive';\n var conj = world.transforms.conjugate(w, world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]];\n lex[str] = lex[str] || tags[i]; // only if it's safe\n }\n },\n // conjugate other Adjectival forms\n Comparable: function Comparable(lex, w, world) {\n lex[w] = 'Comparable';\n var conj = world.transforms.adjectives(w);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var word = conj[tags[i]];\n lex[word] = lex[word] || tags[i]; // only if it's safe\n }\n },\n //conjugate phrasal-verbs\n PhrasalVerb: function PhrasalVerb(lex, w, world) {\n // whole thing\n lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form\n\n var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive'\n // //conjugate first word\n\n var conj = world.transforms.conjugate(words[0], world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]] + ' ' + words[1];\n lex[str] = lex[str] || ['PhrasalVerb', tags[i]];\n world.hasCompound[conj[tags[i]]] = true;\n }\n },\n // inflect our demonyms - 'germans'\n Demonym: function Demonym(lex, w, world) {\n lex[w] = 'Demonym';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe\n }\n}; // let a user explode their lexicon, too\n\nvar addWords = function addWords(wordsObj, lex, world) {\n Object.keys(wordsObj).forEach(function (word) {\n var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer\n\n if (tag === 'Abbreviation' || tag === 'Unit') {\n world.cache.abbreviations[word] = true;\n } // cache multi-words\n\n\n var multi = word.split(' ');\n\n if (multi.length > 1) {\n world.hasCompound[multi[0]] = true;\n } // do some ad-hoc work before adding it\n\n\n if (fancy[tag] !== undefined) {\n fancy[tag](lex, word, world);\n return;\n } //set it in our lexicon, basic\n\n\n if (lex[word] === undefined) {\n lex[word] = tag;\n return;\n } // if we already have that word\n\n\n if (typeof lex[word] === 'string') {\n lex[word] = [lex[word]];\n }\n\n if (typeof tag === 'string') {\n lex[word].push(tag);\n } else {\n lex[word] = lex[word].concat(tag);\n }\n });\n}; // we do some ad-hoc stuff here, building-up our word-list\n\n\nvar buildOut = function buildOut(world) {\n //our bag of words\n var lexicon = Object.assign({}, misc); // start adding words to the lex\n\n Object.keys(_data).forEach(function (tag) {\n var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks\n\n Object.keys(wordsObj).forEach(function (w) {\n wordsObj[w] = tag;\n });\n addWords(wordsObj, lexicon, world);\n }); // console.log(Object.keys(lexicon).length)\n\n return lexicon;\n};\n\nvar unpack_1 = {\n buildOut: buildOut,\n addWords: addWords\n};\n\n// add words from plurals and conjugations data\nvar addIrregulars = function addIrregulars(world) {\n //add irregular plural nouns\n var nouns = world.irregulars.nouns;\n var words = Object.keys(nouns);\n\n for (var i = 0; i < words.length; i++) {\n var w = words[i];\n world.words[w] = 'Singular';\n world.words[nouns[w]] = 'Plural';\n } // add irregular verb conjugations\n\n\n var verbs = world.irregulars.verbs;\n var keys = Object.keys(verbs);\n\n var _loop = function _loop(_i) {\n var inf = keys[_i]; //add only if it it's safe...\n\n world.words[inf] = world.words[inf] || 'Infinitive';\n var forms = world.transforms.conjugate(inf, world);\n forms = Object.assign(forms, verbs[inf]); //add the others\n\n Object.keys(forms).forEach(function (tag) {\n world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle\n\n if (world.words[forms[tag]] === 'Participle') {\n world.words[forms[tag]] = tag;\n }\n });\n };\n\n for (var _i = 0; _i < keys.length; _i++) {\n _loop(_i);\n }\n};\n\nvar addIrregulars_1 = addIrregulars;\n\n//nouns with irregular plural/singular forms\n//used in noun.inflect, and also in the lexicon.\nvar plurals = {\n addendum: 'addenda',\n alga: 'algae',\n alumna: 'alumnae',\n alumnus: 'alumni',\n analysis: 'analyses',\n antenna: 'antennae',\n appendix: 'appendices',\n avocado: 'avocados',\n axis: 'axes',\n bacillus: 'bacilli',\n barracks: 'barracks',\n beau: 'beaux',\n bus: 'buses',\n cactus: 'cacti',\n chateau: 'chateaux',\n child: 'children',\n circus: 'circuses',\n clothes: 'clothes',\n corpus: 'corpora',\n criterion: 'criteria',\n curriculum: 'curricula',\n database: 'databases',\n deer: 'deer',\n diagnosis: 'diagnoses',\n echo: 'echoes',\n embargo: 'embargoes',\n epoch: 'epochs',\n foot: 'feet',\n formula: 'formulae',\n fungus: 'fungi',\n genus: 'genera',\n goose: 'geese',\n halo: 'halos',\n hippopotamus: 'hippopotami',\n index: 'indices',\n larva: 'larvae',\n leaf: 'leaves',\n libretto: 'libretti',\n loaf: 'loaves',\n man: 'men',\n matrix: 'matrices',\n memorandum: 'memoranda',\n modulus: 'moduli',\n mosquito: 'mosquitoes',\n mouse: 'mice',\n // move: 'moves',\n nebula: 'nebulae',\n nucleus: 'nuclei',\n octopus: 'octopi',\n opus: 'opera',\n ovum: 'ova',\n ox: 'oxen',\n parenthesis: 'parentheses',\n person: 'people',\n phenomenon: 'phenomena',\n prognosis: 'prognoses',\n quiz: 'quizzes',\n radius: 'radii',\n referendum: 'referenda',\n rodeo: 'rodeos',\n sex: 'sexes',\n shoe: 'shoes',\n sombrero: 'sombreros',\n stimulus: 'stimuli',\n stomach: 'stomachs',\n syllabus: 'syllabi',\n synopsis: 'synopses',\n tableau: 'tableaux',\n thesis: 'theses',\n thief: 'thieves',\n tooth: 'teeth',\n tornado: 'tornados',\n tuxedo: 'tuxedos',\n vertebra: 'vertebrae' // virus: 'viri',\n // zero: 'zeros',\n\n};\n\n// a list of irregular verb conjugations\n// used in verbs().conjugate()\n// but also added to our lexicon\n//use shorter key-names\nvar mapping$1 = {\n g: 'Gerund',\n prt: 'Participle',\n perf: 'PerfectTense',\n pst: 'PastTense',\n fut: 'FuturePerfect',\n pres: 'PresentTense',\n pluperf: 'Pluperfect',\n a: 'Actor'\n}; // '_' in conjugations is the infinitive form\n// (order matters, to the lexicon)\n\nvar conjugations = {\n act: {\n a: '_or'\n },\n ache: {\n pst: 'ached',\n g: 'aching'\n },\n age: {\n g: 'ageing',\n pst: 'aged',\n pres: 'ages'\n },\n aim: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n arise: {\n prt: '_n',\n pst: 'arose'\n },\n babysit: {\n a: '_ter',\n pst: 'babysat'\n },\n ban: {\n a: '',\n g: '_ning',\n pst: '_ned'\n },\n be: {\n a: '',\n g: 'am',\n prt: 'been',\n pst: 'was',\n pres: 'is'\n },\n beat: {\n a: '_er',\n g: '_ing',\n prt: '_en'\n },\n become: {\n prt: '_'\n },\n begin: {\n g: '_ning',\n prt: 'begun',\n pst: 'began'\n },\n being: {\n g: 'are',\n pst: 'were',\n pres: 'are'\n },\n bend: {\n prt: 'bent'\n },\n bet: {\n a: '_ter',\n prt: '_'\n },\n bind: {\n pst: 'bound'\n },\n bite: {\n g: 'biting',\n prt: 'bitten',\n pst: 'bit'\n },\n bleed: {\n pst: 'bled',\n prt: 'bled'\n },\n blow: {\n prt: '_n',\n pst: 'blew'\n },\n boil: {\n a: '_er'\n },\n brake: {\n prt: 'broken'\n },\n \"break\": {\n pst: 'broke'\n },\n breed: {\n pst: 'bred'\n },\n bring: {\n pst: 'brought',\n prt: 'brought'\n },\n broadcast: {\n pst: '_'\n },\n budget: {\n pst: '_ed'\n },\n build: {\n pst: 'built',\n prt: 'built'\n },\n burn: {\n prt: '_ed'\n },\n burst: {\n prt: '_'\n },\n buy: {\n pst: 'bought',\n prt: 'bought'\n },\n can: {\n a: '',\n fut: '_',\n g: '',\n pst: 'could',\n perf: 'could',\n pluperf: 'could',\n pres: '_'\n },\n \"catch\": {\n pst: 'caught'\n },\n choose: {\n g: 'choosing',\n prt: 'chosen',\n pst: 'chose'\n },\n cling: {\n prt: 'clung'\n },\n come: {\n prt: '_',\n pst: 'came',\n g: 'coming'\n },\n compete: {\n a: 'competitor',\n g: 'competing',\n pst: '_d'\n },\n cost: {\n pst: '_'\n },\n creep: {\n prt: 'crept'\n },\n cut: {\n prt: '_'\n },\n deal: {\n pst: '_t',\n prt: '_t'\n },\n develop: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n die: {\n g: 'dying',\n pst: '_d'\n },\n dig: {\n g: '_ging',\n pst: 'dug',\n prt: 'dug'\n },\n dive: {\n prt: '_d'\n },\n \"do\": {\n pst: 'did',\n pres: '_es'\n },\n draw: {\n prt: '_n',\n pst: 'drew'\n },\n dream: {\n prt: '_t'\n },\n drink: {\n prt: 'drunk',\n pst: 'drank'\n },\n drive: {\n g: 'driving',\n prt: '_n',\n pst: 'drove'\n },\n drop: {\n g: '_ping',\n pst: '_ped'\n },\n eat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n pst: 'ate'\n },\n edit: {\n pst: '_ed',\n g: '_ing'\n },\n egg: {\n pst: '_ed'\n },\n fall: {\n prt: '_en',\n pst: 'fell'\n },\n feed: {\n prt: 'fed',\n pst: 'fed'\n },\n feel: {\n a: '_er',\n pst: 'felt'\n },\n fight: {\n pst: 'fought',\n prt: 'fought'\n },\n find: {\n pst: 'found'\n },\n flee: {\n g: '_ing',\n prt: 'fled'\n },\n fling: {\n prt: 'flung'\n },\n fly: {\n prt: 'flown',\n pst: 'flew'\n },\n forbid: {\n pst: 'forbade'\n },\n forget: {\n g: '_ing',\n prt: 'forgotten',\n pst: 'forgot'\n },\n forgive: {\n g: 'forgiving',\n prt: '_n',\n pst: 'forgave'\n },\n free: {\n a: '',\n g: '_ing'\n },\n freeze: {\n g: 'freezing',\n prt: 'frozen',\n pst: 'froze'\n },\n get: {\n pst: 'got',\n prt: 'gotten'\n },\n give: {\n g: 'giving',\n prt: '_n',\n pst: 'gave'\n },\n go: {\n prt: '_ne',\n pst: 'went',\n pres: 'goes'\n },\n grow: {\n prt: '_n'\n },\n guide: {\n pst: '_d'\n },\n hang: {\n pst: 'hung',\n prt: 'hung'\n },\n have: {\n g: 'having',\n pst: 'had',\n prt: 'had',\n pres: 'has'\n },\n hear: {\n pst: '_d',\n prt: '_d'\n },\n hide: {\n prt: 'hidden',\n pst: 'hid'\n },\n hit: {\n prt: '_'\n },\n hold: {\n pst: 'held',\n prt: 'held'\n },\n hurt: {\n pst: '_',\n prt: '_'\n },\n ice: {\n g: 'icing',\n pst: '_d'\n },\n imply: {\n pst: 'implied',\n pres: 'implies'\n },\n is: {\n a: '',\n g: 'being',\n pst: 'was',\n pres: '_'\n },\n keep: {\n prt: 'kept'\n },\n kneel: {\n prt: 'knelt'\n },\n know: {\n prt: '_n'\n },\n lay: {\n pst: 'laid',\n prt: 'laid'\n },\n lead: {\n pst: 'led',\n prt: 'led'\n },\n leap: {\n prt: '_t'\n },\n leave: {\n pst: 'left',\n prt: 'left'\n },\n lend: {\n prt: 'lent'\n },\n lie: {\n g: 'lying',\n pst: 'lay'\n },\n light: {\n pst: 'lit',\n prt: 'lit'\n },\n log: {\n g: '_ging',\n pst: '_ged'\n },\n loose: {\n prt: 'lost'\n },\n lose: {\n g: 'losing',\n pst: 'lost'\n },\n make: {\n pst: 'made',\n prt: 'made'\n },\n mean: {\n pst: '_t',\n prt: '_t'\n },\n meet: {\n a: '_er',\n g: '_ing',\n pst: 'met',\n prt: 'met'\n },\n miss: {\n pres: '_'\n },\n name: {\n g: 'naming'\n },\n patrol: {\n g: '_ling',\n pst: '_led'\n },\n pay: {\n pst: 'paid',\n prt: 'paid'\n },\n prove: {\n prt: '_n'\n },\n puke: {\n g: 'puking'\n },\n put: {\n prt: '_'\n },\n quit: {\n prt: '_'\n },\n read: {\n pst: '_',\n prt: '_'\n },\n ride: {\n prt: 'ridden'\n },\n reside: {\n pst: '_d'\n },\n ring: {\n pst: 'rang',\n prt: 'rung'\n },\n rise: {\n fut: 'will have _n',\n g: 'rising',\n prt: '_n',\n pst: 'rose',\n pluperf: 'had _n'\n },\n rub: {\n g: '_bing',\n pst: '_bed'\n },\n run: {\n g: '_ning',\n prt: '_',\n pst: 'ran'\n },\n say: {\n pst: 'said',\n prt: 'said',\n pres: '_s'\n },\n seat: {\n pst: 'sat',\n prt: 'sat'\n },\n see: {\n g: '_ing',\n prt: '_n',\n pst: 'saw'\n },\n seek: {\n prt: 'sought'\n },\n sell: {\n pst: 'sold',\n prt: 'sold'\n },\n send: {\n prt: 'sent'\n },\n set: {\n prt: '_'\n },\n sew: {\n prt: '_n'\n },\n shake: {\n prt: '_n'\n },\n shave: {\n prt: '_d'\n },\n shed: {\n g: '_ding',\n pst: '_',\n pres: '_s'\n },\n shine: {\n pst: 'shone',\n prt: 'shone'\n },\n shoot: {\n pst: 'shot',\n prt: 'shot'\n },\n show: {\n pst: '_ed'\n },\n shut: {\n prt: '_'\n },\n sing: {\n prt: 'sung',\n pst: 'sang'\n },\n sink: {\n pst: 'sank',\n pluperf: 'had sunk'\n },\n sit: {\n pst: 'sat'\n },\n ski: {\n pst: '_ied'\n },\n slay: {\n prt: 'slain'\n },\n sleep: {\n prt: 'slept'\n },\n slide: {\n pst: 'slid',\n prt: 'slid'\n },\n smash: {\n pres: '_es'\n },\n sneak: {\n prt: 'snuck'\n },\n speak: {\n fut: 'will have spoken',\n prt: 'spoken',\n pst: 'spoke',\n perf: 'have spoken',\n pluperf: 'had spoken'\n },\n speed: {\n prt: 'sped'\n },\n spend: {\n prt: 'spent'\n },\n spill: {\n prt: '_ed',\n pst: 'spilt'\n },\n spin: {\n g: '_ning',\n pst: 'spun',\n prt: 'spun'\n },\n spit: {\n prt: 'spat'\n },\n split: {\n prt: '_'\n },\n spread: {\n pst: '_'\n },\n spring: {\n prt: 'sprung'\n },\n stand: {\n pst: 'stood'\n },\n steal: {\n a: '_er',\n pst: 'stole'\n },\n stick: {\n pst: 'stuck'\n },\n sting: {\n pst: 'stung'\n },\n stink: {\n pst: 'stunk',\n prt: 'stunk'\n },\n stream: {\n a: '_er'\n },\n strew: {\n prt: '_n'\n },\n strike: {\n g: 'striking',\n pst: 'struck'\n },\n suit: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n sware: {\n prt: 'sworn'\n },\n swear: {\n pst: 'swore'\n },\n sweep: {\n prt: 'swept'\n },\n swim: {\n g: '_ming',\n pst: 'swam'\n },\n swing: {\n pst: 'swung'\n },\n take: {\n fut: 'will have _n',\n pst: 'took',\n perf: 'have _n',\n pluperf: 'had _n'\n },\n teach: {\n pst: 'taught',\n pres: '_es'\n },\n tear: {\n pst: 'tore'\n },\n tell: {\n pst: 'told'\n },\n think: {\n pst: 'thought'\n },\n thrive: {\n prt: '_d'\n },\n tie: {\n g: 'tying',\n pst: '_d'\n },\n undergo: {\n prt: '_ne'\n },\n understand: {\n pst: 'understood'\n },\n upset: {\n prt: '_'\n },\n wait: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n wake: {\n pst: 'woke'\n },\n wear: {\n pst: 'wore'\n },\n weave: {\n prt: 'woven'\n },\n wed: {\n pst: 'wed'\n },\n weep: {\n prt: 'wept'\n },\n win: {\n g: '_ning',\n pst: 'won'\n },\n wind: {\n prt: 'wound'\n },\n withdraw: {\n pst: 'withdrew'\n },\n wring: {\n prt: 'wrung'\n },\n write: {\n g: 'writing',\n prt: 'written',\n pst: 'wrote'\n }\n}; //uncompress our ad-hoc compression scheme\n\nvar keys = Object.keys(conjugations);\n\nvar _loop = function _loop(i) {\n var inf = keys[i];\n var _final = {};\n Object.keys(conjugations[inf]).forEach(function (key) {\n var str = conjugations[inf][key]; //swap-in infinitives for '_'\n\n str = str.replace('_', inf);\n var full = mapping$1[key];\n _final[full] = str;\n }); //over-write original\n\n conjugations[inf] = _final;\n};\n\nfor (var i = 0; i < keys.length; i++) {\n _loop(i);\n}\n\nvar conjugations_1 = conjugations;\n\nvar endsWith$1 = {\n b: [{\n reg: /([^aeiou][aeiou])b$/i,\n repl: {\n pr: '$1bs',\n pa: '$1bbed',\n gr: '$1bbing'\n }\n }],\n d: [{\n reg: /(end)$/i,\n repl: {\n pr: '$1s',\n pa: 'ent',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(eed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(ed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ded',\n ar: '$1der',\n gr: '$1ding'\n }\n }, {\n reg: /([^aeiou][ou])d$/i,\n repl: {\n pr: '$1ds',\n pa: '$1dded',\n gr: '$1dding'\n }\n }],\n e: [{\n reg: /(eave)$/i,\n repl: {\n pr: '$1s',\n pa: '$1d',\n gr: 'eaving',\n ar: '$1r'\n }\n }, {\n reg: /(ide)$/i,\n repl: {\n pr: '$1s',\n pa: 'ode',\n gr: 'iding',\n ar: 'ider'\n }\n }, {\n //shake\n reg: /(t|sh?)(ake)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1ook',\n gr: '$1aking',\n ar: '$1$2r'\n }\n }, {\n //awake\n reg: /w(ake)$/i,\n repl: {\n pr: 'w$1s',\n pa: 'woke',\n gr: 'waking',\n ar: 'w$1r'\n }\n }, {\n //make\n reg: /m(ake)$/i,\n repl: {\n pr: 'm$1s',\n pa: 'made',\n gr: 'making',\n ar: 'm$1r'\n }\n }, {\n reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing' // prt: '$1en',\n\n }\n }, {\n reg: /([bd]l)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(om)e$/i,\n repl: {\n pr: '$1es',\n pa: 'ame',\n gr: '$1ing'\n }\n }],\n g: [{\n reg: /([^aeiou][ou])g$/i,\n repl: {\n pr: '$1gs',\n pa: '$1gged',\n gr: '$1gging'\n }\n }],\n h: [{\n reg: /(..)([cs]h)$/i,\n repl: {\n pr: '$1$2es',\n pa: '$1$2ed',\n gr: '$1$2ing'\n }\n }],\n k: [{\n reg: /(ink)$/i,\n repl: {\n pr: '$1s',\n pa: 'unk',\n gr: '$1ing',\n ar: '$1er'\n }\n }],\n m: [{\n reg: /([^aeiou][aeiou])m$/i,\n repl: {\n pr: '$1ms',\n pa: '$1mmed',\n gr: '$1mming'\n }\n }],\n n: [{\n reg: /(en)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n p: [{\n reg: /(e)(ep)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1pt',\n gr: '$1$2ing',\n ar: '$1$2er'\n }\n }, {\n reg: /([^aeiou][aeiou])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1pped',\n gr: '$1pping'\n }\n }, {\n reg: /([aeiu])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1p',\n gr: '$1pping'\n }\n }],\n r: [{\n reg: /([td]er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n s: [{\n reg: /(ish|tch|ess)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n t: [{\n reg: /(ion|end|e[nc]t)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(.eat)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /([aeiu])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1t',\n gr: '$1tting'\n }\n }, {\n reg: /([^aeiou][aeiou])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1tted',\n gr: '$1tting'\n }\n }],\n w: [{\n reg: /(.llow)$/i,\n //follow, allow\n repl: {\n pr: '$1s',\n pa: '$1ed'\n }\n }, {\n reg: /(..)(ow)$/i,\n //grow\n repl: {\n pr: '$1$2s',\n pa: '$1ew',\n gr: '$1$2ing',\n prt: '$1$2n'\n }\n }],\n y: [{\n reg: /(i|f|rr)y$/i,\n repl: {\n pr: '$1ies',\n pa: '$1ied',\n gr: '$1ying'\n }\n }],\n z: [{\n reg: /([aeiou]zz)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }]\n};\nvar suffixes$1 = endsWith$1;\n\nvar posMap = {\n pr: 'PresentTense',\n pa: 'PastTense',\n gr: 'Gerund',\n prt: 'Participle',\n ar: 'Actor'\n};\n\nvar doTransform = function doTransform(str, obj) {\n var found = {};\n var keys = Object.keys(obj.repl);\n\n for (var i = 0; i < keys.length; i += 1) {\n var pos = keys[i];\n found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]);\n }\n\n return found;\n}; //look at the end of the word for clues\n\n\nvar checkSuffix = function checkSuffix() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var c = str[str.length - 1];\n\n if (suffixes$1.hasOwnProperty(c) === true) {\n for (var r = 0; r < suffixes$1[c].length; r += 1) {\n var reg = suffixes$1[c][r].reg;\n\n if (reg.test(str) === true) {\n return doTransform(str, suffixes$1[c][r]);\n }\n }\n }\n\n return {};\n};\n\nvar _01Suffixes = checkSuffix;\n\n//non-specifc, 'hail-mary' transforms from infinitive, into other forms\nvar hasY = /[bcdfghjklmnpqrstvwxz]y$/;\nvar generic = {\n Gerund: function Gerund(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf.replace(/e$/, 'ing');\n }\n\n return inf + 'ing';\n },\n PresentTense: function PresentTense(inf) {\n if (inf.charAt(inf.length - 1) === 's') {\n return inf + 'es';\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ies';\n }\n\n return inf + 's';\n },\n PastTense: function PastTense(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf + 'd';\n }\n\n if (inf.substr(-2) === 'ed') {\n return inf;\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ied';\n }\n\n return inf + 'ed';\n }\n};\nvar _02Generic = generic;\n\n//we assume the input word is a proper infinitive\n\nvar conjugate$2 = function conjugate() {\n var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var found = {}; // 1. look at irregulars\n //the lexicon doesn't pass this in\n\n if (world && world.irregulars) {\n if (world.irregulars.verbs.hasOwnProperty(inf) === true) {\n found = Object.assign({}, world.irregulars.verbs[inf]);\n }\n } //2. rule-based regex\n\n\n found = Object.assign({}, _01Suffixes(inf), found); //3. generic transformations\n //'buzzing'\n\n if (found.Gerund === undefined) {\n found.Gerund = _02Generic.Gerund(inf);\n } //'buzzed'\n\n\n if (found.PastTense === undefined) {\n found.PastTense = _02Generic.PastTense(inf);\n } //'buzzes'\n\n\n if (found.PresentTense === undefined) {\n found.PresentTense = _02Generic.PresentTense(inf);\n }\n\n return found;\n};\n\nvar conjugate_1$1 = conjugate$2; // console.log(conjugate('bake'))\n\n//turn 'quick' into 'quickest'\nvar do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/];\nvar dont_rules$1 = [/ary$/];\nvar irregulars$5 = {\n nice: 'nicest',\n late: 'latest',\n hard: 'hardest',\n inner: 'innermost',\n outer: 'outermost',\n far: 'furthest',\n worse: 'worst',\n bad: 'worst',\n good: 'best',\n big: 'biggest',\n large: 'largest'\n};\nvar transforms$2 = [{\n reg: /y$/i,\n repl: 'iest'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1ttest'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1dest'\n}, {\n reg: /nge$/i,\n repl: 'ngest'\n}, {\n reg: /([aeiou])te$/i,\n repl: '$1test'\n}];\n\nvar to_superlative = function to_superlative(str) {\n //irregulars\n if (irregulars$5.hasOwnProperty(str)) {\n return irregulars$5[str];\n } //known transforms\n\n\n for (var i = 0; i < transforms$2.length; i++) {\n if (transforms$2[i].reg.test(str)) {\n return str.replace(transforms$2[i].reg, transforms$2[i].repl);\n }\n } //dont-rules\n\n\n for (var _i = 0; _i < dont_rules$1.length; _i++) {\n if (dont_rules$1[_i].test(str) === true) {\n return null;\n }\n } //do-rules\n\n\n for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) {\n if (do_rules$1[_i2].test(str) === true) {\n if (str.charAt(str.length - 1) === 'e') {\n return str + 'st';\n }\n\n return str + 'est';\n }\n }\n\n return str + 'est';\n};\n\nvar toSuperlative = to_superlative;\n\n//turn 'quick' into 'quickly'\nvar do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/];\nvar dont_rules = [/ary$/, /ous$/];\nvar irregulars$4 = {\n grey: 'greyer',\n gray: 'grayer',\n green: 'greener',\n yellow: 'yellower',\n red: 'redder',\n good: 'better',\n well: 'better',\n bad: 'worse',\n sad: 'sadder',\n big: 'bigger'\n};\nvar transforms$1 = [{\n reg: /y$/i,\n repl: 'ier'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1tter'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1der'\n}, {\n reg: /nge$/i,\n repl: 'nger'\n}];\n\nvar to_comparative = function to_comparative(str) {\n //known-irregulars\n if (irregulars$4.hasOwnProperty(str)) {\n return irregulars$4[str];\n } //known-transforms\n\n\n for (var i = 0; i < transforms$1.length; i++) {\n if (transforms$1[i].reg.test(str) === true) {\n return str.replace(transforms$1[i].reg, transforms$1[i].repl);\n }\n } //dont-patterns\n\n\n for (var _i = 0; _i < dont_rules.length; _i++) {\n if (dont_rules[_i].test(str) === true) {\n return null;\n }\n } //do-patterns\n\n\n for (var _i2 = 0; _i2 < do_rules.length; _i2++) {\n if (do_rules[_i2].test(str) === true) {\n return str + 'er';\n }\n } //easy-one\n\n\n if (/e$/.test(str) === true) {\n return str + 'r';\n }\n\n return str + 'er';\n};\n\nvar toComparative = to_comparative;\n\nvar fns = {\n toSuperlative: toSuperlative,\n toComparative: toComparative\n};\n/** conjugate an adjective into other forms */\n\nvar conjugate$1 = function conjugate(w) {\n var res = {}; // 'greatest'\n\n var sup = fns.toSuperlative(w);\n\n if (sup) {\n res.Superlative = sup;\n } // 'greater'\n\n\n var comp = fns.toComparative(w);\n\n if (comp) {\n res.Comparative = comp;\n }\n\n return res;\n};\n\nvar adjectives$2 = conjugate$1;\n\n/** patterns for turning 'bus' to 'buses'*/\nvar suffixes = {\n a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']],\n e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']],\n f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']],\n i: [[/(octop|vir)i$/i, '$1i']],\n m: [[/([ti])um$/i, '$1a']],\n n: [[/^(oxen)$/i, '$1']],\n o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']],\n s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']],\n x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']],\n y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n z: [[/(quiz)$/i, '$1zes']]\n};\nvar _rules$2 = suffixes;\n\nvar addE = /(x|ch|sh|s|z)$/;\n\nvar trySuffix = function trySuffix(str) {\n var c = str[str.length - 1];\n\n if (_rules$2.hasOwnProperty(c) === true) {\n for (var i = 0; i < _rules$2[c].length; i += 1) {\n var reg = _rules$2[c][i][0];\n\n if (reg.test(str) === true) {\n return str.replace(reg, _rules$2[c][i][1]);\n }\n }\n }\n\n return null;\n};\n/** Turn a singular noun into a plural\n * assume the given string is singular\n */\n\n\nvar pluralize = function pluralize() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var irregulars = world.irregulars.nouns; // check irregulars list\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //we have some rules to try-out\n\n\n var plural = trySuffix(str);\n\n if (plural !== null) {\n return plural;\n } //like 'church'\n\n\n if (addE.test(str)) {\n return str + 'es';\n } // ¯\\_(ツ)_/¯\n\n\n return str + 's';\n};\n\nvar toPlural = pluralize;\n\n//patterns for turning 'dwarves' to 'dwarf'\nvar _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],\n[/(eas)es$/i, '$1e'], //diseases\n[/(..[aeiou]s)es$/i, '$1'], //geniouses\n[/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']];\n\nvar invertObj = function invertObj(obj) {\n return Object.keys(obj).reduce(function (h, k) {\n h[obj[k]] = k;\n return h;\n }, {});\n};\n\nvar toSingular = function toSingular(str, world) {\n var irregulars = world.irregulars.nouns;\n var invert = invertObj(irregulars); //(not very efficient)\n // check irregulars list\n\n if (invert.hasOwnProperty(str)) {\n return invert[str];\n } // go through our regexes\n\n\n for (var i = 0; i < _rules$1.length; i++) {\n if (_rules$1[i][0].test(str) === true) {\n str = str.replace(_rules$1[i][0], _rules$1[i][1]);\n return str;\n }\n }\n\n return str;\n};\n\nvar toSingular_1 = toSingular;\n\n//rules for turning a verb into infinitive form\nvar rules = {\n Participle: [{\n reg: /own$/i,\n to: 'ow'\n }, {\n reg: /(.)un([g|k])$/i,\n to: '$1in$2'\n }],\n Actor: [{\n reg: /(er)er$/i,\n to: '$1'\n }],\n PresentTense: [{\n reg: /(..)(ies)$/i,\n to: '$1y'\n }, {\n reg: /(tch|sh)es$/i,\n to: '$1'\n }, {\n reg: /(ss|zz)es$/i,\n to: '$1'\n }, {\n reg: /([tzlshicgrvdnkmu])es$/i,\n to: '$1e'\n }, {\n reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,\n to: '$1'\n }, {\n reg: /(ow)s$/i,\n to: '$1'\n }, {\n reg: /(op)s$/i,\n to: '$1'\n }, {\n reg: /([eirs])ts$/i,\n to: '$1t'\n }, {\n reg: /(ll)s$/i,\n to: '$1'\n }, {\n reg: /(el)s$/i,\n to: '$1'\n }, {\n reg: /(ip)es$/i,\n to: '$1e'\n }, {\n reg: /ss$/i,\n to: 'ss'\n }, {\n reg: /s$/i,\n to: ''\n }],\n Gerund: [{\n //popping -> pop\n reg: /(..)(p|d|t|g){2}ing$/i,\n to: '$1$2'\n }, {\n //fuzzing -> fuzz\n reg: /(ll|ss|zz)ing$/i,\n to: '$1'\n }, {\n reg: /([^aeiou])ying$/i,\n to: '$1y'\n }, {\n reg: /([^ae]i.)ing$/i,\n to: '$1e'\n }, {\n //eating, reading\n reg: /(ea[dklnrtv])ing$/i,\n to: '$1'\n }, {\n //washing -> wash\n reg: /(ch|sh)ing$/i,\n to: '$1'\n }, //soft-e forms:\n {\n //z : hazing (not buzzing)\n reg: /(z)ing$/i,\n to: '$1e'\n }, {\n //a : baking, undulating\n reg: /(a[gdkvtc])ing$/i,\n to: '$1e'\n }, {\n //u : conjuring, tubing\n reg: /(u[rtcbn])ing$/i,\n to: '$1e'\n }, {\n //o : forboding, poking, hoping, boring (not hooping)\n reg: /([^o]o[bdknprv])ing$/i,\n to: '$1e'\n }, {\n //ling : tingling, wrinkling, circling, scrambling, bustling\n reg: /([tbckg]l)ing$/i,\n //dp\n to: '$1e'\n }, {\n //cing : bouncing, denouncing\n reg: /(c|s)ing$/i,\n //dp\n to: '$1e'\n }, // {\n // //soft-e :\n // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i,\n // to: '$1e',\n // },\n {\n //fallback\n reg: /(..)ing$/i,\n to: '$1'\n }],\n PastTense: [{\n reg: /(ued)$/i,\n to: 'ue'\n }, {\n reg: /a([^aeiouy])ed$/i,\n to: 'a$1e'\n }, {\n reg: /([aeiou]zz)ed$/i,\n to: '$1'\n }, {\n reg: /(e|i)lled$/i,\n to: '$1ll'\n }, {\n reg: /(.)(sh|ch)ed$/i,\n to: '$1$2'\n }, {\n reg: /(tl|gl)ed$/i,\n to: '$1e'\n }, {\n reg: /(um?pt?)ed$/i,\n to: '$1'\n }, {\n reg: /(ss)ed$/i,\n to: '$1'\n }, {\n reg: /pped$/i,\n to: 'p'\n }, {\n reg: /tted$/i,\n to: 't'\n }, {\n reg: /(..)gged$/i,\n to: '$1g'\n }, {\n reg: /(..)lked$/i,\n to: '$1lk'\n }, {\n reg: /([^aeiouy][aeiou])ked$/i,\n to: '$1ke'\n }, {\n reg: /(.[aeiou])led$/i,\n to: '$1l'\n }, {\n reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,\n to: '$1$2'\n }, {\n reg: /(.ut)ed$/i,\n to: '$1e'\n }, {\n reg: /(.pt)ed$/i,\n to: '$1'\n }, {\n reg: /(us)ed$/i,\n to: '$1e'\n }, {\n reg: /(dd)ed$/i,\n to: '$1'\n }, {\n reg: /(..[^aeiouy])ed$/i,\n to: '$1e'\n }, {\n reg: /(..)ied$/i,\n to: '$1y'\n }, {\n reg: /(.o)ed$/i,\n to: '$1o'\n }, {\n reg: /(..i)ed$/i,\n to: '$1'\n }, {\n reg: /(.a[^aeiou])ed$/i,\n to: '$1'\n }, {\n //owed, aced\n reg: /([aeiou][^aeiou])ed$/i,\n to: '$1e'\n }, {\n reg: /([rl])ew$/i,\n to: '$1ow'\n }, {\n reg: /([pl])t$/i,\n to: '$1t'\n }]\n};\nvar _transform = rules;\n\nvar guessVerb = {\n Gerund: ['ing'],\n Actor: ['erer'],\n Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'],\n PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'],\n PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns']\n}; //flip it into a lookup object\n\nguessVerb = Object.keys(guessVerb).reduce(function (h, k) {\n guessVerb[k].forEach(function (a) {\n return h[a] = k;\n });\n return h;\n}, {});\nvar _guess = guessVerb;\n\n/** it helps to know what we're conjugating from */\n\nvar guessTense = function guessTense(str) {\n var three = str.substr(str.length - 3);\n\n if (_guess.hasOwnProperty(three) === true) {\n return _guess[three];\n }\n\n var two = str.substr(str.length - 2);\n\n if (_guess.hasOwnProperty(two) === true) {\n return _guess[two];\n }\n\n var one = str.substr(str.length - 1);\n\n if (one === 's') {\n return 'PresentTense';\n }\n\n return null;\n};\n\nvar toInfinitive$1 = function toInfinitive(str, world, tense) {\n if (!str) {\n return '';\n } //1. look at known irregulars\n\n\n if (world.words.hasOwnProperty(str) === true) {\n var irregs = world.irregulars.verbs;\n var keys = Object.keys(irregs);\n\n for (var i = 0; i < keys.length; i++) {\n var forms = Object.keys(irregs[keys[i]]);\n\n for (var o = 0; o < forms.length; o++) {\n if (str === irregs[keys[i]][forms[o]]) {\n return keys[i];\n }\n }\n }\n } // give'r!\n\n\n tense = tense || guessTense(str);\n\n if (tense && _transform[tense]) {\n for (var _i = 0; _i < _transform[tense].length; _i++) {\n var rule = _transform[tense][_i];\n\n if (rule.reg.test(str) === true) {\n // console.log(rule.reg)\n return str.replace(rule.reg, rule.to);\n }\n }\n }\n\n return str;\n};\n\nvar toInfinitive_1$1 = toInfinitive$1;\n\nvar irregulars$3 = {\n nouns: plurals,\n verbs: conjugations_1\n}; //these behaviours are configurable & shared across some plugins\n\nvar transforms = {\n conjugate: conjugate_1$1,\n adjectives: adjectives$2,\n toPlural: toPlural,\n toSingular: toSingular_1,\n toInfinitive: toInfinitive_1$1\n};\nvar _isVerbose = false;\n/** all configurable linguistic data */\n\nvar World = /*#__PURE__*/function () {\n function World() {\n _classCallCheck(this, World);\n\n // quiet these properties from a console.log\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'hasCompound', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'irregulars', {\n enumerable: false,\n value: irregulars$3,\n writable: true\n });\n Object.defineProperty(this, 'tags', {\n enumerable: false,\n value: Object.assign({}, tags),\n writable: true\n });\n Object.defineProperty(this, 'transforms', {\n enumerable: false,\n value: transforms,\n writable: true\n });\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true\n }); // cache our abbreviations for our sentence-parser\n\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: {}\n }\n }); // add our compressed data to lexicon\n\n this.words = unpack_1.buildOut(this); // add our irregulars to lexicon\n\n addIrregulars_1(this);\n }\n /** more logs for debugging */\n\n\n _createClass(World, [{\n key: \"verbose\",\n value: function verbose(bool) {\n _isVerbose = bool;\n return this;\n }\n }, {\n key: \"isVerbose\",\n value: function isVerbose() {\n return _isVerbose;\n }\n /** put new words into our lexicon, properly */\n\n }, {\n key: \"addWords\",\n value: function addWords(wordObj) {\n // clean them up a bit\n var cleaned = {};\n Object.keys(wordObj).forEach(function (w) {\n var tag = wordObj[w];\n w = w.toLowerCase().trim();\n cleaned[w] = tag;\n });\n unpack_1.addWords(cleaned, this.words, this);\n }\n /** add new custom conjugations */\n\n }, {\n key: \"addConjugations\",\n value: function addConjugations(obj) {\n Object.assign(this.irregulars.verbs, obj);\n return this;\n }\n /** add new custom plural/singular pairs */\n\n }, {\n key: \"addPlurals\",\n value: function addPlurals(obj) {\n Object.assign(this.irregulars.nouns, obj);\n return this;\n }\n /** extend the compromise tagset */\n\n }, {\n key: \"addTags\",\n value: function addTags(tags) {\n tags = Object.assign({}, tags);\n this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags\n\n this.tags = inference(this.tags);\n return this;\n }\n /** call methods after tagger runs */\n\n }, {\n key: \"postProcess\",\n value: function postProcess(fn) {\n this.taggers.push(fn);\n return this;\n }\n /** helper method for logging + debugging */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length,\n plurals: Object.keys(this.irregulars.nouns).length,\n conjugations: Object.keys(this.irregulars.verbs).length,\n compounds: Object.keys(this.hasCompound).length,\n postProcessors: this.taggers.length\n };\n }\n }]);\n\n return World;\n}(); // ¯\\_(:/)_/¯\n\n\nvar clone = function clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n/** produce a deep-copy of all lingustic data */\n\n\nWorld.prototype.clone = function () {\n var w2 = new World(); // these are simple to copy:\n\n w2.words = Object.assign({}, this.words);\n w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested:\n\n w2.irregulars = clone(this.irregulars);\n w2.tags = clone(this.tags); // these are functions\n\n w2.transforms = this.transforms;\n w2.taggers = this.taggers;\n return w2;\n};\n\nvar World_1 = World;\n\n/** return the root, first document */\n\nvar _01Utils = createCommonjsModule(function (module, exports) {\n exports.all = function () {\n return this.parents()[0] || this;\n };\n /** return the previous result */\n\n\n exports.parent = function () {\n if (this.from) {\n return this.from;\n }\n\n return this;\n };\n /** return a list of all previous results */\n\n\n exports.parents = function (n) {\n var arr = [];\n\n var addParent = function addParent(doc) {\n if (doc.from) {\n arr.push(doc.from);\n addParent(doc.from);\n }\n };\n\n addParent(this);\n arr = arr.reverse();\n\n if (typeof n === 'number') {\n return arr[n];\n }\n\n return arr;\n };\n /** deep-copy the document, so that no references remain */\n\n\n exports.clone = function (doShallow) {\n var list = this.list.map(function (ts) {\n return ts.clone(doShallow);\n });\n var tmp = this.buildFrom(list);\n return tmp;\n };\n /** how many seperate terms does the document have? */\n\n\n exports.wordCount = function () {\n return this.list.reduce(function (count, p) {\n count += p.wordCount();\n return count;\n }, 0);\n };\n\n exports.wordcount = exports.wordCount;\n /** turn on logging for decision-debugging */\n // exports.verbose = function(bool) {\n // if (bool === undefined) {\n // bool = true\n // }\n // this.world.verbose = bool\n // }\n});\n\n/** use only the first result(s) */\n\nvar _02Accessors = createCommonjsModule(function (module, exports) {\n exports.first = function (n) {\n if (n === undefined) {\n return this.get(0);\n }\n\n return this.slice(0, n);\n };\n /** use only the last result(s) */\n\n\n exports.last = function (n) {\n if (n === undefined) {\n return this.get(this.list.length - 1);\n }\n\n var end = this.list.length;\n return this.slice(end - n, end);\n };\n /** grab a given subset of the results*/\n\n\n exports.slice = function (start, end) {\n var list = this.list.slice(start, end);\n return this.buildFrom(list);\n };\n /* grab nth result */\n\n\n exports.eq = function (n) {\n var p = this.list[n];\n\n if (p === undefined) {\n return this.buildFrom([]);\n }\n\n return this.buildFrom([p]);\n };\n\n exports.get = exports.eq;\n /** grab term[0] for every match */\n\n exports.firstTerms = function () {\n return this.match('^.');\n };\n\n exports.firstTerm = exports.firstTerms;\n /** grab the last term for every match */\n\n exports.lastTerms = function () {\n return this.match('.$');\n };\n\n exports.lastTerm = exports.lastTerms;\n /** return a flat array of term objects */\n\n exports.termList = function (num) {\n var arr = []; //'reduce' but faster\n\n for (var i = 0; i < this.list.length; i++) {\n var terms = this.list[i].terms();\n\n for (var o = 0; o < terms.length; o++) {\n arr.push(terms[o]); //support .termList(4)\n\n if (num !== undefined && arr[num] !== undefined) {\n return arr[num];\n }\n }\n }\n\n return arr;\n };\n /* grab named capture group terms as object */\n\n\n var getGroups = function getGroups(doc) {\n var res = {};\n var allGroups = {};\n\n var _loop = function _loop(i) {\n var phrase = doc.list[i];\n var groups = Object.keys(phrase.groups).map(function (k) {\n return phrase.groups[k];\n });\n\n for (var j = 0; j < groups.length; j++) {\n var _groups$j = groups[j],\n group = _groups$j.group,\n start = _groups$j.start,\n length = _groups$j.length;\n\n if (!allGroups[group]) {\n allGroups[group] = [];\n }\n\n allGroups[group].push(phrase.buildFrom(start, length));\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n var keys = Object.keys(allGroups);\n\n for (var _i = 0; _i < keys.length; _i++) {\n var key = keys[_i];\n res[key] = doc.buildFrom(allGroups[key]);\n }\n\n return res;\n };\n /** lookup a named-group, by its name */\n\n\n var getOneName = function getOneName(doc, name) {\n var arr = [];\n\n var _loop2 = function _loop2(i) {\n var phrase = doc.list[i];\n var keys = Object.keys(phrase.groups);\n keys = keys.filter(function (id) {\n return phrase.groups[id].group === name;\n });\n keys.forEach(function (id) {\n arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length));\n });\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop2(i);\n }\n\n return doc.buildFrom(arr);\n };\n /** grab named capture group results */\n\n\n exports.groups = function (target) {\n if (target === undefined) {\n return getGroups(this);\n }\n\n if (typeof target === 'number') {\n target = String(target);\n }\n\n return getOneName(this, target) || this.buildFrom([]);\n };\n\n exports.group = exports.groups;\n /** get the full-sentence each phrase belongs to */\n\n exports.sentences = function (n) {\n var arr = [];\n this.list.forEach(function (p) {\n arr.push(p.fullSentence());\n });\n\n if (typeof n === 'number') {\n return this.buildFrom([arr[n]]);\n }\n\n return this.buildFrom(arr);\n };\n\n exports.sentence = exports.sentences;\n});\n\n// cache the easier conditions up-front\nvar cacheRequired$1 = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: needTags,\n words: needWords\n };\n}; // try to pre-fail as many matches as possible, without doing them\n\n\nvar failFast = function failFast(doc, regs) {\n if (doc._cache && doc._cache.set === true) {\n var _cacheRequired = cacheRequired$1(regs),\n words = _cacheRequired.words,\n tags = _cacheRequired.tags; //check required words\n\n\n for (var i = 0; i < words.length; i++) {\n if (doc._cache.words[words[i]] === undefined) {\n return false;\n }\n } //check required tags\n\n\n for (var _i = 0; _i < tags.length; _i++) {\n if (doc._cache.tags[tags[_i]] === undefined) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nvar _failFast = failFast;\n\nvar _03Match = createCommonjsModule(function (module, exports) {\n /** return a new Doc, with this one as a parent */\n exports.match = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // support '0' shorthand for named-groups\n if (typeof opts === 'string' || typeof opts === 'number' || opts === null) {\n opts = {\n group: opts\n };\n } //parse-up the input expression\n\n\n var regs = matchSyntax(reg, opts);\n\n if (regs.length === 0) {\n return this.buildFrom([]);\n } //check our cache, if it exists\n\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.match(regs));\n }, []); // support returning named groups\n\n if (opts.group !== undefined && opts.group !== null && opts.group !== '') {\n return this.buildFrom(matches).groups(opts.group);\n }\n\n return this.buildFrom(matches);\n };\n /** return all results except for this */\n\n\n exports.not = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n //parse-up the input expression\n var regs = matchSyntax(reg, opts); //if it's empty, return them all!\n\n if (regs.length === 0 || _failFast(this, regs) === false) {\n return this;\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.not(regs));\n }, []);\n return this.buildFrom(matches);\n };\n /** return only the first match */\n\n\n exports.matchOne = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //check our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n for (var i = 0; i < this.list.length; i++) {\n var match = this.list[i].match(regs, true);\n return this.buildFrom(match);\n }\n\n return this.buildFrom([]);\n };\n /** return each current phrase, only if it contains this match */\n\n\n exports[\"if\"] = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n var found = this.list.filter(function (p) {\n return p.has(regs) === true;\n });\n return this.buildFrom(found);\n };\n /** Filter-out any current phrases that have this match*/\n\n\n exports.ifNo = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts);\n var found = this.list.filter(function (p) {\n return p.has(regs) === false;\n });\n return this.buildFrom(found);\n };\n /**Return a boolean if this match exists */\n\n\n exports.has = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return false;\n }\n\n return this.list.some(function (p) {\n return p.has(regs) === true;\n });\n };\n /** match any terms after our matches, within the sentence */\n\n\n exports.lookAhead = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookAhead(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookAfter = exports.lookAhead;\n /** match any terms before our matches, within the sentence */\n\n exports.lookBehind = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookBehind(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookBefore = exports.lookBehind;\n /** return all terms before a match, in each phrase */\n\n exports.before = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var ids = p.terms().map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //nothing is before a first-term match\n\n if (index === 0 || index === -1) {\n return null;\n }\n\n return p.buildFrom(p.start, index);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return all terms after a match, in each phrase */\n\n\n exports.after = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var terms = p.terms();\n var ids = terms.map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //skip if nothing is after it\n\n if (index === -1 || !terms[index + m.length]) {\n return null;\n } //create the new phrase, after our match.\n\n\n var id = terms[index + m.length].id;\n var len = p.length - index - m.length;\n return p.buildFrom(id, len);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return only results with this match afterwards */\n\n\n exports.hasAfter = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookAfter(reg, opts).found;\n });\n };\n /** return only results with this match before it */\n\n\n exports.hasBefore = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookBefore(reg, opts).found;\n });\n };\n});\n\n/** apply a tag, or tags to all terms */\nvar tagTerms = function tagTerms(tag, doc, safe, reason) {\n var tagList = [];\n\n if (typeof tag === 'string') {\n tagList = tag.split(' ');\n } // doc.parents()[0].reasons.push(reason)\n //do indepenent tags for each term:\n\n\n doc.list.forEach(function (p) {\n var terms = p.terms(); // tagSafe - apply only to fitting terms\n\n if (safe === true) {\n terms = terms.filter(function (t) {\n return t.canBe(tag, doc.world);\n });\n }\n\n terms.forEach(function (t, i) {\n //fancy version:\n if (tagList.length > 1) {\n if (tagList[i] && tagList[i] !== '.') {\n t.tag(tagList[i], reason, doc.world);\n }\n } else {\n //non-fancy version (same tag for all terms)\n t.tag(tag, reason, doc.world);\n }\n });\n });\n return;\n};\n\nvar _setTag = tagTerms;\n\n/** Give all terms the given tag */\n\nvar tag = function tag(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, false, why);\n return this;\n};\n/** Only apply tag to terms if it is consistent with current tags */\n\n\nvar tagSafe = function tagSafe(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, true, why);\n return this;\n};\n/** Remove this term from the given terms */\n\n\nvar unTag = function unTag(tags, why) {\n var _this = this;\n\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t.unTag(tags, why, _this.world);\n });\n });\n return this;\n};\n/** return only the terms that can be this tag*/\n\n\nvar canBe = function canBe(tag) {\n if (!tag) {\n return this;\n }\n\n var world = this.world;\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.canBe(tag, world));\n }, []);\n return this.buildFrom(matches);\n};\n\nvar _04Tag = {\n tag: tag,\n tagSafe: tagSafe,\n unTag: unTag,\n canBe: canBe\n};\n\n/* run each phrase through a function, and create a new document */\nvar map = function map(fn) {\n var _this = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.map(function (p, i) {\n var doc = _this.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n var res = fn(doc, i); // if its a doc, return one result\n\n if (res && res.list && res.list[0]) {\n return res.list[0];\n }\n\n return res;\n }); //remove nulls\n\n list = list.filter(function (x) {\n return x;\n }); // return an empty response\n\n if (list.length === 0) {\n return this.buildFrom(list);\n } // if it is not a list of Phrase objects, then don't try to make a Doc object\n\n\n if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') {\n return list;\n }\n\n return this.buildFrom(list);\n};\n/** run a function on each phrase */\n\n\nvar forEach = function forEach(fn, detachParent) {\n var _this2 = this;\n\n if (!fn) {\n return this;\n }\n\n this.list.forEach(function (p, i) {\n var sub = _this2.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time.\n\n\n if (detachParent === true) {\n sub.from = null; //\n }\n\n fn(sub, i);\n });\n return this;\n};\n/** return only the phrases that return true */\n\n\nvar filter = function filter(fn) {\n var _this3 = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.filter(function (p, i) {\n var doc = _this3.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n return this.buildFrom(list);\n};\n/** return a document with only the first phrase that matches */\n\n\nvar find = function find(fn) {\n var _this4 = this;\n\n if (!fn) {\n return this;\n }\n\n var phrase = this.list.find(function (p, i) {\n var doc = _this4.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n\n if (phrase) {\n return this.buildFrom([phrase]);\n }\n\n return undefined;\n};\n/** return true or false if there is one matching phrase */\n\n\nvar some = function some(fn) {\n var _this5 = this;\n\n if (!fn) {\n return this;\n }\n\n return this.list.some(function (p, i) {\n var doc = _this5.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n};\n/** sample a subset of the results */\n\n\nvar random = function random(n) {\n if (!this.found) {\n return this;\n }\n\n var r = Math.floor(Math.random() * this.list.length);\n\n if (n === undefined) {\n var list = [this.list[r]];\n return this.buildFrom(list);\n } //prevent it from going over the end\n\n\n if (r + n > this.length) {\n r = this.length - n;\n r = r < 0 ? 0 : r;\n }\n\n return this.slice(r, r + n);\n};\n/** combine each phrase into a new data-structure */\n// exports.reduce = function(fn, h) {\n// let list = this.list.reduce((_h, ts) => {\n// let doc = this.buildFrom([ts])\n// doc.from = null //it's not a child/parent\n// return fn(_h, doc)\n// }, h)\n// return this.buildFrom(list)\n// }\n\n\nvar _05Loops = {\n map: map,\n forEach: forEach,\n filter: filter,\n find: find,\n some: some,\n random: random\n};\n\n// const tokenize = require('../../01-tokenizer/02-words')\nvar tokenize = function tokenize(str) {\n return str.split(/[ -]/g);\n}; // take a list of strings\n// look them up in the document\n\n\nvar buildTree = function buildTree(termList) {\n var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var root = {}; // parse our input\n\n termList.forEach(function (str, i) {\n var val = true;\n\n if (values[i] !== undefined) {\n val = values[i];\n } // some rough normalization\n\n\n str = (str || '').toLowerCase();\n str = str.replace(/[,;.!?]+$/, '');\n var arr = tokenize(str).map(function (s) {\n return s.trim();\n });\n root[arr[0]] = root[arr[0]] || {};\n\n if (arr.length === 1) {\n root[arr[0]].value = val;\n } else {\n root[arr[0]].more = root[arr[0]].more || [];\n root[arr[0]].more.push({\n rest: arr.slice(1),\n value: val\n });\n }\n }); // sort by longest-first?\n // console.log(JSON.stringify(root, null, 2))\n\n return root;\n};\n\nvar fastLookup = function fastLookup(termList, values, doc) {\n var root = buildTree(termList, values);\n var found = []; // each phrase\n\n var _loop = function _loop(i) {\n var p = doc.list[i];\n var terms = p.terms();\n var words = terms.map(function (t) {\n return t.reduced;\n }); // each word\n\n var _loop2 = function _loop2(w) {\n if (root[words[w]] !== undefined) {\n // is it a multi-word match?\n if (root[words[w]].more !== undefined) {\n root[words[w]].more.forEach(function (more) {\n // is it too-long?\n if (words[w + more.rest.length] === undefined) {\n return;\n } // compare each subsequent term\n\n\n var everyTerm = more.rest.every(function (word, r) {\n return word === words[w + r + 1];\n });\n\n if (everyTerm === true) {\n found.push({\n id: p.terms()[w].id,\n value: more.value,\n length: more.rest.length + 1\n });\n }\n });\n } // is it a single-word match?\n\n\n if (root[words[w]].value !== undefined) {\n found.push({\n id: p.terms()[w].id,\n value: root[words[w]].value,\n length: 1\n });\n }\n }\n };\n\n for (var w = 0; w < words.length; w++) {\n _loop2(w);\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n return found;\n};\n\nvar _lookup = fastLookup;\n\nvar _06Lookup = createCommonjsModule(function (module, exports) {\n // compare one term and one match\n // const doesMatch = function(term, str) {\n // if (str === '') {\n // return false\n // }\n // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str\n // }\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n };\n /** lookup an array of words or phrases */\n\n\n exports.lookup = function (arr) {\n var _this = this;\n\n var values = []; //is it a {key:val} object?\n\n var isObj = isObject(arr);\n\n if (isObj === true) {\n arr = Object.keys(arr).map(function (k) {\n values.push(arr[k]);\n return k;\n });\n } // support .lookup('foo')\n\n\n if (typeof arr === 'string') {\n arr = [arr];\n } //make sure we go fast.\n\n\n if (this._cache.set !== true) {\n this.cache();\n }\n\n var found = _lookup(arr, values, this);\n var p = this.list[0]; // make object response\n\n if (isObj === true) {\n var byVal = {};\n found.forEach(function (o) {\n byVal[o.value] = byVal[o.value] || [];\n byVal[o.value].push(p.buildFrom(o.id, o.length));\n });\n Object.keys(byVal).forEach(function (k) {\n byVal[k] = _this.buildFrom(byVal[k]);\n });\n return byVal;\n } // otherwise, make array response:\n\n\n found = found.map(function (o) {\n return p.buildFrom(o.id, o.length);\n });\n return this.buildFrom(found);\n };\n\n exports.lookUp = exports.lookup;\n});\n\n/** freeze the current state of the document, for speed-purposes*/\nvar cache = function cache(options) {\n var _this = this;\n\n options = options || {};\n var words = {};\n var tags = {};\n this._cache.words = words;\n this._cache.tags = tags;\n this._cache.set = true;\n this.list.forEach(function (p, i) {\n p.cache = p.cache || {}; //p.terms get cached automatically\n\n var terms = p.terms(); // cache all the terms\n\n terms.forEach(function (t) {\n if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) {\n return; //skip prototype words\n }\n\n words[t.reduced] = words[t.reduced] || [];\n words[t.reduced].push(i);\n Object.keys(t.tags).forEach(function (tag) {\n tags[tag] = tags[tag] || [];\n tags[tag].push(i);\n }); // cache root-form on Term, too\n\n if (options.root) {\n t.setRoot(_this.world);\n words[t.root] = [i];\n }\n });\n });\n return this;\n};\n/** un-freezes the current state of the document, so it may be transformed */\n\n\nvar uncache = function uncache() {\n this._cache = {};\n this.list.forEach(function (p) {\n p.cache = {};\n }); // do parents too?\n\n this.parents().forEach(function (doc) {\n doc._cache = {};\n doc.list.forEach(function (p) {\n p.cache = {};\n });\n });\n return this;\n};\n\nvar _07Cache = {\n cache: cache,\n uncache: uncache\n};\n\nvar titleCase$1 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** substitute-in new content */\n\n\nvar replaceWith = function replaceWith(replace) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!replace) {\n return this[\"delete\"]();\n } //support old-style params\n\n\n if (options === true) {\n options = {\n keepTags: true\n };\n }\n\n if (options === false) {\n options = {\n keepTags: false\n };\n }\n\n options = options || {}; // clear the cache\n\n this.uncache(); // return this\n\n this.list.forEach(function (p) {\n var input = replace; // accept a function for replace\n\n if (typeof replace === 'function') {\n input = replace(p);\n }\n\n var newPhrases; // accept a Doc object to replace\n\n if (input && _typeof(input) === 'object' && input.isA === 'Doc') {\n newPhrases = input.list;\n\n _this.pool().merge(input.pool());\n } else if (typeof input === 'string') {\n //input is a string\n if (options.keepCase !== false && p.terms(0).isTitleCase()) {\n input = titleCase$1(input);\n }\n\n newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases\n\n var tmpDoc = _this.buildFrom(newPhrases);\n\n tmpDoc.tagger();\n newPhrases = tmpDoc.list;\n } else {\n return; //don't even bother\n } // try to keep its old tags, if appropriate\n\n\n if (options.keepTags === true) {\n var oldTags = p.json({\n terms: {\n tags: true\n }\n }).terms;\n newPhrases[0].terms().forEach(function (t, i) {\n if (oldTags[i]) {\n t.tagSafe(oldTags[i].tags, 'keptTag', _this.world);\n }\n });\n }\n\n p.replace(newPhrases[0], _this); //Oneday: support multi-sentence replacements\n });\n return this;\n};\n/** search and replace match with new content */\n\n\nvar replace = function replace(match, _replace, options) {\n // if there's no 2nd param, use replaceWith\n if (_replace === undefined) {\n return this.replaceWith(match, options);\n }\n\n this.match(match).replaceWith(_replace, options);\n return this;\n};\n\nvar _01Replace = {\n replaceWith: replaceWith,\n replace: replace\n};\n\nvar _02Insert = createCommonjsModule(function (module, exports) {\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n }; // if it's empty, just create the phrase\n\n\n var makeNew = function makeNew(str, doc) {\n var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now\n\n var tmpDoc = doc.buildFrom([phrase]);\n tmpDoc.tagger();\n doc.list = tmpDoc.list;\n return doc;\n };\n /** add these new terms to the end*/\n\n\n exports.append = function () {\n var _this = this;\n\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to end of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this.buildFrom([phrase]);\n\n tmpDoc.tagger(); // push it onto the end\n\n p.append(phrase, _this);\n });\n return this;\n };\n\n exports.insertAfter = exports.append;\n exports.insertAt = exports.append;\n /** add these new terms to the front*/\n\n exports.prepend = function (str) {\n var _this2 = this;\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to start of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this2.buildFrom([phrase]);\n\n tmpDoc.tagger(); // add it to the start\n\n p.prepend(phrase, _this2);\n });\n return this;\n };\n\n exports.insertBefore = exports.prepend;\n /** add these new things to the end*/\n\n exports.concat = function () {\n // clear the cache\n this.uncache();\n var list = this.list.slice(0); //repeat for any number of params\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]; //support a fresh string\n\n if (typeof arg === 'string') {\n var arr = _01Tokenizer(arg, this.world); //TODO: phrase.tagger()?\n\n list = list.concat(arr);\n } else if (arg.isA === 'Doc') {\n list = list.concat(arg.list);\n } else if (arg.isA === 'Phrase') {\n list.push(arg);\n }\n }\n\n return this.buildFrom(list);\n };\n /** fully remove these terms from the document */\n\n\n exports[\"delete\"] = function (match) {\n var _this3 = this;\n\n // clear the cache\n this.uncache();\n var toRemove = this;\n\n if (match) {\n toRemove = this.match(match);\n }\n\n toRemove.list.forEach(function (phrase) {\n return phrase[\"delete\"](_this3);\n });\n return this;\n }; // aliases\n\n\n exports.remove = exports[\"delete\"];\n});\n\nvar shouldTrim = {\n clean: true,\n reduced: true,\n root: true\n};\n/** return the document as text */\n\nvar text = function text(options) {\n var _this = this;\n\n options = options || {}; //are we showing every phrase?\n\n var showFull = false;\n\n if (this.parents().length === 0) {\n showFull = true;\n } // cache roots, if necessary\n\n\n if (options === 'root' || _typeof(options) === 'object' && options.root) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var txt = this.list.reduce(function (str, p, i) {\n var trimPre = !showFull && i === 0;\n var trimPost = !showFull && i === _this.list.length - 1;\n return str + p.text(options, trimPre, trimPost);\n }, ''); // clumsy final trim of leading/trailing whitespace\n\n if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) {\n txt = txt.trim();\n }\n\n return txt;\n};\n\nvar _01Text = {\n text: text\n};\n\n// get all character startings in doc\nvar termOffsets = function termOffsets(doc) {\n var elapsed = 0;\n var index = 0;\n var offsets = {};\n doc.termList().forEach(function (term) {\n offsets[term.id] = {\n index: index,\n start: elapsed + term.pre.length,\n length: term.text.length\n };\n elapsed += term.pre.length + term.text.length + term.post.length;\n index += 1;\n });\n return offsets;\n};\n\nvar calcOffset = function calcOffset(doc, result, options) {\n // calculate offsets for each term\n var offsets = termOffsets(doc.all()); // add index values\n\n if (options.terms.index || options.index) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.index = offsets[t.id].index;\n });\n o.index = o.terms[0].index;\n });\n } // add offset values\n\n\n if (options.terms.offset || options.offset) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.offset = offsets[t.id] || {};\n }); // let len = o.terms.reduce((n, t, i) => {\n // n += t.offset.length || 0\n // //add whitespace, too\n // console.log(t.post)\n // return n\n // }, 0)\n // The offset information for the entire doc starts at (or just before)\n // the first term, and is as long as the whole text. The code originally\n // copied the entire offset value from terms[0], but since we're now\n // overriding 2 of the three fields, it's cleaner to just create an all-\n // new object and not pretend it's \"just\" the same as terms[0].\n\n o.offset = {\n index: o.terms[0].offset.index,\n start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text),\n length: o.text.length\n };\n });\n }\n};\n\nvar _offset = calcOffset;\n\nvar _02Json = createCommonjsModule(function (module, exports) {\n var jsonDefaults = {\n text: true,\n terms: true,\n trim: true\n }; //some options have dependents\n\n var setOptions = function setOptions(options) {\n options = Object.assign({}, jsonDefaults, options);\n\n if (options.unique) {\n options.reduced = true;\n } //offset calculation requires these options to be on\n\n\n if (options.offset) {\n options.text = true;\n\n if (!options.terms || options.terms === true) {\n options.terms = {};\n }\n\n options.terms.offset = true;\n }\n\n if (options.index || options.terms.index) {\n options.terms = options.terms === true ? {} : options.terms;\n options.terms.id = true;\n }\n\n return options;\n };\n /** pull out desired metadata from the document */\n\n\n exports.json = function () {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n //support json(3) format\n if (typeof options === 'number' && this.list[options]) {\n return this.list[options].json(jsonDefaults);\n }\n\n options = setOptions(options); // cache root strings beforehand, if necessary\n\n if (options.root === true) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var result = this.list.map(function (p) {\n return p.json(options, _this.world);\n }); // add offset and index data for each term\n\n if (options.terms.offset || options.offset || options.terms.index || options.index) {\n _offset(this, result, options);\n } // add frequency #s\n\n\n if (options.frequency || options.freq || options.count) {\n var obj = {};\n this.list.forEach(function (p) {\n var str = p.text('reduced');\n obj[str] = obj[str] || 0;\n obj[str] += 1;\n });\n this.list.forEach(function (p, i) {\n result[i].count = obj[p.text('reduced')];\n });\n } // remove duplicates\n\n\n if (options.unique) {\n var already = {};\n result = result.filter(function (o) {\n if (already[o.reduced] === true) {\n return false;\n }\n\n already[o.reduced] = true;\n return true;\n });\n }\n\n return result;\n }; //aliases\n\n\n exports.data = exports.json;\n});\n\nvar _debug = createCommonjsModule(function (module) {\n // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\n var reset = '\\x1b[0m';\n\n var padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n };\n\n function isClientSide() {\n return typeof window !== 'undefined' && window.document;\n } // some nice colors for client-side debug\n\n\n var css = {\n green: '#7f9c6c',\n red: '#914045',\n blue: '#6699cc',\n magenta: '#6D5685',\n cyan: '#2D85A8',\n yellow: '#e6d7b3',\n black: '#303b50'\n };\n\n var logClientSide = function logClientSide(doc) {\n var tagset = doc.world.tags;\n doc.list.forEach(function (p) {\n console.log('\\n%c\"' + p.text() + '\"', 'color: #e6d7b3;');\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 8);\n var found = tags.find(function (tag) {\n return tagset[tag] && tagset[tag].color;\n });\n var color = 'steelblue';\n\n if (tagset[found]) {\n color = tagset[found].color;\n color = css[color];\n }\n\n console.log(\" \".concat(word, \" - %c\").concat(tags.join(', ')), \"color: \".concat(color || 'steelblue', \";\"));\n });\n });\n }; //cheaper than requiring chalk\n\n\n var cli = {\n green: function green(str) {\n return '\\x1b[32m' + str + reset;\n },\n red: function red(str) {\n return '\\x1b[31m' + str + reset;\n },\n blue: function blue(str) {\n return '\\x1b[34m' + str + reset;\n },\n magenta: function magenta(str) {\n return '\\x1b[35m' + str + reset;\n },\n cyan: function cyan(str) {\n return '\\x1b[36m' + str + reset;\n },\n yellow: function yellow(str) {\n return '\\x1b[33m' + str + reset;\n },\n black: function black(str) {\n return '\\x1b[30m' + str + reset;\n }\n };\n\n var tagString = function tagString(tags, world) {\n tags = tags.map(function (tag) {\n if (!world.tags.hasOwnProperty(tag)) {\n return tag;\n }\n\n var c = world.tags[tag].color || 'blue';\n return cli[c](tag);\n });\n return tags.join(', ');\n }; //output some helpful stuff to the console\n\n\n var debug = function debug(doc) {\n if (isClientSide()) {\n logClientSide(doc);\n return doc;\n }\n\n console.log(cli.blue('====='));\n doc.list.forEach(function (p) {\n console.log(cli.blue(' -----'));\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n {\n text = cli.yellow(text);\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 18);\n var str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world);\n console.log(str);\n });\n });\n console.log('');\n return doc;\n };\n\n module.exports = debug;\n});\n\nvar topk = function topk(doc) {\n var list = doc.json({\n text: false,\n terms: false,\n reduced: true\n }); // combine them\n\n var obj = {};\n list.forEach(function (o) {\n if (!obj[o.reduced]) {\n o.count = 0;\n obj[o.reduced] = o;\n }\n\n obj[o.reduced].count += 1;\n });\n var arr = Object.keys(obj).map(function (k) {\n return obj[k];\n }); // sort them\n\n arr.sort(function (a, b) {\n if (a.count > b.count) {\n return -1;\n } else if (a.count < b.count) {\n return 1;\n }\n\n return 0;\n });\n return arr;\n};\n\nvar _topk = topk;\n\n/** pretty-print the current document and its tags */\n\nvar debug_1 = function debug_1() {\n _debug(this);\n return this;\n};\n/** some named output formats */\n\n\nvar out = function out(method) {\n if (method === 'text') {\n return this.text();\n }\n\n if (method === 'normal') {\n return this.text('normal');\n }\n\n if (method === 'json') {\n return this.json();\n }\n\n if (method === 'offset' || method === 'offsets') {\n return this.json({\n offset: true\n });\n }\n\n if (method === 'array') {\n return this.json({\n terms: false\n }).map(function (obj) {\n return obj.text;\n }).filter(function (str) {\n return str;\n });\n }\n\n if (method === 'freq' || method === 'frequency') {\n return _topk(this);\n }\n\n if (method === 'terms') {\n var list = [];\n this.json({\n text: false,\n terms: {\n text: true\n }\n }).forEach(function (obj) {\n var terms = obj.terms.map(function (t) {\n return t.text;\n });\n terms = terms.filter(function (t) {\n return t;\n });\n list = list.concat(terms);\n });\n return list;\n }\n\n if (method === 'tags') {\n return this.list.map(function (p) {\n return p.terms().reduce(function (h, t) {\n h[t.clean || t.implicit] = Object.keys(t.tags);\n return h;\n }, {});\n });\n }\n\n if (method === 'debug') {\n _debug(this);\n return this;\n }\n\n return this.text();\n};\n\nvar _03Out = {\n debug: debug_1,\n out: out\n};\n\nvar methods$6 = {\n /** alphabetical order */\n alpha: function alpha(a, b) {\n var left = a.text('clean');\n var right = b.text('clean');\n\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n },\n\n /** count the # of characters of each match */\n length: function length(a, b) {\n var left = a.text().trim().length;\n var right = b.text().trim().length;\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n },\n\n /** count the # of terms in each match */\n wordCount: function wordCount(a, b) {\n var left = a.wordCount();\n var right = b.wordCount();\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n }\n};\n/** sort by # of duplicates in the document*/\n\nvar byFreq = function byFreq(doc) {\n var counts = {};\n var options = {\n \"case\": true,\n punctuation: false,\n whitespace: true,\n unicode: true\n };\n doc.list.forEach(function (p) {\n var str = p.text(options);\n counts[str] = counts[str] || 0;\n counts[str] += 1;\n }); // sort by freq\n\n doc.list.sort(function (a, b) {\n var left = counts[a.text(options)];\n var right = counts[b.text(options)];\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; // order results 'chronologically', or document-order\n\n\nvar sortSequential = function sortSequential(doc) {\n var order = {};\n doc.json({\n terms: {\n offset: true\n }\n }).forEach(function (o) {\n order[o.terms[0].id] = o.terms[0].offset.start;\n });\n doc.list = doc.list.sort(function (a, b) {\n if (order[a.start] > order[b.start]) {\n return 1;\n } else if (order[a.start] < order[b.start]) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; //aliases\n\n\nmethods$6.alphabetical = methods$6.alpha;\nmethods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering\n\nvar seqNames = {\n index: true,\n sequence: true,\n seq: true,\n sequential: true,\n chron: true,\n chronological: true\n};\n/** re-arrange the order of the matches (in place) */\n\nvar sort = function sort(input) {\n input = input || 'alpha'; //do this one up-front\n\n if (input === 'freq' || input === 'frequency' || input === 'topk') {\n return byFreq(this);\n }\n\n if (seqNames.hasOwnProperty(input)) {\n return sortSequential(this);\n }\n\n input = methods$6[input] || input; // apply sort method on each phrase\n\n if (typeof input === 'function') {\n this.list = this.list.sort(input);\n return this;\n }\n\n return this;\n};\n/** reverse the order of the matches, but not the words */\n\n\nvar reverse = function reverse() {\n var list = [].concat(this.list);\n list = list.reverse();\n return this.buildFrom(list);\n};\n/** remove any duplicate matches */\n\n\nvar unique$1 = function unique() {\n var list = [].concat(this.list);\n var obj = {};\n list = list.filter(function (p) {\n var str = p.text('reduced').trim() || p.text('implicit').trim();\n\n if (obj.hasOwnProperty(str) === true) {\n return false;\n }\n\n obj[str] = true;\n return true;\n });\n return this.buildFrom(list);\n};\n\nvar _01Sort = {\n sort: sort,\n reverse: reverse,\n unique: unique$1\n};\n\nvar isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g;\nvar quotes = /['‘’“”\"′″‴]+/g;\nvar methods$5 = {\n // cleanup newlines and extra spaces\n whitespace: function whitespace(doc) {\n var termArr = doc.list.map(function (ts) {\n return ts.terms();\n });\n termArr.forEach(function (terms, o) {\n terms.forEach(function (t, i) {\n // keep dashes between words\n if (t.hasDash() === true) {\n t.post = ' - ';\n return;\n } // remove existing spaces\n\n\n t.pre = t.pre.replace(/\\s/g, '');\n t.post = t.post.replace(/\\s/g, ''); //last word? ensure there's a next sentence.\n\n if (terms.length - 1 === i && !termArr[o + 1]) {\n return;\n } // no extra spaces for contractions\n\n\n if (t.implicit && Boolean(t.text) === true) {\n return;\n } // no extra spaces for hyphenated words\n\n\n if (t.hasHyphen() === true) {\n return;\n }\n\n t.post += ' ';\n });\n });\n },\n punctuation: function punctuation(termList) {\n termList.forEach(function (t) {\n // space between hyphenated words\n if (t.hasHyphen() === true) {\n t.post = ' ';\n }\n\n t.pre = t.pre.replace(isPunct, '');\n t.post = t.post.replace(isPunct, ''); // elipses\n\n t.post = t.post.replace(/\\.\\.\\./, ''); // only allow one exclamation\n\n if (/!/.test(t.post) === true) {\n t.post = t.post.replace(/!/g, '');\n t.post = '!' + t.post;\n } // only allow one question mark\n\n\n if (/\\?/.test(t.post) === true) {\n t.post = t.post.replace(/[\\?!]*/, '');\n t.post = '?' + t.post;\n }\n });\n },\n unicode: function unicode(termList) {\n termList.forEach(function (t) {\n if (t.isImplicit() === true) {\n return;\n }\n\n t.text = unicode_1(t.text);\n });\n },\n quotations: function quotations(termList) {\n termList.forEach(function (t) {\n t.post = t.post.replace(quotes, '');\n t.pre = t.pre.replace(quotes, '');\n });\n },\n adverbs: function adverbs(doc) {\n doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove();\n },\n // remove the '.' from 'Mrs.' (safely)\n abbreviations: function abbreviations(doc) {\n doc.list.forEach(function (ts) {\n var terms = ts.terms();\n terms.forEach(function (t, i) {\n if (t.tags.Abbreviation === true && terms[i + 1]) {\n t.post = t.post.replace(/^\\./, '');\n }\n });\n });\n }\n};\nvar _methods = methods$5;\n\nvar defaults = {\n // light\n whitespace: true,\n unicode: true,\n punctuation: true,\n emoji: true,\n acronyms: true,\n abbreviations: true,\n // medium\n \"case\": false,\n contractions: false,\n parentheses: false,\n quotations: false,\n adverbs: false,\n // heavy (loose legibility)\n possessives: false,\n verbs: false,\n nouns: false,\n honorifics: false // pronouns: true,\n\n};\nvar mapping = {\n light: {},\n medium: {\n \"case\": true,\n contractions: true,\n parentheses: true,\n quotations: true,\n adverbs: true\n }\n};\nmapping.heavy = Object.assign({}, mapping.medium, {\n possessives: true,\n verbs: true,\n nouns: true,\n honorifics: true\n});\n/** common ways to clean-up the document, and reduce noise */\n\nvar normalize = function normalize(options) {\n options = options || {}; // support named forms\n\n if (typeof options === 'string') {\n options = mapping[options] || {};\n } // set defaults\n\n\n options = Object.assign({}, defaults, options); // clear the cache\n\n this.uncache();\n var termList = this.termList(); // lowercase things\n\n if (options[\"case\"]) {\n this.toLowerCase();\n } //whitespace\n\n\n if (options.whitespace) {\n _methods.whitespace(this);\n } // unicode: é -> e\n\n\n if (options.unicode) {\n _methods.unicode(termList);\n } //punctuation - keep sentence punctation, quotes, parenths\n\n\n if (options.punctuation) {\n _methods.punctuation(termList);\n } // remove ':)'\n\n\n if (options.emoji) {\n this.remove('(#Emoji|#Emoticon)');\n } // 'f.b.i.' -> 'FBI'\n\n\n if (options.acronyms) {\n this.acronyms().strip(); // .toUpperCase()\n } // remove period from abbreviations\n\n\n if (options.abbreviations) {\n _methods.abbreviations(this);\n } // --Medium methods--\n // `isn't` -> 'is not'\n\n\n if (options.contraction || options.contractions) {\n this.contractions().expand();\n } // '(word)' -> 'word'\n\n\n if (options.parentheses) {\n this.parentheses().unwrap();\n } // remove \"\" punctuation\n\n\n if (options.quotations || options.quotes) {\n _methods.quotations(termList);\n } // remove any un-necessary adverbs\n\n\n if (options.adverbs) {\n _methods.adverbs(this);\n } // --Heavy methods--\n // `cory hart's -> cory hart'\n\n\n if (options.possessive || options.possessives) {\n this.possessives().strip();\n } // 'he walked' -> 'he walk'\n\n\n if (options.verbs) {\n this.verbs().toInfinitive();\n } // 'three dogs' -> 'three dog'\n\n\n if (options.nouns || options.plurals) {\n this.nouns().toSingular();\n } // remove 'Mr.' from 'Mr John Smith'\n\n\n if (options.honorifics) {\n this.remove('#Honorific');\n }\n\n return this;\n};\n\nvar _02Normalize = {\n normalize: normalize\n};\n\nvar _03Split = createCommonjsModule(function (module, exports) {\n /** return a Document with three parts for every match\n * seperate everything before the word, as a new phrase\n */\n exports.splitOn = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitOn(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before) {\n matches.push(parts.before);\n }\n\n if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** return a Document with two parts for every match\n * seperate everything after the word, as a new phrase\n */\n\n\n exports.splitAfter = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitAfter(this);\n } // start looking for our matches\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before && parts.match) {\n // merge these two together\n parts.before.length += parts.match.length;\n matches.push(parts.before);\n } else if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n\n exports.split = exports.splitAfter; //i guess?\n\n /** return a Document with two parts for every match */\n\n exports.splitBefore = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitBefore(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add before part in\n\n if (parts.before) {\n matches.push(parts.before);\n } // merge match+after\n\n\n if (parts.match && parts.after) {\n parts.match.length += parts.after.length;\n } // start matching now on the end\n\n\n carry = parts.match;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** split a document into labeled sections */\n\n\n exports.segment = function (regs, options) {\n regs = regs || {};\n options = options || {\n text: true\n };\n var doc = this;\n var keys = Object.keys(regs); // split em\n\n keys.forEach(function (k) {\n doc = doc.splitOn(k);\n }); //add labels for each section\n\n doc.list.forEach(function (p) {\n for (var i = 0; i < keys.length; i += 1) {\n if (p.has(keys[i])) {\n p.segment = regs[keys[i]];\n return;\n }\n }\n });\n return doc.list.map(function (p) {\n var res = p.json(options);\n res.segment = p.segment || null;\n return res;\n });\n };\n});\n\nvar eachTerm = function eachTerm(doc, fn) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t[fn](world);\n });\n });\n return doc;\n};\n/** turn every letter of every term to lower-cse */\n\n\nvar toLowerCase = function toLowerCase() {\n return eachTerm(this, 'toLowerCase');\n};\n/** turn every letter of every term to upper case */\n\n\nvar toUpperCase = function toUpperCase() {\n return eachTerm(this, 'toUpperCase');\n};\n/** upper-case the first letter of each term */\n\n\nvar toTitleCase = function toTitleCase() {\n return eachTerm(this, 'toTitleCase');\n};\n/** remove whitespace and title-case each term */\n\n\nvar toCamelCase = function toCamelCase() {\n this.list.forEach(function (p) {\n //remove whitespace\n var terms = p.terms();\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.toTitleCase();\n }\n\n if (i !== terms.length - 1) {\n t.post = '';\n }\n });\n }); // this.tag('#CamelCase', 'toCamelCase')\n\n return this;\n};\n\nvar _04Case = {\n toLowerCase: toLowerCase,\n toUpperCase: toUpperCase,\n toTitleCase: toTitleCase,\n toCamelCase: toCamelCase\n};\n\n/** add this punctuation or whitespace before each match: */\n\nvar _05Whitespace = createCommonjsModule(function (module, exports) {\n exports.pre = function (str, concat) {\n if (str === undefined) {\n return this.list[0].terms(0).pre;\n }\n\n this.list.forEach(function (p) {\n var term = p.terms(0);\n\n if (concat === true) {\n term.pre += str;\n } else {\n term.pre = str;\n }\n });\n return this;\n };\n /** add this punctuation or whitespace after each match: */\n\n\n exports.post = function (str, concat) {\n // return array of post strings\n if (str === undefined) {\n return this.list.map(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n return term.post;\n });\n } // set post string on all ends\n\n\n this.list.forEach(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n\n if (concat === true) {\n term.post += str;\n } else {\n term.post = str;\n }\n });\n return this;\n };\n /** remove start and end whitespace */\n\n\n exports.trim = function () {\n this.list = this.list.map(function (p) {\n return p.trim();\n });\n return this;\n };\n /** connect words with hyphen, and remove whitespace */\n\n\n exports.hyphenate = function () {\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.pre = '';\n }\n\n if (terms[i + 1]) {\n t.post = '-';\n }\n });\n });\n return this;\n };\n /** remove hyphens between words, and set whitespace */\n\n\n exports.dehyphenate = function () {\n var hasHyphen = /(-|–|—)/;\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t) {\n if (hasHyphen.test(t.post)) {\n t.post = ' ';\n }\n });\n });\n return this;\n };\n\n exports.deHyphenate = exports.dehyphenate;\n /** add quotations around these matches */\n\n exports.toQuotations = function (start, end) {\n start = start || \"\\\"\";\n end = end || \"\\\"\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n\n exports.toQuotation = exports.toQuotations;\n /** add brackets around these matches */\n\n exports.toParentheses = function (start, end) {\n start = start || \"(\";\n end = end || \")\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n});\n\n/** make all phrases into one phrase */\nvar join = function join(str) {\n // clear the cache\n this.uncache(); // make one large phrase - 'main'\n\n var main = this.list[0];\n var before = main.length;\n var removed = {};\n\n for (var i = 1; i < this.list.length; i++) {\n var p = this.list[i];\n removed[p.start] = true;\n var term = main.lastTerm(); // add whitespace between them\n\n if (str) {\n term.post += str;\n } // main -> p\n\n\n term.next = p.start; // main <- p\n\n p.terms(0).prev = term.id;\n main.length += p.length;\n main.cache = {};\n } // parents are bigger than than their children.\n // when we increase a child, we increase their parent too.\n\n\n var increase = main.length - before;\n this.parents().forEach(function (doc) {\n // increase length on each effected phrase\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var _i = 0; _i < terms.length; _i++) {\n if (terms[_i].id === main.start) {\n p.length += increase;\n break;\n }\n }\n\n p.cache = {};\n }); // remove redundant phrases now\n\n doc.list = doc.list.filter(function (p) {\n return removed[p.start] !== true;\n });\n }); // return one major phrase\n\n return this.buildFrom([main]);\n};\n\nvar _06Join = {\n join: join\n};\n\nvar postPunct = /[,\\)\"';:\\-–—\\.…]/; // const irregulars = {\n// 'will not': `won't`,\n// 'i am': `i'm`,\n// }\n\nvar setContraction = function setContraction(m, suffix) {\n if (!m.found) {\n return;\n }\n\n var terms = m.termList(); //avoid any problematic punctuation\n\n for (var i = 0; i < terms.length - 1; i++) {\n var t = terms[i];\n\n if (postPunct.test(t.post)) {\n return;\n }\n } // set them as implict\n\n\n terms.forEach(function (t) {\n t.implicit = t.clean;\n }); // perform the contraction\n\n terms[0].text += suffix; // clean-up the others\n\n terms.slice(1).forEach(function (t) {\n t.text = '';\n });\n\n for (var _i = 0; _i < terms.length - 1; _i++) {\n var _t = terms[_i];\n _t.post = _t.post.replace(/ /, '');\n }\n};\n/** turn 'i am' into i'm */\n\n\nvar contract = function contract() {\n var doc = this.not('@hasContraction'); // we are -> we're\n\n var m = doc.match('(we|they|you) are');\n setContraction(m, \"'re\"); // they will -> they'll\n\n m = doc.match('(he|she|they|it|we|you) will');\n setContraction(m, \"'ll\"); // she is -> she's\n\n m = doc.match('(he|she|they|it|we) is');\n setContraction(m, \"'s\"); // spencer is -> spencer's\n\n m = doc.match('#Person is');\n setContraction(m, \"'s\"); // spencer would -> spencer'd\n\n m = doc.match('#Person would');\n setContraction(m, \"'d\"); // would not -> wouldn't\n\n m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not');\n setContraction(m, \"n't\"); // i have -> i've\n\n m = doc.match('(i|we|they) have');\n setContraction(m, \"'ve\"); // would have -> would've\n\n m = doc.match('(would|should|could) have');\n setContraction(m, \"'ve\"); // i am -> i'm\n\n m = doc.match('i am');\n setContraction(m, \"'m\"); // going to -> gonna\n\n m = doc.match('going to');\n return this;\n};\n\nvar _07Contract = {\n contract: contract\n};\n\nvar methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract);\n\nvar methods$3 = {}; // allow helper methods like .adjectives() and .adverbs()\n\nvar arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']];\narr.forEach(function (a) {\n methods$3[a[0]] = function (n) {\n var m = this.match(a[1]);\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n}); // aliases\n\nmethods$3.emojis = methods$3.emoji;\nmethods$3.atmentions = methods$3.atMentions;\nmethods$3.words = methods$3.terms;\n/** return anything tagged as a phone number */\n\nmethods$3.phoneNumbers = function (n) {\n var m = this.splitAfter('@hasComma');\n m = m.match('#PhoneNumber+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** Deprecated: please use compromise-numbers plugin */\n\n\nmethods$3.money = function (n) {\n var m = this.match('#Money #Currency?');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all cities, countries, addresses, and regions */\n\n\nmethods$3.places = function (n) {\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep);\n m.sort('index');\n m = m.match('#Place+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all schools, businesses and institutions */\n\n\nmethods$3.organizations = function (n) {\n var m = this.clauses();\n m = m.match('#Organization+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n}; //combine them with .topics() method\n\n\nmethods$3.entities = function (n) {\n var r = this.clauses(); // Find people, places, and organizations\n\n var yup = r.people();\n yup = yup.concat(r.places());\n yup = yup.concat(r.organizations());\n var ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father'];\n yup = yup.not(ignore); //return them to normal ordering\n\n yup.sort('sequence'); // yup.unique() //? not sure\n\n if (typeof n === 'number') {\n yup = yup.get(n);\n }\n\n return yup;\n}; //aliases\n\n\nmethods$3.things = methods$3.entities;\nmethods$3.topics = methods$3.entities;\nvar _simple = methods$3;\n\nvar underOver = /^(under|over)-?/;\n/** match a word-sequence, like 'super bowl' in the lexicon */\n\nvar tryMultiple = function tryMultiple(terms, t, world) {\n var lex = world.words; //try a two-word version\n\n var txt = terms[t].reduced + ' ' + terms[t + 1].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-two', world);\n terms[t + 1].tag(lex[txt], 'lexicon-two', world);\n return 1;\n } //try a three-word version?\n\n\n if (t + 2 < terms.length) {\n txt += ' ' + terms[t + 2].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-three', world);\n terms[t + 1].tag(lex[txt], 'lexicon-three', world);\n terms[t + 2].tag(lex[txt], 'lexicon-three', world);\n return 2;\n }\n } //try a four-word version?\n\n\n if (t + 3 < terms.length) {\n txt += ' ' + terms[t + 3].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-four', world);\n terms[t + 1].tag(lex[txt], 'lexicon-four', world);\n terms[t + 2].tag(lex[txt], 'lexicon-four', world);\n terms[t + 3].tag(lex[txt], 'lexicon-four', world);\n return 3;\n }\n }\n\n return 0;\n};\n/** look at each word in our list of known-words */\n\n\nvar checkLexicon = function checkLexicon(terms, world) {\n var lex = world.words;\n var hasCompound = world.hasCompound; // use reduced?\n //go through each term, and check the lexicon\n\n for (var t = 0; t < terms.length; t += 1) {\n var str = terms[t].clean; //is it the start of a compound word, like 'super bowl'?\n\n if (hasCompound[str] === true && t + 1 < terms.length) {\n var foundWords = tryMultiple(terms, t, world);\n\n if (foundWords > 0) {\n t += foundWords; //skip any already-found words\n\n continue;\n }\n } //try one-word lexicon\n\n\n if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) {\n terms[t].tag(lex[str], 'lexicon', world);\n continue;\n } // look at reduced version of term, too\n\n\n if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) {\n terms[t].tag(lex[terms[t].reduced], 'lexicon', world);\n continue;\n } // prefix strip: try to match 'take' for 'undertake'\n\n\n if (underOver.test(str) === true) {\n var noPrefix = str.replace(underOver, '');\n\n if (lex.hasOwnProperty(noPrefix) === true) {\n terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world);\n }\n }\n }\n\n return terms;\n};\n\nvar _01Lexicon = checkLexicon;\n\nvar apostrophes = /[\\'‘’‛‵′`´]$/;\nvar perSec = /^(m|k|cm|km|m)\\/(s|h|hr)$/; // '5 k/m'\n//\n\nvar checkPunctuation = function checkPunctuation(terms, i, world) {\n var term = terms[i]; //check hyphenation\n // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') {\n // term.tag('Hyphenated', 'has-hyphen', world)\n // }\n // support 'head-over'\n // if (term.hasHyphen() === true) {\n // console.log(term.tags)\n // }\n // console.log(term.hasHyphen(), term.text)\n //an end-tick (trailing apostrophe) - flanders', or Carlos'\n\n if (apostrophes.test(term.text)) {\n if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) {\n var endChar = term.clean[term.clean.length - 2]; //flanders'\n\n if (endChar === 's') {\n term.tag(['Possessive', 'Noun'], 'end-tick', world);\n return;\n } //chillin'\n\n\n if (endChar === 'n') {\n term.tag(['Gerund'], 'chillin', world);\n }\n }\n } // '5 km/s'\n\n\n if (perSec.test(term.text)) {\n term.tag('Unit', 'per-sec', world);\n } // 'NASA' is, but not 'i REALLY love it.'\n // if (term.tags.Noun === true && isAcronym(term, world)) {\n // term.tag('Acronym', 'acronym-step', world)\n // term.tag('Noun', 'acronym-infer', world)\n // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n // term.tag('Acronym', 'one-letter-acronym', world)\n // term.tag('Noun', 'one-letter-infer', world)\n // }\n\n};\n\nvar _02Punctuation = checkPunctuation;\n\n//these are regexes applied to t.text, instead of t.clean\n// order matters.\nvar startsWith = [//web tags\n[/^[\\w\\.]+@[\\w\\.]+\\.[a-z]{2,3}$/, 'Email'], //not fancy\n[/^#[a-z0-9_\\u00C0-\\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm\n[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30\n[/^@\\w{2,}$/, 'AtMention'], //@spencermountain\n[/^(https?:\\/\\/|www\\.)\\w+\\.[a-z]{2,3}/, 'Url'], //with http/www\n[/^[\\w./]+\\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain\n//dates/times\n[/^'[0-9]{2}$/, 'Year'], //like '97\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32\n[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm\n[/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs\n[/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+\n[/^[a-z0-9]*? o\\'?clock$/, 'Time'], //3 oclock\n[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z\n[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89\n[/^[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,4}$/, 'Date'], // 03/02/89\n[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89\n[/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3\n[/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3\n//names\n[/^ma?c\\'.*/, 'LastName'], //mc'adams\n[/^o\\'[drlkn].*/, 'LastName'], //o'douggan\n[/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes\n//slang things\n[/^(lol)+[sz]$/, 'Expression'], //lol\n[/^woo+a*?h?$/, 'Expression'], //whoaa, wooo\n[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'],\n[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date'], // 03-02-89\n//phone numbers\n[/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809\n[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809\n//money\n// currency regex\n// /[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\n//like $5.30\n[/^[-+]?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(k|m|b|bn)?\\+?$/, ['Money', 'Value']], //like 5.30$\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\\+?$/, ['Money', 'Value']], //like $400usd\n[/^[-+]?[\\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers\n// 50 | -50 | 3.23 | 5,999.0 | 10+\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th\n[/^\\.[0-9]+\\+?$/, ['Cardinal', 'NumericValue']], //percent\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% ..\n[/^\\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% ..\n//fraction\n[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths\n//range\n[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th\n//time-range\n[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30\n//with unit\n[/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp\n//ordinal\n// [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th\n// [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th\n];\n\nvar romanNumeral = /^[IVXLCDM]{2,}$/;\nvar romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877\n//try each of the ^regexes in our list\n\nvar checkRegex$1 = function checkRegex(term, world) {\n var str = term.text; // do them all!\n\n for (var r = 0; r < startsWith.length; r += 1) {\n if (startsWith[r][0].test(str) === true) {\n term.tagSafe(startsWith[r][1], 'prefix #' + r, world);\n break;\n }\n } // do some more!\n //roman numberals - XVII\n\n\n if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) {\n term.tag('RomanNumeral', 'xvii', world);\n }\n};\n\nvar _03Prefixes = checkRegex$1;\n\n//regex suffix patterns and their most common parts of speech,\n//built using wordnet, by spencer kelly.\n//this mapping shrinks-down the uglified build\nvar Adj$1 = 'Adjective';\nvar Inf$1 = 'Infinitive';\nvar Pres$1 = 'PresentTense';\nvar Sing$1 = 'Singular';\nvar Past$1 = 'PastTense';\nvar Adverb = 'Adverb';\nvar Exp = 'Expression';\nvar Actor$1 = 'Actor';\nvar Verb = 'Verb';\nvar Noun$1 = 'Noun';\nvar Last$1 = 'LastName'; //the order here matters.\n//regexes indexed by mandated last-character\n\nvar endsWith = {\n a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female)\n [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj$1]],\n d: [//==-ed==\n //double-consonant\n [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned\n //double-vowel\n [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered\n //-hed\n [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed\n //-rd\n [/.[aeiou]red$/, Past$1], //stored\n [/.[aeiou]r?ried$/, Past$1], //buried\n //-led\n [/.[bcdgtr]led$/, Past$1], //startled, rumbled\n [/.[aoui]f?led$/, Past$1], //impaled, stifled\n //-sed\n [/.[iao]sed$/, Past$1], //franchised\n [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced\n //-med\n [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed\n //-ked\n [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked\n //-ged\n [/[aeiou][nl]?ged$/, Past$1], //engaged\n //-ted\n [/.[tdbwxz]ed$/, Past$1], //bribed, boxed\n [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed\n //-ied\n [/.[cdlmnprstv]ied$/, Past$1], //rallied\n [/[^aeiou]ard$/, Sing$1], //card\n [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]],\n e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1]],\n h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp] //uhoh\n ],\n i: [[/.[oau][wvl]ski$/, Last$1] //polish (male)\n ],\n k: [[/^(k){2}$/, Exp] //kkkk\n ],\n l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]],\n m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date']],\n n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin'\n ],\n o: [[/^no+$/, Exp], //noooo\n [/^(yo)+$/, Exp], //yoyo\n [/^woo+[pt]?$/, Exp] //woo\n ],\n r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']],\n t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]],\n s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks\n [/.[aeiou]kes$/, Pres$1], //bakes\n [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\\'s$/, Noun$1], [/^yes+$/, Exp] //yessss\n ],\n v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe\n ],\n y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]]\n};\n\n//just a foolish lookup of known suffixes\nvar Adj = 'Adjective';\nvar Inf = 'Infinitive';\nvar Pres = 'PresentTense';\nvar Sing = 'Singular';\nvar Past = 'PastTense';\nvar Avb = 'Adverb';\nvar Plrl = 'Plural';\nvar Actor = 'Actor';\nvar Vb = 'Verb';\nvar Noun = 'Noun';\nvar Last = 'LastName';\nvar Modal = 'Modal';\nvar Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\n\nvar suffixMap = [null, //0\nnull, //1\n{\n //2-letter\n ea: Sing,\n ia: Noun,\n ic: Adj,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb\n}, {\n //3-letter\n oed: Past,\n ued: Past,\n xed: Past,\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n azy: Adj,\n eer: Noun,\n end: Vb,\n ped: Past,\n ffy: Adj,\n ify: Inf,\n ing: 'Gerund',\n //likely to be converted to Adj after lexicon pass\n ize: Inf,\n lar: Adj,\n mum: Adj,\n nes: Pres,\n nny: Adj,\n oid: Adj,\n ous: Adj,\n que: Adj,\n rol: Sing,\n sis: Sing,\n zes: Pres\n}, {\n //4-letter\n amed: Past,\n aped: Past,\n ched: Past,\n lked: Past,\n nded: Past,\n cted: Past,\n dged: Past,\n akis: Last,\n //greek\n cede: Inf,\n chuk: Last,\n //east-europe\n czyk: Last,\n //polish (male)\n ects: Pres,\n ends: Vb,\n enko: Last,\n //east-europe\n ette: Sing,\n fies: Pres,\n fore: Avb,\n gate: Inf,\n gone: Adj,\n ices: Plrl,\n ints: Plrl,\n ines: Plrl,\n ions: Plrl,\n less: Avb,\n llen: Adj,\n made: Adj,\n nsen: Last,\n //norway\n oses: Pres,\n ould: Modal,\n some: Adj,\n sson: Last,\n //swedish male\n tage: Inf,\n teen: 'Value',\n tion: Sing,\n tive: Adj,\n tors: Noun,\n vice: Sing\n}, {\n //5-letter\n tized: Past,\n urned: Past,\n eased: Past,\n ances: Plrl,\n bound: Adj,\n ettes: Plrl,\n fully: Avb,\n ishes: Pres,\n ities: Plrl,\n marek: Last,\n //polish (male)\n nssen: Last,\n //norway\n ology: Noun,\n ports: Plrl,\n rough: Adj,\n tches: Pres,\n tieth: 'Ordinal',\n tures: Plrl,\n wards: Avb,\n where: Avb\n}, {\n //6-letter\n auskas: Last,\n //lithuania\n keeper: Actor,\n logist: Actor,\n teenth: 'Value'\n}, {\n //7-letter\n opoulos: Last,\n //greek\n borough: Place,\n //Hillsborough\n sdottir: Last //swedish female\n\n}];\n\nvar endRegexs = function endRegexs(term, world) {\n var str = term.clean;\n var _char = str[str.length - 1];\n\n if (endsWith.hasOwnProperty(_char) === true) {\n var regs = endsWith[_char];\n\n for (var r = 0; r < regs.length; r += 1) {\n if (regs[r][0].test(str) === true) {\n term.tagSafe(regs[r][1], \"endReg \".concat(_char, \" #\").concat(r), world);\n break;\n }\n }\n }\n}; //sweep-through all suffixes\n\n\nvar knownSuffixes = function knownSuffixes(term, world) {\n var len = term.clean.length;\n var max = 7;\n\n if (len <= max) {\n max = len - 1;\n }\n\n for (var i = max; i > 1; i -= 1) {\n var str = term.clean.substr(len - i, len);\n\n if (suffixMap[str.length].hasOwnProperty(str) === true) {\n var tag = suffixMap[str.length][str];\n term.tagSafe(tag, 'suffix -' + str, world);\n break;\n }\n }\n}; //all-the-way-down!\n\n\nvar checkRegex = function checkRegex(term, world) {\n knownSuffixes(term, world);\n endRegexs(term, world);\n};\n\nvar _04Suffixes = checkRegex;\n\n//just some of the most common emoticons\n//faster than\n//http://stackoverflow.com/questions/28077049/regex-matching-emoticons\nvar emoticons = {\n ':(': true,\n ':)': true,\n ':P': true,\n ':p': true,\n ':O': true,\n ':3': true,\n ':|': true,\n ':/': true,\n ':\\\\': true,\n ':$': true,\n ':*': true,\n ':@': true,\n ':-(': true,\n ':-)': true,\n ':-P': true,\n ':-p': true,\n ':-O': true,\n ':-3': true,\n ':-|': true,\n ':-/': true,\n ':-\\\\': true,\n ':-$': true,\n ':-*': true,\n ':-@': true,\n ':^(': true,\n ':^)': true,\n ':^P': true,\n ':^p': true,\n ':^O': true,\n ':^3': true,\n ':^|': true,\n ':^/': true,\n ':^\\\\': true,\n ':^$': true,\n ':^*': true,\n ':^@': true,\n '):': true,\n '(:': true,\n '$:': true,\n '*:': true,\n ')-:': true,\n '(-:': true,\n '$-:': true,\n '*-:': true,\n ')^:': true,\n '(^:': true,\n '$^:': true,\n '*^:': true,\n '<3': true,\n ' 35) {\n return false;\n }\n\n return true;\n }\n\n return false;\n}; //check against emoticon whitelist\n\n\nvar isEmoticon = function isEmoticon(str) {\n str = str.replace(/^[:;]/, ':'); //normalize the 'eyes'\n\n return emoticons.hasOwnProperty(str);\n};\n\nvar tagEmoji = function tagEmoji(term, world) {\n var raw = term.pre + term.text + term.post;\n raw = raw.trim(); //dont double-up on ending periods\n\n raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis\n\n if (isCommaEmoji(raw) === true) {\n term.tag('Emoji', 'comma-emoji', world);\n term.text = raw;\n term.pre = term.pre.replace(':', '');\n term.post = term.post.replace(':', '');\n } //test for unicode emojis\n\n\n if (term.text.match(emojiReg)) {\n term.tag('Emoji', 'unicode-emoji', world);\n term.text = raw;\n } //test for emoticon ':)' emojis\n\n\n if (isEmoticon(raw) === true) {\n term.tag('Emoticon', 'emoticon-emoji', world);\n term.text = raw;\n }\n};\n\nvar _05Emoji = tagEmoji;\n\nvar steps = {\n lexicon: _01Lexicon,\n punctuation: _02Punctuation,\n regex: _03Prefixes,\n suffix: _04Suffixes,\n emoji: _05Emoji\n}; //'lookups' look at a term by itself\n\nvar lookups = function lookups(doc, terms) {\n var world = doc.world; //our list of known-words\n\n steps.lexicon(terms, world); //try these other methods\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i]; //or maybe some helpful punctuation\n\n steps.punctuation(terms, i, world); //mostly prefix checks\n\n steps.regex(term, world); //maybe we can guess\n\n steps.suffix(term, world); //emoji and emoticons\n\n steps.emoji(term, world);\n }\n\n return doc;\n};\n\nvar _01Init = lookups;\n\n//markov-like stats about co-occurance, for hints about unknown terms\n//basically, a little-bit better than the noun-fallback\n//just top n-grams from nlp tags, generated from nlp-corpus\n//after this word, here's what happens usually\nvar afterThisWord = {\n i: 'Verb',\n //44% //i walk..\n first: 'Noun',\n //50% //first principles..\n it: 'Verb',\n //33%\n there: 'Verb',\n //35%\n not: 'Verb',\n //33%\n because: 'Noun',\n //31%\n \"if\": 'Noun',\n //32%\n but: 'Noun',\n //26%\n who: 'Verb',\n //40%\n \"this\": 'Noun',\n //37%\n his: 'Noun',\n //48%\n when: 'Noun',\n //33%\n you: 'Verb',\n //35%\n very: 'Adjective',\n // 39%\n old: 'Noun',\n //51%\n never: 'Verb',\n //42%\n before: 'Noun' //28%\n\n}; //in advance of this word, this is what happens usually\n\nvar beforeThisWord = {\n there: 'Verb',\n //23% // be there\n me: 'Verb',\n //31% //see me\n man: 'Adjective',\n // 80% //quiet man\n only: 'Verb',\n //27% //sees only\n him: 'Verb',\n //32% //show him\n were: 'Noun',\n //48% //we were\n took: 'Noun',\n //38% //he took\n himself: 'Verb',\n //31% //see himself\n went: 'Noun',\n //43% //he went\n who: 'Noun',\n //47% //person who\n jr: 'Person'\n}; //following this POS, this is likely\n\nvar afterThisPOS = {\n Adjective: 'Noun',\n //36% //blue dress\n Possessive: 'Noun',\n //41% //his song\n Determiner: 'Noun',\n //47%\n Adverb: 'Verb',\n //20%\n Pronoun: 'Verb',\n //40%\n Value: 'Noun',\n //47%\n Ordinal: 'Noun',\n //53%\n Modal: 'Verb',\n //35%\n Superlative: 'Noun',\n //43%\n Demonym: 'Noun',\n //38%\n Honorific: 'Person' //\n\n}; //in advance of this POS, this is likely\n\nvar beforeThisPOS = {\n Copula: 'Noun',\n //44% //spencer is\n PastTense: 'Noun',\n //33% //spencer walked\n Conjunction: 'Noun',\n //36%\n Modal: 'Noun',\n //38%\n Pluperfect: 'Noun',\n //40%\n PerfectTense: 'Verb' //32%\n\n};\nvar markov = {\n beforeThisWord: beforeThisWord,\n afterThisWord: afterThisWord,\n beforeThisPos: beforeThisPOS,\n afterThisPos: afterThisPOS\n};\n\nvar afterKeys = Object.keys(markov.afterThisPos);\nvar beforeKeys = Object.keys(markov.beforeThisPos);\n\nvar checkNeighbours = function checkNeighbours(terms, world) {\n var _loop = function _loop(i) {\n var term = terms[i]; //do we still need a tag?\n\n if (term.isKnown() === true) {\n return \"continue\";\n } //ok, this term needs a tag.\n //look at previous word for clues..\n\n\n var lastTerm = terms[i - 1];\n\n if (lastTerm) {\n // 'foobar term'\n if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) {\n var tag = markov.afterThisWord[lastTerm.clean];\n term.tag(tag, 'after-' + lastTerm.clean, world);\n return \"continue\";\n } // 'Tag term'\n // (look at previous POS tags for clues..)\n\n\n var foundTag = afterKeys.find(function (tag) {\n return lastTerm.tags[tag];\n });\n\n if (foundTag !== undefined) {\n var _tag = markov.afterThisPos[foundTag];\n term.tag(_tag, 'after-' + foundTag, world);\n return \"continue\";\n }\n } //look at next word for clues..\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm) {\n // 'term foobar'\n if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) {\n var _tag2 = markov.beforeThisWord[nextTerm.clean];\n term.tag(_tag2, 'before-' + nextTerm.clean, world);\n return \"continue\";\n } // 'term Tag'\n // (look at next POS tags for clues..)\n\n\n var _foundTag = beforeKeys.find(function (tag) {\n return nextTerm.tags[tag];\n });\n\n if (_foundTag !== undefined) {\n var _tag3 = markov.beforeThisPos[_foundTag];\n term.tag(_tag3, 'before-' + _foundTag, world);\n return \"continue\";\n }\n }\n };\n\n for (var i = 0; i < terms.length; i += 1) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n};\n\nvar _01Neighbours = checkNeighbours;\n\nvar titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\nvar hasNumber = /[0-9]/;\n/** look for any grammar signals based on capital/lowercase */\n\nvar checkCase = function checkCase(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 1; i < terms.length; i++) {\n var term = terms[i];\n\n if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) {\n term.tag('ProperNoun', 'titlecase-noun', world);\n }\n }\n });\n};\n\nvar _02Case = checkCase;\n\nvar hasPrefix = /^(re|un)-?[a-z\\u00C0-\\u00FF]/;\nvar prefix = /^(re|un)-?/;\n/** check 'rewatch' in lexicon as 'watch' */\n\nvar checkPrefix = function checkPrefix(terms, world) {\n var lex = world.words;\n terms.forEach(function (term) {\n // skip if we have a good tag already\n if (term.isKnown() === true) {\n return;\n } //does it start with 'un|re'\n\n\n if (hasPrefix.test(term.clean) === true) {\n // look for the root word in the lexicon:\n var stem = term.clean.replace(prefix, '');\n\n if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) {\n term.tag(lex[stem], 'stem-' + stem, world);\n }\n }\n });\n};\n\nvar _03Stem = checkPrefix;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$3 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens\n/(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar isPlural_1$2 = {\n isSingular: isSingular$1,\n isPlural: isPlural$3\n};\n\nvar noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday'];\nvar notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/];\nvar notSingular = [/i$/, /ae$/];\n/** turn nouns into singular/plural */\n\nvar checkPlural = function checkPlural(t, world) {\n if (t.tags.Noun && !t.tags.Acronym) {\n var str = t.clean; //skip existing tags, fast\n\n if (t.tags.Singular || t.tags.Plural) {\n return;\n } //too short\n\n\n if (str.length <= 3) {\n t.tag('Singular', 'short-singular', world);\n return;\n } //is it impossible to be plural?\n\n\n if (noPlurals.find(function (tag) {\n return t.tags[tag];\n })) {\n return;\n } // isPlural suffix rules\n\n\n if (isPlural_1$2.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Plural', 'plural-rules', world);\n return;\n } // isSingular suffix rules\n\n\n if (isPlural_1$2.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Singular', 'singular-rules', world);\n return;\n } // finally, fallback 'looks plural' rules..\n\n\n if (/s$/.test(str) === true) {\n //avoid anything too sketchy to be plural\n if (notPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Plural', 'plural-fallback', world);\n return;\n } //avoid anything too sketchy to be singular\n\n\n if (notSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Singular', 'singular-fallback', world);\n }\n};\n\nvar _04Plurals = checkPlural;\n\n//nouns that also signal the title of an unknown organization\n//todo remove/normalize plural forms\nvar orgWords = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law',\n'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network',\n'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party',\n\"people's party\", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers'];\nvar organizations = orgWords.reduce(function (h, str) {\n h[str] = 'Noun';\n return h;\n}, {});\n\nvar maybeOrg = function maybeOrg(t) {\n //must be a noun\n if (!t.tags.Noun) {\n return false;\n } //can't be these things\n\n\n if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) {\n return false;\n } //must be one of these\n\n\n if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) {\n return true;\n }\n\n return false;\n};\n\nvar tagOrgs = function tagOrgs(terms, world) {\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (organizations[t.clean] !== undefined && organizations.hasOwnProperty(t.clean) === true) {\n // look-backward - eg. 'Toronto University'\n var lastTerm = terms[i - 1];\n\n if (lastTerm !== undefined && maybeOrg(lastTerm) === true) {\n lastTerm.tagSafe('Organization', 'org-word-1', world);\n t.tagSafe('Organization', 'org-word-2', world);\n continue;\n } //look-forward - eg. University of Toronto\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm !== undefined && nextTerm.clean === 'of') {\n if (terms[i + 2] && maybeOrg(terms[i + 2])) {\n t.tagSafe('Organization', 'org-of-word-1', world);\n nextTerm.tagSafe('Organization', 'org-of-word-2', world);\n terms[i + 2].tagSafe('Organization', 'org-of-word-3', world);\n continue;\n }\n }\n }\n }\n};\n\nvar _05Organizations = tagOrgs;\n\nvar oneLetterAcronym = /^[A-Z]('s|,)?$/;\nvar periodSeperated = /([A-Z]\\.){2}[A-Z]?/i;\nvar oneLetterWord = {\n I: true,\n A: true\n};\n\nvar isAcronym = function isAcronym(term, world) {\n var str = term.reduced; // a known acronym like fbi\n\n if (term.tags.Acronym) {\n return true;\n } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) {\n // return false\n // }\n // known-words, like 'PIZZA' is not an acronym.\n\n\n if (world.words[str]) {\n return false;\n } // long capitalized words are not usually either\n\n\n if (str.length > 5) {\n return false;\n }\n\n return term.isAcronym();\n}; // F.B.I., NBC, - but not 'NO COLLUSION'\n\n\nvar checkAcronym = function checkAcronym(terms, world) {\n terms.forEach(function (term) {\n //these are not acronyms\n if (term.tags.RomanNumeral === true) {\n return;\n } //period-ones F.D.B.\n\n\n if (periodSeperated.test(term.text) === true) {\n term.tag('Acronym', 'period-acronym', world);\n } //non-period ones are harder\n\n\n if (term.isUpperCase() && isAcronym(term, world)) {\n term.tag('Acronym', 'acronym-step', world);\n term.tag('Noun', 'acronym-infer', world);\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n term.tag('Acronym', 'one-letter-acronym', world);\n term.tag('Noun', 'one-letter-infer', world);\n } //if it's a organization,\n\n\n if (term.tags.Organization && term.text.length <= 3) {\n term.tag('Acronym', 'acronym-org', world);\n }\n\n if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) {\n term.tag('Acronym', 'acronym-org-case', world);\n }\n });\n};\n\nvar _06Acronyms = checkAcronym;\n\nvar step = {\n neighbours: _01Neighbours,\n \"case\": _02Case,\n stem: _03Stem,\n plural: _04Plurals,\n organizations: _05Organizations,\n acronyms: _06Acronyms\n}; //\n\nvar fallbacks = function fallbacks(doc, terms) {\n var world = doc.world; // if it's empty, consult it's neighbours, first\n\n step.neighbours(terms, world); // is there a case-sensitive clue?\n\n step[\"case\"](doc); // check 'rewatch' as 'watch'\n\n step.stem(terms, world); // ... fallback to a noun!\n\n terms.forEach(function (t) {\n if (t.isKnown() === false) {\n t.tag('Noun', 'noun-fallback', doc.world);\n }\n }); // turn 'Foo University' into an Org\n\n step.organizations(terms, world); //turn 'FBD' into an acronym\n\n step.acronyms(terms, world); //are the nouns singular or plural?\n\n terms.forEach(function (t) {\n step.plural(t, doc.world);\n });\n return doc;\n};\n\nvar _02Fallbacks = fallbacks;\n\nvar hasNegative = /n't$/;\nvar irregulars$2 = {\n \"won't\": ['will', 'not'],\n wont: ['will', 'not'],\n \"can't\": ['can', 'not'],\n cant: ['can', 'not'],\n cannot: ['can', 'not'],\n \"shan't\": ['should', 'not'],\n dont: ['do', 'not'],\n dun: ['do', 'not'] // \"ain't\" is ambiguous for is/was\n\n}; // either 'is not' or 'are not'\n\nvar doAint = function doAint(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var before = terms.slice(0, index); //look for the preceding noun\n\n var noun = before.find(function (t) {\n return t.tags.Noun;\n });\n\n if (noun && noun.tags.Plural) {\n return ['are', 'not'];\n }\n\n return ['is', 'not'];\n};\n\nvar checkNegative = function checkNegative(term, phrase) {\n //check named-ones\n if (irregulars$2.hasOwnProperty(term.clean) === true) {\n return irregulars$2[term.clean];\n } //this word needs it's own logic:\n\n\n if (term.clean === \"ain't\" || term.clean === 'aint') {\n return doAint(term, phrase);\n } //try it normally\n\n\n if (hasNegative.test(term.clean) === true) {\n var main = term.clean.replace(hasNegative, '');\n return [main, 'not'];\n }\n\n return null;\n};\n\nvar _01Negative = checkNegative;\n\nvar contraction$1 = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous\n\nvar easy = {\n ll: 'will',\n ve: 'have',\n re: 'are',\n m: 'am',\n \"n't\": 'not'\n}; //\n\nvar checkApostrophe = function checkApostrophe(term) {\n var parts = term.text.match(contraction$1);\n\n if (parts === null) {\n return null;\n }\n\n if (easy.hasOwnProperty(parts[2])) {\n return [parts[1], easy[parts[2]]];\n }\n\n return null;\n};\n\nvar _02Simple = checkApostrophe;\n\nvar irregulars$1 = {\n wanna: ['want', 'to'],\n gonna: ['going', 'to'],\n im: ['i', 'am'],\n alot: ['a', 'lot'],\n ive: ['i', 'have'],\n imma: ['I', 'will'],\n \"where'd\": ['where', 'did'],\n whered: ['where', 'did'],\n \"when'd\": ['when', 'did'],\n whend: ['when', 'did'],\n // \"how'd\": ['how', 'did'], //'how would?'\n // \"what'd\": ['what', 'did'], //'what would?'\n howd: ['how', 'did'],\n whatd: ['what', 'did'],\n // \"let's\": ['let', 'us'], //too weird\n //multiple word contractions\n dunno: ['do', 'not', 'know'],\n brb: ['be', 'right', 'back'],\n gtg: ['got', 'to', 'go'],\n irl: ['in', 'real', 'life'],\n tbh: ['to', 'be', 'honest'],\n imo: ['in', 'my', 'opinion'],\n til: ['today', 'i', 'learned'],\n rn: ['right', 'now'],\n twas: ['it', 'was'],\n '@': ['at']\n}; //\n\nvar checkIrregulars = function checkIrregulars(term) {\n //check white-list\n if (irregulars$1.hasOwnProperty(term.clean)) {\n return irregulars$1[term.clean];\n }\n\n return null;\n};\n\nvar _03Irregulars = checkIrregulars;\n\nvar hasApostropheS = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]s$/i;\nvar banList = {\n that: true,\n there: true\n};\nvar hereThere = {\n here: true,\n there: true,\n everywhere: true\n};\n\nvar isPossessive = function isPossessive(term, pool) {\n // if we already know it\n if (term.tags.Possessive) {\n return true;\n } //a pronoun can't be possessive - \"he's house\"\n\n\n if (term.tags.Pronoun || term.tags.QuestionWord) {\n return false;\n }\n\n if (banList.hasOwnProperty(term.reduced)) {\n return false;\n } //if end of sentence, it is possessive - \"was spencer's\"\n\n\n var nextTerm = pool.get(term.next);\n\n if (!nextTerm) {\n return true;\n } //a gerund suggests 'is walking'\n\n\n if (nextTerm.tags.Verb) {\n //fix 'jamie's bite'\n if (nextTerm.tags.Infinitive) {\n return true;\n } //fix 'spencer's runs'\n\n\n if (nextTerm.tags.PresentTense) {\n return true;\n }\n\n return false;\n } //spencer's house\n\n\n if (nextTerm.tags.Noun) {\n // 'spencer's here'\n if (hereThere.hasOwnProperty(nextTerm.reduced) === true) {\n return false;\n }\n\n return true;\n } //rocket's red glare\n\n\n var twoTerm = pool.get(nextTerm.next);\n\n if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) {\n return true;\n } //othwerwise, an adjective suggests 'is good'\n\n\n if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) {\n return false;\n }\n\n return false;\n};\n\nvar isHas = function isHas(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 3); //look for a past-tense verb\n\n return after.find(function (t) {\n return t.tags.PastTense;\n });\n};\n\nvar checkPossessive = function checkPossessive(term, phrase, world) {\n //the rest of 's\n var found = term.text.match(hasApostropheS);\n\n if (found !== null) {\n //spencer's thing vs spencer-is\n if (isPossessive(term, phrase.pool) === true) {\n term.tag('#Possessive', 'isPossessive', world);\n return null;\n } //'spencer is'\n\n\n if (found !== null) {\n if (isHas(term, phrase)) {\n return [found[1], 'has'];\n }\n\n return [found[1], 'is'];\n }\n }\n\n return null;\n};\n\nvar _04Possessive = checkPossessive;\n\nvar hasPerfect = /[a-z\\u00C0-\\u00FF]'d$/;\nvar useDid = {\n how: true,\n what: true\n};\n/** split `i'd` into 'i had', or 'i would' */\n\nvar checkPerfect = function checkPerfect(term, phrase) {\n if (hasPerfect.test(term.clean)) {\n var root = term.clean.replace(/'d$/, ''); //look at the next few words\n\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked'\n\n for (var i = 0; i < after.length; i++) {\n var t = after[i];\n\n if (t.tags.Verb) {\n if (t.tags.PastTense) {\n return [root, 'had'];\n } //what'd you see\n\n\n if (useDid[root] === true) {\n return [root, 'did'];\n }\n\n return [root, 'would'];\n }\n } //otherwise, 'i'd walk'\n\n\n return [root, 'would'];\n }\n\n return null;\n};\n\nvar _05PerfectTense = checkPerfect;\n\nvar isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i;\nvar timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)[-–—]([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4'\n\nvar checkRange = function checkRange(term) {\n if (term.tags.PhoneNumber === true) {\n return null;\n }\n\n var parts = term.text.match(isRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[2]];\n } else {\n parts = term.text.match(timeRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[4]];\n }\n }\n\n return null;\n};\n\nvar _06Ranges = checkRange;\n\nvar contraction = /^(l|c|d|j|m|n|qu|s|t)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z\\u00C0-\\u00FF]+)$/i; // basic support for ungendered french contractions\n// not perfect, but better than nothing, to support matching on french text.\n\nvar french = {\n l: 'le',\n // l'amour\n c: 'ce',\n // c'est\n d: 'de',\n // d'amerique\n j: 'je',\n // j'aime\n m: 'me',\n // m'appelle\n n: 'ne',\n // n'est\n qu: 'que',\n // qu'il\n s: 'se',\n // s'appelle\n t: 'tu' // t'aime\n\n};\n\nvar checkFrench = function checkFrench(term) {\n var parts = term.text.match(contraction);\n\n if (parts === null || french.hasOwnProperty(parts[1]) === false) {\n return null;\n }\n\n var arr = [french[parts[1]], parts[2]];\n\n if (arr[0] && arr[1]) {\n return arr;\n }\n\n return null;\n};\n\nvar _07French = checkFrench;\n\nvar isNumber = /^[0-9]+$/;\nvar isOrdinal = /^[0-9]+(st|nd|rd|th)$/;\nvar isTime = /^[0-9:]+(am|pm)$/;\n\nvar createPhrase = function createPhrase(found, doc) {\n //create phrase from ['would', 'not']\n var phrase = _01Tokenizer(found.join(' '), doc.world, doc.pool())[0]; //tag it\n\n var terms = phrase.terms();\n _01Lexicon(terms, doc.world); //make these terms implicit\n\n terms.forEach(function (t) {\n t.implicit = t.text;\n t.text = '';\n t.clean = ''; // remove whitespace for implicit terms\n\n t.pre = '';\n t.post = ''; // tag number-ranges\n\n if (isNumber.test(t.implicit)) {\n t.tag('Cardinal', 'num-range', doc.world);\n } else if (isOrdinal.test(t.implicit)) {\n t.tag('Ordinal', 'ord-range', doc.world);\n } else if (isTime.test(t.implicit)) {\n t.tag('Time', 'time-range', doc.world);\n } else if (Object.keys(t.tags).length === 0) {\n t.tags.Noun = true; // if no tag, give it a noun\n }\n });\n return phrase;\n};\n\nvar contractions = function contractions(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i];\n var found = _01Negative(term, p);\n found = found || _02Simple(term);\n found = found || _03Irregulars(term);\n found = found || _04Possessive(term, p, world);\n found = found || _05PerfectTense(term, p);\n found = found || _06Ranges(term);\n found = found || _07French(term); //add them in\n\n if (found !== null) {\n var newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it\n\n if (p.has('#NumberRange') === true) {\n doc.buildFrom([newPhrase]).tag('NumberRange');\n } //set text as contraction\n\n\n var firstTerm = newPhrase.terms(0);\n firstTerm.text = term.text; //grab sub-phrase to remove\n\n var match = p.buildFrom(term.id, 1, doc.pool());\n match.replace(newPhrase, doc, true);\n }\n }\n });\n return doc;\n};\n\nvar _03Contractions = contractions;\n\nvar hasWord = function hasWord(doc, word) {\n var arr = doc._cache.words[word] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n};\n\nvar hasTag = function hasTag(doc, tag) {\n var arr = doc._cache.tags[tag] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n}; //mostly pos-corections here\n\n\nvar miscCorrection = function miscCorrection(doc) {\n // imperative-form\n var m = hasTag(doc, 'Infinitive');\n\n if (m.found) {\n // you eat?\n m = m.ifNo('@hasQuestionMark'); // i speak\n\n m = m.ifNo('(i|we|they)'); // shut the door!\n\n m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast\n\n m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go\n\n m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it\n\n m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it');\n } //exactly like\n\n\n m = hasWord(doc, 'like');\n m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange.\n\n m = hasTag(doc, 'Adjective');\n m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous)\n\n m = hasTag(doc, 'FirstName');\n m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train\n\n m = hasTag(doc, 'Value');\n m = m.match('#Value #PresentTense').ifNo('#Copula');\n\n if (m.found) {\n if (m.has('(one|1)') === true) {\n m.terms(1).tag('Singular', 'one-presentTense');\n } else {\n m.terms(1).tag('Plural', 'value-presentTense');\n }\n } // well i've been...\n\n\n doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second\n\n doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds\n\n doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking\n\n m = hasTag(doc, 'Gerund');\n m.match(\"(be|been) (#Adverb|not)+? #Gerund\").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse'\n\n doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives\n //'her match' vs 'let her match'\n\n m = hasTag(doc, 'Possessive');\n m = m.match('#Possessive [#Infinitive]', 0);\n\n if (!m.lookBehind('(let|made|make|force|ask)').found) {\n m.tag('Noun', 'her-match');\n }\n\n return doc;\n};\n\nvar fixMisc = miscCorrection;\n\nvar unique = function unique(arr) {\n var obj = {};\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = true;\n }\n\n return Object.keys(obj);\n};\n\nvar _unique = unique;\n\n// order matters\nvar list$5 = [// ==== Mutliple tags ====\n{\n match: 'too much',\n tag: 'Adverb Adjective',\n reason: 'bit-4'\n}, // u r cool\n{\n match: 'u r',\n tag: 'Pronoun Copula',\n reason: 'u r'\n}, //sometimes adverbs - 'pretty good','well above'\n{\n match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)',\n tag: '#Copula #Adverb #Adjective',\n reason: 'sometimes-adverb'\n}, //i better ..\n{\n match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense',\n group: 0,\n tag: 'Modal',\n reason: 'i-better'\n}, //walking is cool\n{\n match: '[#Gerund] #Adverb? not? #Copula',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-copula'\n}, //walking should be fun\n{\n match: '[#Gerund] #Modal',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-modal'\n}, //swear-words as non-expression POS\n{\n match: 'holy (shit|fuck|hell)',\n tag: 'Expression',\n reason: 'swears-expression'\n}, //Aircraft designer\n{\n match: '#Noun #Actor',\n tag: 'Actor',\n reason: 'thing-doer'\n}, {\n match: '#Conjunction [u]',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-2'\n}, //'u' as pronoun\n{\n match: '[u] #Verb',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-1'\n}, // ==== Determiners ====\n{\n match: '#Noun [(who|whom)]',\n group: 0,\n tag: 'Determiner',\n reason: 'captain-who'\n}, //that car goes\n// { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' },\n{\n match: 'a bit much',\n tag: 'Determiner Adverb Adjective',\n reason: 'bit-3'\n}, // ==== Propositions ====\n//all students\n{\n match: '#Verb #Adverb? #Noun [(that|which)]',\n group: 0,\n tag: 'Preposition',\n reason: 'that-prep'\n}, //work, which has been done.\n{\n match: '@hasComma [which] (#Pronoun|#Verb)',\n group: 0,\n tag: 'Preposition',\n reason: 'which-copula'\n}, {\n match: '#Copula just [like]',\n group: 0,\n tag: 'Preposition',\n reason: 'like-preposition'\n}, //folks like her\n{\n match: '#Noun [like] #Noun',\n group: 0,\n tag: 'Preposition',\n reason: 'noun-like'\n}, //fix for busted-up phrasalVerbs\n// { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' },\n// ==== Conditions ====\n// had he survived,\n{\n match: '[had] #Noun+ #PastTense',\n group: 0,\n tag: 'Condition',\n reason: 'had-he'\n}, // were he to survive\n{\n match: '[were] #Noun+ to #Infinitive',\n group: 0,\n tag: 'Condition',\n reason: 'were-he'\n}, // ==== Questions ====\n//the word 'how'\n{\n match: '^how',\n tag: 'QuestionWord',\n reason: 'how-question'\n}, {\n match: '[how] (#Determiner|#Copula|#Modal|#PastTense)',\n group: 0,\n tag: 'QuestionWord',\n reason: 'how-is'\n}, // //the word 'which'\n{\n match: '^which',\n tag: 'QuestionWord',\n reason: 'which-question'\n}, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' },\n// { match: 'which', tag: 'QuestionWord', reason: 'which-question3' },\n// ==== Conjunctions ====\n{\n match: '[so] #Noun',\n group: 0,\n tag: 'Conjunction',\n reason: 'so-conj'\n}, //how he is driving\n{\n match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)',\n group: 0,\n tag: 'Conjunction',\n reason: 'how-he-is-x'\n} // {\n// match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund',\n// group: 0,\n// tag: 'Conjunction',\n// reason: 'when-i-go-fishing',\n// },\n];\nvar _01Misc = list$5;\n\nvar _ambig = {\n // adverbs than can be adjectives\n adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'],\n // names that are dates\n personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'],\n // names that may be months\n personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'],\n // names that are adjectives\n personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'],\n // names that are verbs\n personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'],\n // names that are verbs\n personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'],\n // names that are nouns\n personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white']\n};\n\nvar dates = \"(\".concat(_ambig.personDate.join('|'), \")\");\nvar list$4 = [// ==== Holiday ====\n{\n match: '#Holiday (day|eve)',\n tag: 'Holiday',\n reason: 'holiday-day'\n}, // the captain who\n// ==== WeekDay ====\n// sun the 5th\n{\n match: '[sun] the #Ordinal',\n tag: 'WeekDay',\n reason: 'sun-the-5th'\n}, //sun feb 2\n{\n match: '[sun] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sun-feb'\n}, //1pm next sun\n{\n match: '#Date (on|this|next|last|during)? [sun]',\n group: 0,\n tag: 'WeekDay',\n reason: '1pm-sun'\n}, //this sat\n{\n match: \"(in|by|before|during|on|until|after|of|within|all) [sat]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'sat'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [wed]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'wed'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [march]\",\n group: 0,\n tag: 'Month',\n reason: 'march'\n}, //sat november\n{\n match: '[sat] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sat-feb'\n}, // ==== Month ====\n//all march\n{\n match: \"#Preposition [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'in-month'\n}, //this march\n{\n match: \"this [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"next [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"last [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, // march 5th\n{\n match: \"[(march|may)] the? #Value\",\n group: 0,\n tag: 'Month',\n reason: 'march-5th'\n}, // 5th of march\n{\n match: \"#Value of? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: '5th-of-march'\n}, // march and feb\n{\n match: \"[(march|may)] .? #Date\",\n group: 0,\n tag: 'Month',\n reason: 'march-and-feb'\n}, // feb to march\n{\n match: \"#Date .? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'feb-and-march'\n}, //quickly march\n{\n match: \"#Adverb [(march|may)]\",\n group: 0,\n tag: 'Verb',\n reason: 'quickly-march'\n}, //march quickly\n{\n match: \"[(march|may)] #Adverb\",\n group: 0,\n tag: 'Verb',\n reason: 'march-quickly'\n}, //5th of March\n{\n match: '#Value of #Month',\n tag: 'Date',\n reason: 'value-of-month'\n}, //5 March\n{\n match: '#Cardinal #Month',\n tag: 'Date',\n reason: 'cardinal-month'\n}, //march 5 to 7\n{\n match: '#Month #Value to #Value',\n tag: 'Date',\n reason: 'value-to-value'\n}, //march the 12th\n{\n match: '#Month the #Value',\n tag: 'Date',\n reason: 'month-the-value'\n}, //june 7\n{\n match: '(#WeekDay|#Month) #Value',\n tag: 'Date',\n reason: 'date-value'\n}, //7 june\n{\n match: '#Value (#WeekDay|#Month)',\n tag: 'Date',\n reason: 'value-date'\n}, //may twenty five\n{\n match: '(#TextValue && #Date) #TextValue',\n tag: 'Date',\n reason: 'textvalue-date'\n}, // in june\n{\n match: \"in [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"during [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"on [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"by [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'by-june'\n}, {\n match: \"after [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'after-june'\n}, {\n match: \"#Date [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, // june 1992\n{\n match: \"\".concat(dates, \" #Value\"),\n tag: 'Date',\n reason: 'june-5th'\n}, {\n match: \"\".concat(dates, \" #Date\"),\n tag: 'Date',\n reason: 'june-5th'\n}, // June Smith\n{\n match: \"\".concat(dates, \" #ProperNoun\"),\n tag: 'Person',\n reason: 'june-smith',\n safe: true\n}, // june m. Cooper\n{\n match: \"\".concat(dates, \" #Acronym? (#ProperNoun && !#Month)\"),\n tag: 'Person',\n reason: 'june-smith-jr'\n}, // 'second'\n{\n match: \"#Cardinal [second]\",\n tag: 'Unit',\n reason: 'one-second'\n}, // second quarter\n// { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' },\n// 'aug 20-21'\n{\n match: \"#Month #NumberRange\",\n tag: 'Date',\n reason: 'aug 20-21'\n}, // timezones\n// china standard time\n{\n match: \"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",\n tag: 'Timezone',\n reason: 'std-time'\n}, // eastern time\n{\n match: \"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",\n tag: 'Timezone',\n reason: 'eastern-time'\n}, // 5pm central\n{\n match: \"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",\n group: 0,\n tag: 'Timezone',\n reason: '5pm-central'\n}, // central european time\n{\n match: \"(central|western|eastern) european time\",\n tag: 'Timezone',\n reason: 'cet'\n}];\nvar _02Dates = list$4;\n\nvar adjectives$1 = \"(\".concat(_ambig.personAdjective.join('|'), \")\");\nvar list$3 = [// all fell apart\n{\n match: '[all] #Determiner? #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'all-noun'\n}, // very rusty\n{\n match: \"#Adverb [\".concat(adjectives$1, \"]\"),\n group: 0,\n tag: 'Adjective',\n reason: 'really-rich'\n}, // rusty smith\n{\n match: \"\".concat(adjectives$1, \" #Person\"),\n tag: 'Person',\n reason: 'randy-smith'\n}, // rusty a. smith\n{\n match: \"\".concat(adjectives$1, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'rusty-smith'\n}, //sometimes not-adverbs\n{\n match: '#Copula [(just|alone)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'not-adverb'\n}, //jack is guarded\n{\n match: '#Singular is #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'is-filled'\n}, // smoked poutine is\n{\n match: '[#PastTense] #Singular is',\n group: 0,\n tag: 'Adjective',\n reason: 'smoked-poutine'\n}, // baked onions are\n{\n match: '[#PastTense] #Plural are',\n group: 0,\n tag: 'Adjective',\n reason: 'baked-onions'\n}, // well made\n{\n match: 'well [#PastTense]',\n group: 0,\n tag: 'Adjective',\n reason: 'well-made'\n}, // is f*ed up\n{\n match: '#Copula [fucked up?]',\n tag: 'Adjective',\n reason: 'swears-adjective'\n}, //jack seems guarded\n{\n match: '#Singular (seems|appears) #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'seems-filled'\n}, // Gerund-Adjectives - 'amusing, annoying'\n//a staggering cost\n{\n match: '(a|an) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a|an'\n}, //as amusing as\n{\n match: 'as [#Gerund] as',\n group: 0,\n tag: 'Adjective',\n reason: 'as-gerund-as'\n}, // more amusing than\n{\n match: 'more [#Gerund] than',\n group: 0,\n tag: 'Adjective',\n reason: 'more-gerund-than'\n}, // very amusing\n{\n match: '(so|very|extremely) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'so-gerund'\n}, // it was amusing\n{\n match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'it-was-gerund'\n}, // found it amusing\n{\n match: '(found|found) it #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'found-it-gerund'\n}, // a bit amusing\n{\n match: 'a (little|bit|wee) bit? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-bit-gerund'\n}, // jury is out - preposition ➔ adjective\n{\n match: '#Copula #Adjective? [(out|in|through)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'still-out'\n}, // shut the door\n{\n match: '^[#Adjective] (the|your) #Noun',\n group: 0,\n tag: 'Infinitive',\n reason: 'shut-the'\n}];\nvar _03Adjective = list$3;\n\nvar _04Noun = [// ==== Plural ====\n//there are reasons\n{\n match: 'there (are|were) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Plural',\n reason: 'there-are'\n}, // ==== Singular ====\n//the sun\n{\n match: '#Determiner [sun]',\n group: 0,\n tag: 'Singular',\n reason: 'the-sun'\n}, //did a 900, paid a 20\n{\n match: '#Verb (a|an) [#Value]',\n group: 0,\n tag: 'Singular',\n reason: 'did-a-value'\n}, //'the can'\n{\n match: 'the [(can|will|may)]',\n group: 0,\n tag: 'Singular',\n reason: 'the can'\n}, // ==== Possessive ====\n//spencer kelly's\n{\n match: '#FirstName #Acronym? (#Possessive && #LastName)',\n tag: 'Possessive',\n reason: 'name-poss'\n}, //Super Corp's fundraiser\n{\n match: '#Organization+ #Possessive',\n tag: 'Possessive',\n reason: 'org-possessive'\n}, //Los Angeles's fundraiser\n{\n match: '#Place+ #Possessive',\n tag: 'Possessive',\n reason: 'place-possessive'\n}, // assign all tasks\n{\n match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'all-presentTense'\n}, //the above is clear\n{\n match: '#Determiner [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-is'\n}, //real evil is\n{\n match: '#Adjective [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'adj-adj-is'\n}, // PresentTense/Noun ambiguities\n// big dreams, critical thinking\n// have big dreams\n{\n match: '(had|have|#PastTense) #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adj-presentTense'\n}, // excellent answer spencer\n{\n match: '^#Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'start adj-presentTense'\n}, // one big reason\n{\n match: '#Value #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'one-big-reason'\n}, // won widespread support\n{\n match: '#PastTense #Adjective+ [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'won-wide-support'\n}, // many poses\n{\n match: '(many|few|several|couple) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'many-poses'\n}, // very big dreams\n{\n match: '#Adverb #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'very-big-dream'\n}, // good wait staff\n{\n match: '#Adjective [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'good-wait-staff'\n}, // adorable little store\n{\n match: '#Adjective #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adorable-little-store'\n}, // of basic training\n{\n match: '#Preposition #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'of-basic-training'\n}, // early warning\n{\n match: '#Adjective [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'early-warning'\n}, // justifiying higher costs\n{\n match: '#Gerund #Adverb? #Comparative [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'higher-costs'\n}, // do the dance\n{\n match: '#Infinitive (this|that|the) [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'do-this-dance'\n}, //his fine\n{\n match: '(his|her|its) [#Adjective]',\n group: 0,\n tag: 'Noun',\n reason: 'his-fine'\n}, //some pressing issues\n{\n match: 'some [#Verb] #Plural',\n group: 0,\n tag: 'Noun',\n reason: 'determiner6'\n}, //'more' is not always an adverb\n{\n match: 'more #Noun',\n tag: 'Noun',\n reason: 'more-noun'\n}, {\n match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-list'\n}, //3 feet\n{\n match: '(right|rights) of .',\n tag: 'Noun',\n reason: 'right-of'\n}, // a bit\n{\n match: 'a [bit]',\n group: 0,\n tag: 'Noun',\n reason: 'bit-2'\n}, // my first thought\n{\n match: '#Possessive #Ordinal [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'first-thought'\n}, //running-a-show\n{\n match: '#Gerund #Determiner [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-a-show'\n}, //the-only-reason\n{\n match: '#Determiner #Adverb [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'the-reason'\n}, //the nice swim\n{\n match: '(the|this|those|these) #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-verb'\n}, // the truly nice swim\n{\n match: '(the|this|those|these) #Adverb #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'determiner4'\n}, //the orange is\n{\n match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-2'\n}, // a stream runs\n{\n match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb',\n group: 0,\n tag: 'Noun',\n reason: 'determiner5'\n}, //the test string\n{\n match: '#Determiner [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'determiner7'\n}, //a nice deal\n{\n match: '#Determiner #Adjective #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'a-nice-inf'\n}, //the wait to vote\n{\n match: 'the [#Verb] #Preposition .',\n group: 0,\n tag: 'Noun',\n reason: 'determiner1'\n}, //a sense of\n{\n match: '#Determiner [#Verb] of',\n group: 0,\n tag: 'Noun',\n reason: 'the-verb-of'\n}, //next career move\n{\n match: '#Adjective #Noun+ [#Infinitive] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'career-move'\n}, //the threat of force\n{\n match: '#Determiner #Noun of [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-of-noun'\n}, //the western line\n{\n match: '#Determiner [(western|eastern|northern|southern|central)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'western-line'\n}, //her polling\n{\n match: '#Possessive [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'her-polling'\n}, //her fines\n{\n match: '(his|her|its) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'its-polling'\n}, //linear algebra\n{\n match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'technical-noun'\n}, // a blown motor\n{\n match: '(the|those|these|a|an) [#Participle] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'blown-motor'\n}, // walk the walk\n{\n match: '(the|those|these|a|an) #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'det-inf'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-pres'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-past'\n}, // this swimming\n{\n match: '(this|that) [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'this-gerund'\n}, // at some point\n{\n match: 'at some [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'at-some-inf'\n}, //air-flow\n{\n match: '(#Noun && @hasHyphen) #Verb',\n tag: 'Noun',\n reason: 'hyphen-verb'\n}, //is no walk\n{\n match: 'is no [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'is-no-verb'\n}, //different views than\n{\n match: '[#Verb] than',\n group: 0,\n tag: 'Noun',\n reason: 'correction'\n}, // goes to sleep\n{\n match: '(go|goes|went) to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'goes-to-verb'\n}, //a close watch on\n{\n match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf'\n}, //a tv show\n{\n match: '(a|an) #Noun [#Infinitive]$',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf2'\n}, //do so\n{\n match: 'do [so]',\n group: 0,\n tag: 'Noun',\n reason: 'so-noun'\n}, //is mark hughes\n{\n match: '#Copula [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'is-pres-noun'\n}, //a close\n{\n match: '#Determiner #Adverb? [close]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-close'\n}, // what the hell\n{\n match: '#Determiner [(shit|damn|hell)]',\n group: 0,\n tag: 'Noun',\n reason: 'swears-noun'\n}, // the staff were\n{\n match: '(the|these) [#Singular] (were|are)',\n group: 0,\n tag: 'Plural',\n reason: 'singular-were'\n}, // running for congress\n{\n match: '#Gerund #Adjective? for [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-for'\n}, // running to work\n{\n match: '#Gerund #Adjective to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-to'\n}, // any questions for\n{\n match: '(many|any|some|several) [#PresentTense] for',\n group: 0,\n tag: 'Noun',\n reason: 'any-verbs-for'\n}, // have fun\n{\n match: \"(have|had) [#Adjective] #Preposition .\",\n group: 0,\n tag: 'Noun',\n reason: 'have-fun'\n}, // co-founder\n{\n match: \"co #Noun\",\n tag: 'Actor',\n reason: 'co-noun'\n}];\n\nvar adjectives = \"(\".concat(_ambig.adverbAdjective.join('|'), \")\");\nvar _05Adverb = [//still good\n{\n match: '[still] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'still-advb'\n}, //still make\n{\n match: '[still] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'still-verb'\n}, // so hot\n{\n match: '[so] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'so-adv'\n}, // way hotter\n{\n match: '[way] #Comparative',\n group: 0,\n tag: 'Adverb',\n reason: 'way-adj'\n}, // way too hot\n{\n match: '[way] #Adverb #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'way-too-adj'\n}, // all singing\n{\n match: '[all] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'all-verb'\n}, // sing like an angel\n{\n match: '(#Verb && !#Modal) [like]',\n group: 0,\n tag: 'Adverb',\n reason: 'verb-like'\n}, //barely even walk\n{\n match: '(barely|hardly) even',\n tag: 'Adverb',\n reason: 'barely-even'\n}, //even held\n{\n match: '[even] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'even-walk'\n}, // even left\n{\n match: 'even left',\n tag: '#Adverb #Verb',\n reason: 'even-left'\n}, //cheering hard - dropped -ly's\n{\n match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]',\n group: 0,\n tag: 'Adverb',\n reason: 'lazy-ly'\n}, // much appreciated\n{\n match: '[much] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'bit-1'\n}, // is well\n{\n match: '#Copula [#Adverb]$',\n group: 0,\n tag: 'Adjective',\n reason: 'is-well'\n}, // a bit cold\n{\n match: 'a [(little|bit|wee) bit?] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'a-bit-cold'\n}, // dark green\n{\n match: \"[\".concat(adjectives, \"] #Adjective\"),\n group: 0,\n tag: 'Adverb',\n reason: 'dark-green'\n}, // kinda sparkly\n{\n match: \"#Adverb [#Adverb]$\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly'\n}, {\n match: \"#Adverb [#Adverb] (and|or|then)\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly-and'\n}];\n\nvar _06Value = [// ==== PhoneNumber ====\n//1 800 ...\n{\n match: '1 #Value #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '1-800-Value'\n}, //(454) 232-9873\n{\n match: '#NumericValue #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '(800) PhoneNumber'\n}, // ==== Currency ====\n// chinese yuan\n{\n match: '#Demonym #Currency',\n tag: 'Currency',\n reason: 'demonym-currency'\n}, // ==== Ordinal ====\n{\n match: '[second] #Noun',\n group: 0,\n tag: 'Ordinal',\n reason: 'second-noun'\n}, // ==== Unit ====\n//5 yan\n{\n match: '#Value+ [#Currency]',\n group: 0,\n tag: 'Unit',\n reason: '5-yan'\n}, {\n match: '#Value [(foot|feet)]',\n group: 0,\n tag: 'Unit',\n reason: 'foot-unit'\n}, //minus 7\n{\n match: '(minus|negative) #Value',\n tag: 'Value',\n reason: 'minus-value'\n}, //5 kg.\n{\n match: '#Value [#Abbreviation]',\n group: 0,\n tag: 'Unit',\n reason: 'value-abbr'\n}, {\n match: '#Value [k]',\n group: 0,\n tag: 'Unit',\n reason: 'value-k'\n}, {\n match: '#Unit an hour',\n tag: 'Unit',\n reason: 'unit-an-hour'\n}, //seven point five\n{\n match: '#Value (point|decimal) #Value',\n tag: 'Value',\n reason: 'value-point-value'\n}, // ten bucks\n{\n match: '(#Value|a) [(buck|bucks|grand)]',\n group: 0,\n tag: 'Currency',\n reason: 'value-bucks'\n}, //quarter million\n{\n match: '#Determiner [(half|quarter)] #Ordinal',\n group: 0,\n tag: 'Value',\n reason: 'half-ordinal'\n}, {\n match: 'a #Value',\n tag: 'Value',\n reason: 'a-value'\n}, // ==== Money ====\n{\n match: '[#Value+] #Currency',\n group: 0,\n tag: 'Money',\n reason: '15 usd'\n}, // thousand and two\n{\n match: \"(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value\",\n tag: 'Value',\n reason: 'magnitude-and-value'\n}, //'a/an' can mean 1 - \"a hour\"\n{\n match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)',\n group: 0,\n tag: 'Value',\n reason: 'a-is-one'\n}];\n\nvar verbs = \"(\".concat(_ambig.personVerb.join('|'), \")\");\nvar list$2 = [// adj -> gerund\n// amusing his aunt\n{\n match: '[#Adjective] #Possessive #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'gerund-his-noun'\n}, // loving you\n{\n match: '[#Adjective] (us|you)',\n group: 0,\n tag: 'Gerund',\n reason: 'loving-you'\n}, // slowly stunning\n{\n match: '(slowly|quickly) [#Adjective]',\n group: 0,\n tag: 'Gerund',\n reason: 'slowly-adj'\n}, // like\n{\n match: '(#Modal|i|they|we|do) not? [like]',\n group: 0,\n tag: 'PresentTense',\n reason: 'modal-like'\n}, // do not simply like\n{\n match: 'do (simply|just|really|not)+ [(#Adjective|like)]',\n group: 0,\n tag: 'Verb',\n reason: 'do-simply-like'\n}, // does mean\n{\n match: 'does (#Adverb|not)? [#Adjective]',\n group: 0,\n tag: 'PresentTense',\n reason: 'does-mean'\n}, // i mean\n{\n match: 'i (#Adverb|do)? not? [mean]',\n group: 0,\n tag: 'PresentTense',\n reason: 'i-mean'\n}, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' },\n// ==== Tense ====\n//he left\n{\n match: '#Noun #Adverb? [left]',\n group: 0,\n tag: 'PastTense',\n reason: 'left-verb'\n}, //this rocks\n{\n match: '(this|that) [#Plural]',\n group: 0,\n tag: 'PresentTense',\n reason: 'this-verbs'\n}, // ==== Auxiliary ====\n//was walking\n{\n match: \"[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'copula-walking'\n}, //support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, //would walk\n{\n match: \"[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'modal-verb'\n}, //would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //would be walking\n// { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' },\n//had been walking\n// {\n// match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`,\n// group: 0,\n// tag: 'Auxiliary',\n// reason: 'had-been',\n// },\n//support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, // will walk\n{\n match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb',\n group: 0,\n tag: 'Auxiliary',\n reason: 'have-had'\n}, // about to go\n{\n match: '[about to] #Adverb? #Verb',\n group: 0,\n tag: ['Auxiliary', 'Verb'],\n reason: 'about-to'\n}, //would be walking\n{\n match: \"#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-be'\n}, //were being run\n{\n match: \"(were|was) being [#PresentTense]\",\n group: 0,\n tag: 'PastTense',\n reason: 'was-being'\n}, //have run\n// { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' },\n//would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //had been walking\n{\n match: \"(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-been'\n}, // was being driven\n{\n match: '[(be|being|been)] #Participle',\n group: 0,\n tag: 'Auxiliary',\n reason: 'being-foo'\n}, // ==== Phrasal ====\n//'foo-up'\n{\n match: '(#Verb && @hasHyphen) up',\n tag: 'PhrasalVerb',\n reason: 'foo-up'\n}, {\n match: '(#Verb && @hasHyphen) off',\n tag: 'PhrasalVerb',\n reason: 'foo-off'\n}, {\n match: '(#Verb && @hasHyphen) over',\n tag: 'PhrasalVerb',\n reason: 'foo-over'\n}, {\n match: '(#Verb && @hasHyphen) out',\n tag: 'PhrasalVerb',\n reason: 'foo-out'\n}, //fall over\n{\n match: '#PhrasalVerb [#PhrasalVerb]',\n group: 0,\n tag: 'Particle',\n reason: 'phrasal-particle'\n}, //back it up\n{\n match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]',\n group: 0,\n tag: 'Adverb',\n reason: 'phrasal-pronoun-advb'\n}, // ==== Copula ====\n//will be running (not copula)\n{\n match: '[will #Adverb? not? #Adverb? be] #Gerund',\n group: 0,\n tag: 'Copula',\n reason: 'will-be-copula'\n}, //for more complex forms, just tag 'be'\n{\n match: 'will #Adverb? not? #Adverb? [be] #Adjective',\n group: 0,\n tag: 'Copula',\n reason: 'be-copula'\n}, // ==== Infinitive ====\n//march to\n{\n match: '[march] (up|down|back|to|toward)',\n group: 0,\n tag: 'Infinitive',\n reason: 'march-to'\n}, //must march\n{\n match: '#Modal [march]',\n group: 0,\n tag: 'Infinitive',\n reason: 'must-march'\n}, //let him glue\n{\n match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)',\n group: 0,\n tag: 'Infinitive',\n reason: 'let-him-glue'\n}, //he quickly foo\n// { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' },\n//will secure our\n{\n match: 'will [#Adjective]',\n group: 0,\n tag: 'Verb',\n reason: 'will-adj'\n}, //he disguised the thing\n{\n match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'he-adj-the'\n}, //is eager to go\n{\n match: '#Copula [#Adjective to] #Verb',\n group: 0,\n tag: 'Verb',\n reason: 'adj-to'\n}, // open the door\n{\n match: '[open] #Determiner',\n group: 0,\n tag: 'Infinitive',\n reason: 'open-the'\n}, // compromises are possible\n{\n match: '[#PresentTense] (are|were|was) #Adjective',\n group: 0,\n tag: 'Plural',\n reason: 'compromises-are-possible'\n}, // would wade\n{\n match: \"#Modal [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'would-mark'\n}, {\n match: \"#Adverb [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'really-mark'\n}, //to mark\n{\n match: '(to|#Modal) [mark]',\n group: 0,\n tag: 'PresentTense',\n reason: 'to-mark'\n}, // wade smith\n{\n match: \"\".concat(verbs, \" #Person\"),\n tag: 'Person',\n reason: 'rob-smith'\n}, // wade m. Cooper\n{\n match: \"\".concat(verbs, \" #Acronym #ProperNoun\"),\n tag: 'Person',\n reason: 'rob-a-smith'\n}, // damn them\n{\n match: '[shit] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear1-verb'\n}, {\n match: '[damn] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear2-verb'\n}, {\n match: '[fuck] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear3-verb'\n}];\nvar _07Verbs = list$2;\n\nvar list$1 = [// ==== Region ====\n//West Norforlk\n{\n match: '(west|north|south|east|western|northern|southern|eastern)+ #Place',\n tag: 'Region',\n reason: 'west-norfolk'\n}, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n{\n match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]',\n group: 0,\n tag: 'Region',\n reason: 'us-state'\n}, // portland oregon\n{\n match: 'portland [or]',\n group: 0,\n tag: 'Region',\n reason: 'portland-or'\n}, //Foo District\n{\n match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)',\n tag: 'Region',\n reason: 'foo-district'\n}, //District of Foo\n{\n match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun',\n tag: 'Region',\n reason: 'district-of-Foo'\n}, // in Foo California\n{\n match: 'in [#ProperNoun] #Place',\n group: 0,\n tag: 'Place',\n reason: 'propernoun-place'\n}, // ==== Address ====\n{\n match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)',\n tag: 'Address',\n reason: 'address-st'\n} // in houston\n// { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' },\n// { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' },\n// { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' },\n// { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' },\n// { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' },\n// { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' },\n// // houston texas\n// { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' },\n];\nvar _08Place = list$1;\n\nvar _09Org = [//John & Joe's\n{\n match: '#Noun (&|n) #Noun',\n tag: 'Organization',\n reason: 'Noun-&-Noun'\n}, // teachers union of Ontario\n{\n match: '#Organization of the? #ProperNoun',\n tag: 'Organization',\n reason: 'org-of-place',\n safe: true\n}, //walmart USA\n{\n match: '#Organization #Country',\n tag: 'Organization',\n reason: 'org-country'\n}, //organization\n{\n match: '#ProperNoun #Organization',\n tag: 'Organization',\n reason: 'titlecase-org'\n}, //FitBit Inc\n{\n match: '#ProperNoun (ltd|co|inc|dept|assn|bros)',\n tag: 'Organization',\n reason: 'org-abbrv'\n}, // the OCED\n{\n match: 'the [#Acronym]',\n group: 0,\n tag: 'Organization',\n reason: 'the-acronym',\n safe: true\n}, // global trade union\n{\n match: '(world|global|international|national|#Demonym) #Organization',\n tag: 'Organization',\n reason: 'global-org'\n}, // schools\n{\n match: '#Noun+ (public|private) school',\n tag: 'School',\n reason: 'noun-public-school'\n}];\n\nvar nouns = \"(\".concat(_ambig.personNoun.join('|'), \")\");\nvar months = \"(\".concat(_ambig.personMonth.join('|'), \")\");\nvar places = \"(\".concat(_ambig.personPlace.join('|'), \")\");\nvar list = [// ==== Honorific ====\n{\n match: '[(1st|2nd|first|second)] #Honorific',\n group: 0,\n tag: 'Honorific',\n reason: 'ordinal-honorific'\n}, {\n match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person',\n group: 0,\n tag: 'Honorific',\n reason: 'ambg-honorifics'\n}, // ==== FirstNames ====\n//is foo Smith\n{\n match: '#Copula [(#Noun|#PresentTense)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'copula-noun-lastname'\n}, //pope francis\n{\n match: '(lady|queen|sister) #ProperNoun',\n tag: 'FemaleName',\n reason: 'lady-titlecase',\n safe: true\n}, {\n match: '(king|pope|father) #ProperNoun',\n tag: 'MaleName',\n reason: 'pope-titlecase',\n safe: true\n}, //ambiguous-but-common firstnames\n{\n match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'maybe-lastname'\n}, // ==== Nickname ====\n// Dwayne 'the rock' Johnson\n{\n match: '#FirstName [#Determiner #Noun] #LastName',\n group: 0,\n tag: 'NickName',\n reason: 'first-noun-last'\n}, //my buddy\n{\n match: '#Possessive [#FirstName]',\n group: 0,\n tag: 'Person',\n reason: 'possessive-name'\n}, {\n match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun',\n tag: 'Person',\n reason: 'titlecase-acronym-titlecase',\n safe: true\n}, //ludwig van beethovan\n{\n match: '#Acronym #LastName',\n tag: 'Person',\n reason: 'acronym-latname',\n safe: true\n}, //jk rowling\n{\n match: '#Person (jr|sr|md)',\n tag: 'Person',\n reason: 'person-honorific'\n}, //peter II\n{\n match: '#Person #Person the? #RomanNumeral',\n tag: 'Person',\n reason: 'roman-numeral'\n}, //'Professor Fink', 'General McCarthy'\n{\n match: '#FirstName [/^[^aiurck]$/]',\n group: 0,\n tag: ['Acronym', 'Person'],\n reason: 'john-e'\n}, //Doctor john smith jr\n//general pearson\n{\n match: '#Honorific #Person',\n tag: 'Person',\n reason: 'honorific-person'\n}, //remove single 'mr'\n{\n match: '#Honorific #Acronym',\n tag: 'Person',\n reason: 'Honorific-TitleCase'\n}, //j.k Rowling\n{\n match: '#Noun van der? #Noun',\n tag: 'Person',\n reason: 'van der noun',\n safe: true\n}, //king of spain\n{\n match: '(king|queen|prince|saint|lady) of #Noun',\n tag: 'Person',\n reason: 'king-of-noun',\n safe: true\n}, //lady Florence\n{\n match: '(prince|lady) #Place',\n tag: 'Person',\n reason: 'lady-place'\n}, //saint Foo\n{\n match: '(king|queen|prince|saint) #ProperNoun',\n tag: 'Person',\n reason: 'saint-foo'\n}, //Foo U Ford\n{\n match: '[#ProperNoun] #Person',\n group: 0,\n tag: 'Person',\n reason: 'proper-person',\n safe: true\n}, // al sharpton\n{\n match: 'al (#Person|#ProperNoun)',\n tag: 'Person',\n reason: 'al-borlen',\n safe: true\n}, //ferdinand de almar\n{\n match: '#FirstName de #Noun',\n tag: 'Person',\n reason: 'bill-de-noun'\n}, //Osama bin Laden\n{\n match: '#FirstName (bin|al) #Noun',\n tag: 'Person',\n reason: 'bill-al-noun'\n}, //John L. Foo\n{\n match: '#FirstName #Acronym #ProperNoun',\n tag: 'Person',\n reason: 'bill-acronym-title'\n}, //Andrew Lloyd Webber\n{\n match: '#FirstName #FirstName #ProperNoun',\n tag: 'Person',\n reason: 'bill-firstname-title'\n}, //Mr Foo\n{\n match: '#Honorific #FirstName? #ProperNoun',\n tag: 'Person',\n reason: 'dr-john-Title'\n}, //peter the great\n{\n match: '#FirstName the #Adjective',\n tag: 'Person',\n reason: 'name-the-great'\n}, //very common-but-ambiguous lastnames\n{\n match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)',\n tag: 'Person',\n reason: 'bill-green'\n}, // faith smith\n{\n match: \"\".concat(nouns, \" #Person\"),\n tag: 'Person',\n reason: 'ray-smith',\n safe: true\n}, // faith m. Smith\n{\n match: \"\".concat(nouns, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'ray-a-smith',\n safe: true\n}, //give to april\n{\n match: \"#Infinitive #Determiner? #Adjective? #Noun? (to|for) [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-person'\n}, // remind june\n{\n match: \"#Infinitive [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'infinitive-person'\n}, // may waits for\n// { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' },\n// may waits to\n// { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' },\n// april will\n{\n match: \"[\".concat(months, \"] #Modal\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-modal'\n}, // may be\n{\n match: \"[may] be\",\n group: 0,\n tag: 'Verb',\n reason: 'may-be'\n}, // would april\n{\n match: \"#Modal [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'modal-ambig'\n}, // it is may\n{\n match: \"#Copula [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'is-may'\n}, // may is\n{\n match: \"[\".concat(months, \"] #Copula\"),\n group: 0,\n tag: 'Person',\n reason: 'may-is'\n}, // with april\n{\n match: \"that [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'that-month'\n}, // with april\n{\n match: \"with [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'with-month'\n}, // for april\n{\n match: \"for [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'for-month'\n}, // this april\n{\n match: \"this [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'this-may'\n}, //maybe not 'this'\n// next april\n{\n match: \"next [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'next-may'\n}, // last april\n{\n match: \"last [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'last-may'\n}, // wednesday april\n{\n match: \"#Date [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'date-may'\n}, // may 5th\n{\n match: \"[\".concat(months, \"] the? #Value\"),\n group: 0,\n tag: 'Month',\n reason: 'may-5th'\n}, // 5th of may\n{\n match: \"#Value of [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: '5th-of-may'\n}, // dick van dyke\n{\n match: '#ProperNoun (van|al|bin) #ProperNoun',\n tag: 'Person',\n reason: 'title-van-title',\n safe: true\n}, //jose de Sucre\n{\n match: '#ProperNoun (de|du) la? #ProperNoun',\n tag: 'Person',\n reason: 'title-de-title',\n safe: true\n}, //Jani K. Smith\n{\n match: '#Singular #Acronym #LastName',\n tag: '#Person',\n reason: 'title-acro-noun',\n safe: true\n}, //John Foo\n{\n match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?',\n tag: 'Person',\n reason: 'firstname-titlecase'\n}, //Joe K. Sombrero\n{\n match: '#FirstName #Acronym #Noun',\n tag: 'Person',\n reason: 'n-acro-noun',\n safe: true\n}, //Anthony de Marco\n{\n match: '#FirstName [(de|di|du|van|von) #Person]',\n group: 0,\n tag: 'LastName',\n reason: 'de-firstname'\n}, // Paris Berelc\n{\n match: \"[\".concat(places, \"] (#ProperNoun && !#Place)\"),\n group: 0,\n tag: 'FirstName',\n reason: 'place-firstname'\n}];\nvar _10People = list;\n\nvar matches = [];\nmatches = matches.concat(_01Misc);\nmatches = matches.concat(_02Dates);\nmatches = matches.concat(_03Adjective);\nmatches = matches.concat(_04Noun);\nmatches = matches.concat(_05Adverb);\nmatches = matches.concat(_06Value);\nmatches = matches.concat(_07Verbs);\nmatches = matches.concat(_08Place);\nmatches = matches.concat(_09Org);\nmatches = matches.concat(_10People); // cache the easier conditions up-front\n\nvar cacheRequired = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: _unique(needTags),\n words: _unique(needWords)\n };\n}; // for speed, enumerate (a|b|c) to three matches\n\n\nvar allLists = function allLists(m) {\n var more = [];\n var lists = m.reg.filter(function (r) {\n return r.fastOr !== undefined;\n });\n\n if (lists.length === 1) {\n var i = m.reg.findIndex(function (r) {\n return r.fastOr !== undefined;\n });\n Object.keys(m.reg[i].fastOr).forEach(function (w) {\n var newM = Object.assign({}, m);\n newM.reg = newM.reg.slice(0);\n newM.reg[i] = Object.assign({}, newM.reg[i]);\n newM.reg[i].word = w;\n delete newM.reg[i].operator;\n delete newM.reg[i].fastOr; // newM.reason += '-' + w\n\n more.push(newM);\n });\n }\n\n return more;\n}; // parse them\n\n\nvar all = [];\nmatches.forEach(function (m) {\n m.reg = matchSyntax(m.match);\n var enumerated = allLists(m);\n\n if (enumerated.length > 0) {\n all = all.concat(enumerated);\n } else {\n all.push(m); // console.log(m)\n }\n});\nall.forEach(function (m) {\n m.required = cacheRequired(m.reg);\n return m;\n}); // console.log(all.length)\n// console.log(all[all.length - 1])\n\nvar matches_1 = all;\n\nvar hasEvery = function hasEvery(chances) {\n if (chances.length === 0) {\n return [];\n }\n\n var obj = {};\n chances.forEach(function (arr) {\n arr = _unique(arr);\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = obj[arr[i]] || 0;\n obj[arr[i]] += 1;\n }\n });\n var res = Object.keys(obj);\n res = res.filter(function (k) {\n return obj[k] === chances.length;\n });\n res = res.map(function (num) {\n return Number(num);\n });\n return res;\n};\n\nvar runner = function runner(doc) {\n //find phrases to try for each match\n matches_1.forEach(function (m) {\n var allChances = [];\n m.required.words.forEach(function (w) {\n allChances.push(doc._cache.words[w] || []);\n });\n m.required.tags.forEach(function (tag) {\n allChances.push(doc._cache.tags[tag] || []);\n });\n var worthIt = hasEvery(allChances);\n\n if (worthIt.length === 0) {\n return;\n }\n\n var phrases = worthIt.map(function (index) {\n return doc.list[index];\n });\n var tryDoc = doc.buildFrom(phrases); // phrases getting tagged\n\n var match = tryDoc.match(m.reg, m.group);\n\n if (match.found) {\n if (m.safe === true) {\n match.tagSafe(m.tag, m.reason);\n } else {\n match.tag(m.tag, m.reason);\n }\n }\n });\n};\n\nvar runner_1 = runner; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []]))\n\n// misc: 40ms\n//sequence of match-tag statements to correct mis-tags\n\nvar corrections = function corrections(doc) {\n runner_1(doc);\n fixMisc(doc);\n return doc;\n};\n\nvar _04Correction = corrections;\n\n/** POS-tag all terms in this document */\n\nvar tagger = function tagger(doc) {\n var terms = doc.termList(); // check against any known-words\n\n doc = _01Init(doc, terms); // everything has gotta be something. ¯\\_(:/)_/¯\n\n doc = _02Fallbacks(doc, terms); // support \"didn't\" & \"spencer's\"\n\n doc = _03Contractions(doc); //set our cache, to speed things up\n\n doc.cache(); // wiggle-around the results, so they make more sense\n\n doc = _04Correction(doc); // remove our cache, as it's invalidated now\n\n doc.uncache(); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar _02Tagger = tagger;\n\nvar addMethod$a = function addMethod(Doc) {\n /** */\n var Abbreviations = /*#__PURE__*/function (_Doc) {\n _inherits(Abbreviations, _Doc);\n\n var _super = _createSuper(Abbreviations);\n\n function Abbreviations() {\n _classCallCheck(this, Abbreviations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Abbreviations, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n if (t.tags.Abbreviation === true && t.next) {\n t.post = t.post.replace(/^\\./, '');\n }\n\n var str = t.text.replace(/\\./, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n t.post = t.post.replace(/^\\./, '');\n t.post = '.' + t.post;\n });\n return this;\n }\n }]);\n\n return Abbreviations;\n }(Doc);\n\n Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods;\n\n Doc.prototype.abbreviations = function (n) {\n var match = this.match('#Abbreviation');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Abbreviations(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Abbreviations = addMethod$a;\n\nvar hasPeriod = /\\./;\n\nvar addMethod$9 = function addMethod(Doc) {\n /** */\n var Acronyms = /*#__PURE__*/function (_Doc) {\n _inherits(Acronyms, _Doc);\n\n var _super = _createSuper(Acronyms);\n\n function Acronyms() {\n _classCallCheck(this, Acronyms);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Acronyms, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one\n\n if (hasPeriod.test(t.post) === false) {\n str += '.';\n }\n\n t.set(str);\n });\n return this;\n }\n }]);\n\n return Acronyms;\n }(Doc);\n\n Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods;\n Acronyms.prototype.strip = Acronyms.prototype.stripPeriods;\n\n Doc.prototype.acronyms = function (n) {\n var match = this.match('#Acronym');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Acronyms(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Acronyms = addMethod$9;\n\nvar addMethod$8 = function addMethod(Doc) {\n /** split into approximate sub-sentence phrases */\n Doc.prototype.clauses = function (n) {\n // an awkward way to disambiguate a comma use\n var commas = this[\"if\"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool...\n .notIf('@hasComma . .? (and|or) .') //cool, and fun\n .notIf('(#City && @hasComma) #Country') //'toronto, canada'\n .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd'\n .notIf('(#Date && @hasComma) #Year') //'july 6, 1992'\n .notIf('@hasComma (too|also)$') //at end of sentence\n .match('@hasComma');\n var found = this.splitAfter(commas);\n var quotes = found.quotations();\n found = found.splitOn(quotes);\n var parentheses = found.parentheses();\n found = found.splitOn(parentheses); // it is cool and it is ..\n\n var conjunctions = found[\"if\"]('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction');\n found = found.splitBefore(conjunctions); // if it is this then that\n\n var condition = found[\"if\"]('if .{2,9} then .').match('then');\n found = found.splitBefore(condition); // misc clause partitions\n\n found = found.splitBefore('as well as .');\n found = found.splitBefore('such as .');\n found = found.splitBefore('in addition to .'); // semicolons, dashes\n\n found = found.splitAfter('@hasSemicolon');\n found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty'\n // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // //which the boy robbed\n // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // does there appear to have relative/subordinate clause still?\n\n var tooLong = found.filter(function (d) {\n return d.wordCount() > 5 && d.match('#Verb+').length >= 2;\n });\n\n if (tooLong.found) {\n var m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+');\n found = found.splitOn(m.eq(0));\n }\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Doc(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Clauses = addMethod$8;\n\nvar addMethod$7 = function addMethod(Doc) {\n /** */\n var Contractions = /*#__PURE__*/function (_Doc) {\n _inherits(Contractions, _Doc);\n\n var _super = _createSuper(Contractions);\n\n function Contractions(list, from, world) {\n var _this;\n\n _classCallCheck(this, Contractions);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Contractions, [{\n key: \"expand\",\n value: function expand() {\n this.list.forEach(function (p) {\n var terms = p.terms(); //change the case?\n\n var isTitlecase = terms[0].isTitleCase();\n terms.forEach(function (t, i) {\n //use the implicit text\n t.set(t.implicit || t.text);\n t.implicit = undefined; //add whitespace\n\n if (i < terms.length - 1 && t.post === '') {\n t.post += ' ';\n }\n }); //set titlecase\n\n if (isTitlecase) {\n terms[0].toTitleCase();\n }\n });\n return this;\n }\n }]);\n\n return Contractions;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.contractions = function (n) {\n //find currently-contracted\n var found = this.match('@hasContraction+'); //(may want to split these up)\n //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Contractions(found.list, this, this.world);\n }; //aliases\n\n\n Doc.prototype.expanded = Doc.prototype.isExpanded;\n Doc.prototype.contracted = Doc.prototype.isContracted;\n return Doc;\n};\n\nvar Contractions = addMethod$7;\n\nvar addMethod$6 = function addMethod(Doc) {\n //pull it apart..\n var parse = function parse(doc) {\n var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?');\n var beforeLast = doc.match('[.] (and|or)', 0);\n return {\n things: things,\n conjunction: doc.match('(and|or) not?'),\n beforeLast: beforeLast,\n hasOxford: beforeLast.has('@hasComma')\n };\n };\n /** cool, fun, and nice */\n\n\n var Lists = /*#__PURE__*/function (_Doc) {\n _inherits(Lists, _Doc);\n\n var _super = _createSuper(Lists);\n\n function Lists() {\n _classCallCheck(this, Lists);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Lists, [{\n key: \"conjunctions\",\n value:\n /** coordinating conjunction */\n function conjunctions() {\n return this.match('(and|or)');\n }\n /** split-up by list object */\n\n }, {\n key: \"parts\",\n value: function parts() {\n return this.splitAfter('@hasComma').splitOn('(and|or) not?');\n }\n /** remove the conjunction */\n\n }, {\n key: \"items\",\n value: function items() {\n return parse(this).things;\n }\n /** add a new unit to the list */\n\n }, {\n key: \"add\",\n value: function add(str) {\n this.forEach(function (p) {\n var beforeLast = parse(p).beforeLast;\n beforeLast.append(str); //add a comma to it\n\n beforeLast.termList(0).addPunctuation(',');\n });\n return this;\n }\n /** remove any matching unit from the list */\n\n }, {\n key: \"remove\",\n value: function remove(match) {\n return this.items()[\"if\"](match).remove();\n }\n /** return only lists that use a serial comma */\n\n }, {\n key: \"hasOxfordComma\",\n value: function hasOxfordComma() {\n return this.filter(function (doc) {\n return parse(doc).hasOxford;\n });\n }\n }, {\n key: \"addOxfordComma\",\n value: function addOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === false) {\n needsComma.post(', ');\n }\n\n return this;\n }\n }, {\n key: \"removeOxfordComma\",\n value: function removeOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === true) {\n needsComma.post(' ');\n }\n\n return this;\n }\n }]);\n\n return Lists;\n }(Doc); // aliases\n\n\n Lists.prototype.things = Lists.prototype.items;\n\n Doc.prototype.lists = function (n) {\n var m = this[\"if\"]('@hasComma+ .? (and|or) not? .'); // person-list\n\n var nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+')[\"if\"]('#Noun');\n var adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+');\n var verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+');\n var result = nounList.concat(adjList);\n result = result.concat(verbList);\n result = result[\"if\"]('@hasComma');\n\n if (typeof n === 'number') {\n result = m.get(n);\n }\n\n return new Lists(result.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Lists = addMethod$6;\n\nvar noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace'\n\nvar hasPlural = function hasPlural(doc) {\n if (doc.has('#Plural') === true) {\n return true;\n } // these can't be plural\n\n\n if (doc.has(noPlural) === true) {\n return false;\n }\n\n return true;\n};\n\nvar hasPlural_1 = hasPlural;\n\nvar irregulars = {\n hour: 'an',\n heir: 'an',\n heirloom: 'an',\n honest: 'an',\n honour: 'an',\n honor: 'an',\n uber: 'an' //german u\n\n}; //pronounced letters of acronyms that get a 'an'\n\nvar an_acronyms = {\n a: true,\n e: true,\n f: true,\n h: true,\n i: true,\n l: true,\n m: true,\n n: true,\n o: true,\n r: true,\n s: true,\n x: true\n}; //'a' regexes\n\nvar a_regexs = [/^onc?e/i, //'wu' sound of 'o'\n/^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n/^eul/i];\n\nvar makeArticle = function makeArticle(doc) {\n //no 'the john smith', but 'a london hotel'\n if (doc.has('#Person') || doc.has('#Place')) {\n return '';\n } //no a/an if it's plural\n\n\n if (doc.has('#Plural')) {\n return 'the';\n }\n\n var str = doc.text('normal').trim(); //explicit irregular forms\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //spelled-out acronyms\n\n\n var firstLetter = str.substr(0, 1);\n\n if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) {\n return 'an';\n } //'a' regexes\n\n\n for (var i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return 'a';\n }\n } //basic vowel-startings\n\n\n if (/^[aeiou]/i.test(str)) {\n return 'an';\n }\n\n return 'a';\n};\n\nvar getArticle = makeArticle;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$2 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar _rules = {\n isSingular: isSingular,\n isPlural: isPlural$2\n};\n\nvar endS = /s$/; // double-check this term, if it is not plural, or singular.\n// (this is a partial copy of ./tagger/fallbacks/plural)\n// fallback plural if it ends in an 's'.\n\nvar isPlural$1 = function isPlural(str) {\n // isSingular suffix rules\n if (_rules.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return false;\n } // does it end in an s?\n\n\n if (endS.test(str) === true) {\n return true;\n } // is it a plural like 'fungi'?\n\n\n if (_rules.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return true;\n }\n\n return null;\n};\n\nvar isPlural_1$1 = isPlural$1;\n\nvar exceptions = {\n he: 'his',\n she: 'hers',\n they: 'theirs',\n we: 'ours',\n i: 'mine',\n you: 'yours',\n her: 'hers',\n their: 'theirs',\n our: 'ours',\n my: 'mine',\n your: 'yours'\n}; // turn \"David\" to \"David's\"\n\nvar toPossessive = function toPossessive(doc) {\n var str = doc.text('text').trim(); // exceptions\n\n if (exceptions.hasOwnProperty(str)) {\n doc.replaceWith(exceptions[str], true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } // flanders'\n\n\n if (/s$/.test(str)) {\n str += \"'\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } //normal form:\n\n\n str += \"'s\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n};\n\nvar toPossessive_1 = toPossessive;\n\n// .nouns() supports some noun-phrase-ish groupings\n// pull these apart, if necessary\nvar parse$1 = function parse(doc) {\n var res = {\n main: doc\n }; //support 'mayor of chicago' as one noun-phrase\n\n if (doc.has('#Noun (of|by|for) .')) {\n var m = doc.splitAfter('[#Noun+]', 0);\n res.main = m.eq(0);\n res.post = m.eq(1);\n }\n\n return res;\n};\n\nvar parse_1 = parse$1;\n\nvar methods$2 = {\n /** overload the original json with noun information */\n json: function json(options) {\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (doc) {\n var json = doc.json(options)[0];\n json.article = getArticle(doc);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** get all adjectives describing this noun*/\n adjectives: function adjectives() {\n var list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+');\n list = list.concat(this.lookBehind('#Adjective+ #Adverb?$'));\n list = list.match('#Adjective');\n return list.sort('index');\n },\n isPlural: function isPlural() {\n return this[\"if\"]('#Plural'); //assume tagger has run?\n },\n hasPlural: function hasPlural() {\n return this.filter(function (d) {\n return hasPlural_1(d);\n });\n },\n toPlural: function toPlural(agree) {\n var _this = this;\n\n var toPlural = this.world.transforms.toPlural;\n this.forEach(function (doc) {\n if (doc.has('#Plural') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Singular') && isPlural_1$1(str) === true) {\n return;\n }\n\n str = toPlural(str, _this.world);\n main.replace(str).tag('#Plural'); // 'an apple' -> 'apples'\n\n if (agree) {\n var an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective');\n\n if (an.found === true) {\n an.remove();\n }\n }\n });\n return this;\n },\n toSingular: function toSingular(agree) {\n var _this2 = this;\n\n var toSingular = this.world.transforms.toSingular;\n this.forEach(function (doc) {\n if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Plural') && isPlural_1$1(str) !== true) {\n return;\n }\n\n str = toSingular(str, _this2.world);\n main.replace(str).tag('#Singular'); // add an article\n\n if (agree) {\n // 'apples' -> 'an apple'\n var start = doc;\n var adj = doc.lookBefore('#Adjective');\n\n if (adj.found) {\n start = adj;\n }\n\n var article = getArticle(start);\n start.insertBefore(article);\n }\n });\n return this;\n },\n toPossessive: function toPossessive() {\n this.forEach(function (d) {\n toPossessive_1(d);\n });\n return this;\n }\n};\nvar methods_1 = methods$2;\n\nvar addMethod$5 = function addMethod(Doc) {\n /** */\n var Nouns = /*#__PURE__*/function (_Doc) {\n _inherits(Nouns, _Doc);\n\n var _super = _createSuper(Nouns);\n\n function Nouns() {\n _classCallCheck(this, Nouns);\n\n return _super.apply(this, arguments);\n }\n\n return Nouns;\n }(Doc); // add-in our methods\n\n\n Object.assign(Nouns.prototype, methods_1);\n\n Doc.prototype.nouns = function (n) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep); // don't combine over scare-quotes\n\n var quotes = m.quotations();\n\n if (quotes.found) {\n m = m.splitOn(quotes.eq(0));\n }\n\n m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons\n\n if (opts.keep_anaphora !== true) {\n m = m.not('#Pronoun');\n m = m.not('(there|these)');\n m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays\n // //allow possessives like \"spencer's\", but not generic ones like,\n\n m = m.not('(my|our|your|their|her|his)');\n }\n\n m = m.not('(of|for|by|the)$');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return new Nouns(m.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Nouns = addMethod$5;\n\nvar open = /\\(/;\nvar close = /\\)/;\n\nvar addMethod$4 = function addMethod(Doc) {\n /** anything between (these things) */\n var Parentheses = /*#__PURE__*/function (_Doc) {\n _inherits(Parentheses, _Doc);\n\n var _super = _createSuper(Parentheses);\n\n function Parentheses() {\n _classCallCheck(this, Parentheses);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Parentheses, [{\n key: \"unwrap\",\n value:\n /** remove the parentheses characters */\n function unwrap() {\n this.list.forEach(function (p) {\n var first = p.terms(0);\n first.pre = first.pre.replace(open, '');\n var last = p.lastTerm();\n last.post = last.post.replace(close, '');\n });\n return this;\n }\n }]);\n\n return Parentheses;\n }(Doc);\n\n Doc.prototype.parentheses = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening brackets\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (open.test(t.pre)) {\n //look for the closing bracket..\n for (var o = i; o < terms.length; o += 1) {\n if (close.test(terms[o].post)) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Parentheses(list, this, this.world);\n }\n\n return new Parentheses(list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Parentheses = addMethod$4;\n\nvar addMethod$3 = function addMethod(Doc) {\n /** */\n var Possessives = /*#__PURE__*/function (_Doc) {\n _inherits(Possessives, _Doc);\n\n var _super = _createSuper(Possessives);\n\n function Possessives(list, from, world) {\n var _this;\n\n _classCallCheck(this, Possessives);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Possessives, [{\n key: \"strip\",\n value: function strip() {\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms.forEach(function (t) {\n var str = t.text.replace(/'s$/, '');\n t.set(str || t.text);\n });\n });\n return this;\n }\n }]);\n\n return Possessives;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.possessives = function (n) {\n //find currently-contracted\n var found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Possessives(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Possessives = addMethod$3;\n\nvar pairs = {\n \"\\\"\": \"\\\"\",\n // 'StraightDoubleQuotes'\n \"\\uFF02\": \"\\uFF02\",\n // 'StraightDoubleQuotesWide'\n \"'\": \"'\",\n // 'StraightSingleQuotes'\n \"\\u201C\": \"\\u201D\",\n // 'CommaDoubleQuotes'\n \"\\u2018\": \"\\u2019\",\n // 'CommaSingleQuotes'\n \"\\u201F\": \"\\u201D\",\n // 'CurlyDoubleQuotesReversed'\n \"\\u201B\": \"\\u2019\",\n // 'CurlySingleQuotesReversed'\n \"\\u201E\": \"\\u201D\",\n // 'LowCurlyDoubleQuotes'\n \"\\u2E42\": \"\\u201D\",\n // 'LowCurlyDoubleQuotesReversed'\n \"\\u201A\": \"\\u2019\",\n // 'LowCurlySingleQuotes'\n \"\\xAB\": \"\\xBB\",\n // 'AngleDoubleQuotes'\n \"\\u2039\": \"\\u203A\",\n // 'AngleSingleQuotes'\n // Prime 'non quotation'\n \"\\u2035\": \"\\u2032\",\n // 'PrimeSingleQuotes'\n \"\\u2036\": \"\\u2033\",\n // 'PrimeDoubleQuotes'\n \"\\u2037\": \"\\u2034\",\n // 'PrimeTripleQuotes'\n // Prime 'quotation' variation\n \"\\u301D\": \"\\u301E\",\n // 'PrimeDoubleQuotes'\n \"`\": \"\\xB4\",\n // 'PrimeSingleQuotes'\n \"\\u301F\": \"\\u301E\" // 'LowPrimeDoubleQuotesReversed'\n\n};\nvar hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')');\n\nvar addMethod$2 = function addMethod(Doc) {\n /** \"these things\" */\n var Quotations = /*#__PURE__*/function (_Doc) {\n _inherits(Quotations, _Doc);\n\n var _super = _createSuper(Quotations);\n\n function Quotations() {\n _classCallCheck(this, Quotations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Quotations, [{\n key: \"unwrap\",\n value:\n /** remove the quote characters */\n function unwrap() {\n return this;\n }\n }]);\n\n return Quotations;\n }(Doc);\n\n Doc.prototype.quotations = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening quotes\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (hasOpen.test(t.pre)) {\n var _char = (t.pre.match(hasOpen) || [])[0];\n var want = pairs[_char]; // if (!want) {\n // console.warn('missing quote char ' + char)\n // }\n //look for the closing bracket..\n\n for (var o = i; o < terms.length; o += 1) {\n if (terms[o].post.indexOf(want) !== -1) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Quotations(list, this, this.world);\n }\n\n return new Quotations(list, this, this.world);\n }; // alias\n\n\n Doc.prototype.quotes = Doc.prototype.quotations;\n return Doc;\n};\n\nvar Quotations = addMethod$2;\n\n// walked => walk - turn a verb into it's root form\nvar toInfinitive = function toInfinitive(parsed, world) {\n var verb = parsed.verb; // console.log(parsed)\n // verb.debug()\n //1. if it's already infinitive\n\n var str = verb.text('reduced');\n\n if (verb.has('#Infinitive')) {\n return str;\n } // 2. world transform does the heavy-lifting\n\n\n var tense = null;\n\n if (verb.has('#PastTense')) {\n tense = 'PastTense';\n } else if (verb.has('#Gerund')) {\n tense = 'Gerund';\n } else if (verb.has('#PresentTense')) {\n tense = 'PresentTense';\n } else if (verb.has('#Participle')) {\n tense = 'Participle';\n } else if (verb.has('#Actor')) {\n tense = 'Actor';\n }\n\n return world.transforms.toInfinitive(str, world, tense);\n};\n\nvar toInfinitive_1 = toInfinitive;\n\n// spencer walks -> singular\n// we walk -> plural\n// the most-recent noun-phrase, before this verb.\nvar findNoun = function findNoun(vb) {\n var noun = vb.lookBehind('#Noun+').last();\n return noun;\n}; //sometimes you can tell if a verb is plural/singular, just by the verb\n// i am / we were\n// othertimes you need its subject 'we walk' vs 'i walk'\n\n\nvar isPlural = function isPlural(parsed) {\n var vb = parsed.verb;\n\n if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) {\n return true;\n }\n\n if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) {\n return false;\n } //consider its prior noun\n\n\n var noun = findNoun(vb);\n\n if (noun.has('(we|they|you)')) {\n return true;\n }\n\n if (noun.has('#Plural')) {\n return true;\n }\n\n if (noun.has('#Singular')) {\n return false;\n }\n\n return null;\n};\n\nvar isPlural_1 = isPlural;\n\n// #Copula : is -> 'is not'\n// #PastTense : walked -> did not walk\n// #PresentTense : walks -> does not walk\n// #Gerund : walking: -> not walking\n// #Infinitive : walk -> do not walk\n\nvar toNegative = function toNegative(parsed, world) {\n var vb = parsed.verb; // if it's already negative...\n\n if (parsed.negative.found) {\n return;\n } // would walk -> would not walk\n\n\n if (parsed.auxiliary.found) {\n parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have'\n\n if (parsed.auxiliary.has('#Modal have not')) {\n parsed.auxiliary.replace('have not', 'not have');\n }\n\n return;\n } // is walking -> is not walking\n\n\n if (vb.has('(#Copula|will|has|had|do)')) {\n vb.append('not');\n return;\n } // walked -> did not walk\n\n\n if (vb.has('#PastTense')) {\n var inf = toInfinitive_1(parsed, world);\n vb.replaceWith(inf, true);\n vb.prepend('did not');\n return;\n } // walks -> does not walk\n\n\n if (vb.has('#PresentTense')) {\n var _inf = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf, true);\n\n if (isPlural_1(parsed)) {\n vb.prepend('do not');\n } else {\n vb.prepend('does not');\n }\n\n return;\n } //walking -> not walking\n\n\n if (vb.has('#Gerund')) {\n var _inf2 = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf2, true);\n vb.prepend('not');\n return;\n } //fallback 1: walk -> does not walk\n\n\n if (isPlural_1(parsed)) {\n vb.prepend('does not');\n return;\n } //fallback 2: walk -> do not walk\n\n\n vb.prepend('do not');\n return;\n};\n\nvar toNegative_1 = toNegative;\n\n// who/what is doing this verb?\n// get the prior verb most-likely doing this action\n// (it can not-exist - 'close the door')\nvar getSubject = function getSubject(vb) {\n var behind = vb.lookBehind();\n var lastNoun = behind.nouns(null, {\n keep_anaphora: true\n }).last(); // support 'that' and 'this'\n\n if (!lastNoun.found) {\n lastNoun = behind.match('(that|this|each)').last();\n lastNoun = lastNoun.tag('#Noun').nouns();\n }\n\n return lastNoun;\n};\n\nvar getSubject_1 = getSubject;\n\nvar parseVerb = function parseVerb(vb) {\n var parsed = {\n adverb: vb.match('#Adverb+'),\n // 'really'\n negative: vb.match('#Negative'),\n // 'not'\n auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'),\n // 'will' of 'will go'\n particle: vb.match('#Particle'),\n // 'up' of 'pull up'\n verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'),\n original: vb,\n subject: getSubject_1(vb)\n }; // fallback, if no verb found\n\n if (!parsed.verb.found) {\n // blank-everything\n Object.keys(parsed).forEach(function (k) {\n parsed[k] = parsed[k].not('.');\n }); // it's all the verb\n\n parsed.verb = vb;\n return parsed;\n } //\n\n\n if (parsed.adverb && parsed.adverb.found) {\n var match = parsed.adverb.text('reduced') + '$';\n\n if (vb.has(match)) {\n parsed.adverbAfter = true;\n }\n }\n\n return parsed;\n};\n\nvar parse = parseVerb;\n\n/** too many special cases for is/was/will be*/\n\nvar toBe = function toBe(parsed) {\n var isI = false;\n var plural = isPlural_1(parsed);\n var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular\n // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) {\n // isI = true;\n // }\n // 'i look', not 'i looks'\n\n if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n isI = true;\n }\n\n var obj = {\n PastTense: 'was',\n PresentTense: 'is',\n FutureTense: 'will be',\n Infinitive: 'is',\n Gerund: 'being',\n Actor: '',\n PerfectTense: 'been',\n Pluperfect: 'been'\n }; //\"i is\" -> \"i am\"\n\n if (isI === true) {\n obj.PresentTense = 'am';\n obj.Infinitive = 'am';\n }\n\n if (plural) {\n obj.PastTense = 'were';\n obj.PresentTense = 'are';\n obj.Infinitive = 'are';\n }\n\n if (isNegative) {\n obj.PastTense += ' not';\n obj.PresentTense += ' not';\n obj.FutureTense = 'will not be';\n obj.Infinitive += ' not';\n obj.PerfectTense = 'not ' + obj.PerfectTense;\n obj.Pluperfect = 'not ' + obj.Pluperfect;\n obj.Gerund = 'not ' + obj.Gerund;\n }\n\n return obj;\n};\n\nvar toBe_1 = toBe;\n\n// 'may/could/should' -> 'may/could/should have'\nvar doModal = function doModal(parsed) {\n var str = parsed.verb.text();\n var res = {\n PastTense: str + ' have',\n PresentTense: str,\n FutureTense: str,\n Infinitive: str // Gerund: ,\n // Actor: '',\n // PerfectTense: '',\n // Pluperfect: '',\n\n };\n return res;\n};\n\nvar doModal_1 = doModal;\n\nvar conjugate = function conjugate(parsed, world) {\n var verb = parsed.verb; //special handling of 'is', 'will be', etc.\n\n if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) {\n return toBe_1(parsed);\n } // special handling of 'are walking'\n\n\n if (parsed.auxiliary.has('are') && verb.has('#Gerund')) {\n var og = parsed.original.clone();\n var past = og.clone().replace('are', 'were');\n var fut = og.clone().replace('are', 'will be');\n\n var _infinitive = toInfinitive_1(parsed, world);\n\n var res = {\n PastTense: past.text(),\n PresentTense: og.text(),\n FutureTense: fut.text(),\n Infinitive: _infinitive\n };\n return res;\n } // special handling of 'he could.'\n\n\n if (verb.has('#Modal')) {\n return doModal_1(parsed);\n } // dont conjugate imperative form - 'close the door'\n // if (parsed.auxiliary.has('do')) {\n // let str = parsed.original.text()\n // let res = {\n // PastTense: str,\n // PresentTense: str,\n // FutureTense: str,\n // Infinitive: str,\n // }\n // return res\n // }\n\n\n var hasHyphen = parsed.verb.termList(0).hasHyphen();\n var infinitive = toInfinitive_1(parsed, world);\n\n if (!infinitive) {\n return {};\n }\n\n var forms = world.transforms.conjugate(infinitive, world);\n forms.Infinitive = infinitive; // add particle to phrasal verbs ('fall over')\n\n if (parsed.particle.found) {\n var particle = parsed.particle.text();\n var space = hasHyphen === true ? '-' : ' ';\n Object.keys(forms).forEach(function (k) {\n return forms[k] += space + particle;\n });\n } //put the adverb at the end?\n // if (parsed.adverb.found) {\n // let adverb = parsed.adverb.text()\n // let space = hasHyphen === true ? '-' : ' '\n // if (parsed.adverbAfter === true) {\n // Object.keys(forms).forEach(k => (forms[k] += space + adverb))\n // } else {\n // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k]))\n // }\n // }\n //apply negative\n\n\n var isNegative = parsed.negative.found;\n\n if (isNegative) {\n forms.PastTense = 'did not ' + forms.Infinitive;\n forms.PresentTense = 'does not ' + forms.Infinitive;\n forms.Gerund = 'not ' + forms.Gerund;\n } //future Tense is pretty straightforward\n\n\n if (!forms.FutureTense) {\n if (isNegative) {\n forms.FutureTense = 'will not ' + forms.Infinitive;\n } else {\n forms.FutureTense = 'will ' + forms.Infinitive;\n }\n }\n\n if (isNegative) {\n forms.Infinitive = 'not ' + forms.Infinitive;\n }\n\n return forms;\n};\n\nvar conjugate_1 = conjugate;\n\n// if something is 'modal-ish' we are forced to use past-participle\n// ('i could drove' is wrong)\n\nvar useParticiple$1 = function useParticiple(parsed) {\n if (parsed.auxiliary.has('(could|should|would|may|can|must)')) {\n return true;\n }\n\n if (parsed.auxiliary.has('am .+? being')) {\n return true;\n }\n\n if (parsed.auxiliary.has('had .+? been')) {\n return true;\n }\n\n return false;\n}; // conjugate 'drive' ➔ 'have driven'\n\n\nvar toParticiple = function toParticiple(parsed, world) {\n //is it already a participle?\n if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) {\n return;\n } // try to swap the main verb to its participle form\n\n\n var obj = conjugate_1(parsed, world);\n var str = obj.Participle || obj.PastTense;\n\n if (str) {\n parsed.verb.replaceWith(str, false);\n } // 'am being driven' ➔ 'have been driven'\n\n\n if (parsed.auxiliary.has('am .+? being')) {\n parsed.auxiliary.remove('am');\n parsed.auxiliary.replace('being', 'have been');\n } // add a 'have'\n\n\n if (!parsed.auxiliary.has('have')) {\n parsed.auxiliary.append('have');\n } // tag it as a participle\n\n\n parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim'\n\n parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been'\n\n parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not'\n\n parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right\n\n parsed.auxiliary.tag('Auxiliary');\n};\n\nvar participle = {\n useParticiple: useParticiple$1,\n toParticiple: toParticiple\n};\n\nvar _toParticiple = participle.toParticiple,\n useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs\n\nvar makeNeutral = function makeNeutral(parsed) {\n //remove tense-info from auxiliaries\n parsed.auxiliary.remove('(will|are|am|being)');\n parsed.auxiliary.remove('(did|does)');\n parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle\n\n parsed.particle.remove();\n parsed.negative.remove();\n return parsed;\n};\n\nvar methods$1 = {\n /** overload the original json with verb information */\n json: function json(options) {\n var _this = this;\n\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (p) {\n var json = p.json(options)[0];\n var parsed = parse(p);\n json.parts = {};\n Object.keys(parsed).forEach(function (k) {\n if (parsed[k] && parsed[k].isA === 'Doc') {\n json.parts[k] = parsed[k].text('normal');\n } else {\n json.parts[k] = parsed[k];\n }\n });\n json.isNegative = p.has('#Negative');\n json.conjugations = conjugate_1(parsed, _this.world);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** grab the adverbs describing these verbs */\n adverbs: function adverbs() {\n var list = []; // look at internal adverbs\n\n this.forEach(function (vb) {\n var advb = parse(vb).adverb;\n\n if (advb.found) {\n list = list.concat(advb.list);\n }\n }); // look for leading adverbs\n\n var m = this.lookBehind('#Adverb+$');\n\n if (m.found) {\n list = m.list.concat(list);\n } // look for trailing adverbs\n\n\n m = this.lookAhead('^#Adverb+');\n\n if (m.found) {\n list = list.concat(m.list);\n }\n\n return this.buildFrom(list);\n },\n /// Verb Inflection\n\n /**return verbs like 'we walk' and not 'spencer walks' */\n isPlural: function isPlural() {\n var _this2 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this2.world) === true) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n\n /** return verbs like 'spencer walks' and not 'we walk' */\n isSingular: function isSingular() {\n var _this3 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this3.world) === false) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n /// Conjugation\n\n /** return all forms of this verb */\n conjugate: function conjugate() {\n var _this4 = this;\n\n var result = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var forms = conjugate_1(parsed, _this4.world);\n\n result.push(forms);\n });\n return result;\n },\n\n /** walk ➔ walked*/\n toPastTense: function toPastTense() {\n var _this5 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam'\n\n if (useParticiple(parsed)) {\n _toParticiple(parsed, _this5.world);\n\n return;\n }\n\n if (vb.has('#Imperative')) {\n return;\n } // don't conjugate 'to be'\n\n\n if (vb.has('be') && vb.lookBehind('to$').found) {\n return;\n } // handle 'is raining' -> 'was raining'\n\n\n if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) {\n vb.replace('is', 'was');\n return;\n }\n\n var str = conjugate_1(parsed, _this5.world).PastTense;\n\n if (str) {\n parsed = makeNeutral(parsed);\n parsed.verb.replaceWith(str, false); // vb.tag('PastTense')\n }\n });\n return this;\n },\n\n /** walk ➔ walks */\n toPresentTense: function toPresentTense() {\n var _this6 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var obj = conjugate_1(parsed, _this6.world);\n\n var str = obj.PresentTense; // 'i look', not 'i looks'\n\n if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n str = obj.Infinitive;\n }\n\n if (str) {\n //awkward support for present-participle form\n // -- should we support 'have been swimming' ➔ 'am swimming'\n if (parsed.auxiliary.has('(have|had) been')) {\n parsed.auxiliary.replace('(have|had) been', 'am being');\n\n if (obj.Particle) {\n str = obj.Particle || obj.PastTense;\n }\n\n return;\n }\n\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('PresentTense');\n parsed = makeNeutral(parsed); // avoid 'he would walks'\n\n parsed.auxiliary.remove('#Modal');\n }\n });\n return this;\n },\n\n /** walk ➔ will walk*/\n toFutureTense: function toFutureTense() {\n var _this7 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // 'i should drive' is already future-enough\n\n if (useParticiple(parsed)) {\n return;\n }\n\n var str = conjugate_1(parsed, _this7.world).FutureTense;\n\n if (str) {\n parsed = makeNeutral(parsed); // avoid 'he would will go'\n\n parsed.auxiliary.remove('#Modal');\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('FutureTense');\n }\n });\n return this;\n },\n\n /** walks ➔ walk */\n toInfinitive: function toInfinitive() {\n var _this8 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this8.world).Infinitive;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Infinitive');\n }\n });\n return this;\n },\n\n /** walk ➔ walking */\n toGerund: function toGerund() {\n var _this9 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this9.world).Gerund;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Gerund');\n }\n });\n return this;\n },\n\n /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */\n toParticiple: function toParticiple() {\n var _this10 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n var noAux = !parsed.auxiliary.found;\n\n _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found\n\n\n if (noAux) {\n parsed.verb.prepend(parsed.auxiliary.text());\n parsed.auxiliary.remove();\n }\n });\n return this;\n },\n /// Negation\n\n /** return only verbs with 'not'*/\n isNegative: function isNegative() {\n return this[\"if\"]('#Negative');\n },\n\n /** return only verbs without 'not'*/\n isPositive: function isPositive() {\n return this.ifNo('#Negative');\n },\n\n /** return only commands - verbs in imperative mood */\n isImperative: function isImperative() {\n return this[\"if\"]('#Imperative');\n },\n\n /** add a 'not' to these verbs */\n toNegative: function toNegative() {\n var _this11 = this;\n\n this.list.forEach(function (p) {\n var doc = _this11.buildFrom([p]);\n\n var parsed = parse(doc);\n\n toNegative_1(parsed, doc.world);\n });\n return this;\n },\n\n /** remove 'not' from these verbs */\n toPositive: function toPositive() {\n var m = this.match('do not #Verb');\n\n if (m.found) {\n m.remove('do not');\n }\n\n return this.remove('#Negative');\n },\n\n /** who, or what is doing this action? */\n subject: function subject() {\n var list = [];\n this.forEach(function (p) {\n var found = getSubject_1(p);\n\n if (found.list[0]) {\n list.push(found.list[0]);\n }\n });\n return this.buildFrom(list);\n }\n};\n\nvar addMethod$1 = function addMethod(Doc) {\n /** */\n var Verbs = /*#__PURE__*/function (_Doc) {\n _inherits(Verbs, _Doc);\n\n var _super = _createSuper(Verbs);\n\n function Verbs() {\n _classCallCheck(this, Verbs);\n\n return _super.apply(this, arguments);\n }\n\n return Verbs;\n }(Doc); // add-in our methods\n\n\n Object.assign(Verbs.prototype, methods$1); // aliases\n\n Verbs.prototype.negate = Verbs.prototype.toNegative;\n\n Doc.prototype.verbs = function (n) {\n var match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs\n\n match = match.not('^#Adverb+');\n match = match.not('#Adverb+$'); // handle commas:\n // don't split 'really, really'\n\n var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas\n\n var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at...\n\n var gerund = m.match('#PastTense #Gerund');\n\n if (!gerund.has('(been|am|#Auxiliary) #Gerund')) {\n m = m.splitBefore(gerund.match('#Gerund'));\n } // combine them back together\n\n\n m = m.concat(keep);\n m.sort('index'); //handle slashes?\n //ensure there's actually a verb\n\n m = m[\"if\"]('#Verb'); // the reason he will is ...\n\n if (m.has('(is|was)$')) {\n m = m.splitBefore('(is|was)$');\n } //ensure it's not two verbs\n\n\n if (m.has('#PresentTense #Adverb #PresentTense')) {\n m = m.splitBefore('#Adverb #PresentTense');\n } //grab (n)th result\n\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n var vb = new Verbs(m.list, this, this.world);\n return vb;\n };\n\n return Doc;\n};\n\nvar Verbs = addMethod$1;\n\nvar addMethod = function addMethod(Doc) {\n /** */\n var People = /*#__PURE__*/function (_Doc) {\n _inherits(People, _Doc);\n\n var _super = _createSuper(People);\n\n function People() {\n _classCallCheck(this, People);\n\n return _super.apply(this, arguments);\n }\n\n return People;\n }(Doc);\n\n Doc.prototype.people = function (n) {\n var match = this.splitAfter('@hasComma');\n match = match.match('#Person+'); //grab (n)th result\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new People(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar People = addMethod;\n\nvar subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People];\n\nvar extend = function extend(Doc) {\n // add basic methods\n Object.keys(_simple).forEach(function (k) {\n return Doc.prototype[k] = _simple[k];\n }); // add subclassed methods\n\n subclass.forEach(function (addFn) {\n return addFn(Doc);\n });\n return Doc;\n};\n\nvar Subset = extend;\n\nvar methods = {\n misc: methods$4,\n selections: _simple\n};\n/** a parsed text object */\n\nvar Doc = /*#__PURE__*/function () {\n function Doc(list, from, world) {\n var _this = this;\n\n _classCallCheck(this, Doc);\n\n this.list = list; // this.reasons = []\n //quiet these properties in console.logs\n\n Object.defineProperty(this, 'from', {\n enumerable: false,\n value: from,\n writable: true\n }); //borrow some missing data from parent\n\n if (world === undefined && from !== undefined) {\n world = from.world;\n } //'world' getter\n\n\n Object.defineProperty(this, 'world', {\n enumerable: false,\n value: world,\n writable: true\n }); //fast-scans for our data\n\n Object.defineProperty(this, '_cache', {\n enumerable: false,\n writable: true,\n value: {}\n }); //'found' getter\n\n Object.defineProperty(this, 'found', {\n get: function get() {\n return _this.list.length > 0;\n }\n }); //'length' getter\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return _this.list.length;\n }\n }); // this is way easier than .constructor.name...\n\n Object.defineProperty(this, 'isA', {\n get: function get() {\n return 'Doc';\n }\n });\n }\n /** run part-of-speech tagger on all results*/\n\n\n _createClass(Doc, [{\n key: \"tagger\",\n value: function tagger() {\n return _02Tagger(this);\n }\n /** pool is stored on phrase objects */\n\n }, {\n key: \"pool\",\n value: function pool() {\n if (this.list.length > 0) {\n return this.list[0].pool;\n }\n\n return this.all().list[0].pool;\n }\n }]);\n\n return Doc;\n}();\n/** create a new Document object */\n\n\nDoc.prototype.buildFrom = function (list) {\n list = list.map(function (p) {\n return p.clone(true);\n }); // new this.constructor()\n\n var doc = new Doc(list, this, this.world);\n return doc;\n};\n/** create a new Document from plaintext. */\n\n\nDoc.prototype.fromText = function (str) {\n var list = _01Tokenizer(str, this.world, this.pool());\n return this.buildFrom(list);\n};\n\nObject.assign(Doc.prototype, methods.misc);\nObject.assign(Doc.prototype, methods.selections); //add sub-classes\n\nSubset(Doc); //aliases\n\nvar aliases = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if'\n};\nObject.keys(aliases).forEach(function (k) {\n return Doc.prototype[k] = Doc.prototype[aliases[k]];\n});\nvar Doc_1 = Doc;\n\nvar smallTagger = function smallTagger(doc) {\n var terms = doc.termList();\n _01Lexicon(terms, doc.world); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar tiny = smallTagger;\n\nfunction instance(worldInstance) {\n //blast-out our word-lists, just once\n var world = worldInstance;\n /** parse and tag text into a compromise object */\n\n var nlp = function nlp() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n\n if (lexicon) {\n world.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, world);\n var doc = new Doc_1(list, null, world);\n doc.tagger();\n return doc;\n };\n /** parse text into a compromise object, without running POS-tagging */\n\n\n nlp.tokenize = function () {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n var w = world;\n\n if (lexicon) {\n w = w.clone();\n w.words = {};\n w.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, w);\n var doc = new Doc_1(list, null, w);\n\n if (lexicon || doc.world.taggers.length > 0) {\n tiny(doc);\n }\n\n return doc;\n };\n /** mix in a compromise-plugin */\n\n\n nlp.extend = function (fn) {\n fn(Doc_1, world, this, Phrase_1, Term_1, Pool_1);\n return this;\n };\n /** create a compromise Doc object from .json() results */\n\n\n nlp.fromJSON = function (json) {\n var list = fromJSON_1(json, world);\n return new Doc_1(list, null, world);\n };\n /** make a deep-copy of the library state */\n\n\n nlp.clone = function () {\n return instance(world.clone());\n };\n /** log our decision-making for debugging */\n\n\n nlp.verbose = function () {\n var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n world.verbose(bool);\n return this;\n };\n /** grab currently-used World object */\n\n\n nlp.world = function () {\n return world;\n };\n /** pre-parse any match statements */\n\n\n nlp.parseMatch = function (str, opts) {\n return matchSyntax(str, opts);\n };\n /** current version of the library */\n\n\n nlp.version = _version; // aliases\n\n nlp[\"import\"] = nlp.load;\n nlp.plugin = nlp.extend;\n return nlp;\n}\n\nvar src = instance(new World_1());\n\nexport default src;\n","const fromTemplate = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl) {\n let json = tmpl.json() || {}\n return json.description || ''\n }\n return null\n}\nmodule.exports = fromTemplate\n","const preProcess = function (doc) {\n doc.parentheses().remove()\n return doc\n}\nmodule.exports = preProcess\n","const cleanUp = function (s) {\n // 'an actor and was a politician'\n s.remove('and #Copula .*')\n return s\n}\n\n// founded in 1952 as the flagship ..\nconst findPivot = function (s) {\n let m = s.matchOne('#Copula+ (a|an|the|any|one) of?')\n if (!m.found) {\n m = s.matchOne('#Copula+')\n }\n if (!m.found) {\n m = s.matchOne('refers to (a|an|the|any)? of?')\n }\n if (!m.found) {\n m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?')\n }\n if (!m.found) {\n return null\n }\n let f = s.splitOn(m)\n let verb = f.eq(1)\n let article = verb.match(`(a|an|the|any)? of?`)\n verb.remove(`(a|an|the|any)? of?`)\n return {\n before: f.eq(0),\n verb: f.eq(1),\n article: article,\n after: cleanUp(f.eq(2))\n }\n}\nmodule.exports = findPivot\n","const byClause = function (s) {\n // 'an actor and also a politician'\n s.remove('and (also|eventually) (a|an|the|#Possessive) .*')\n // 'an actor who was a politician'\n s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*')\n // past-tense verbs 'located in spain'\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n //\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n\n return s\n}\nmodule.exports = byClause\n","const safeCuts = function (s) {\n // 'in hamilton, Canada'\n if (s.has('(#Place && @hasComma) #Country+$')) {\n s.remove('#Country+$')\n }\n // 'which spans the '\n if (s.has('#Noun (that|which|who) #PresentTense the .*')) {\n s.remove(' that #PresentTense the .*')\n }\n // 'owned by the ...'\n if (s.has('#Noun #PastTense by the .*')) {\n s.remove('#PastTense by the .*')\n }\n // 'an american actress'\n s.remove('#Demonym')\n // professional hockey player\n s.remove('(professional|former)')\n\n //event-templates\n s.remove('and? held annually .*')\n s.remove('taking place each .*')\n\n // ordinal templates - the fifth fastest ..\n s.remove('^one of (the|many|several|#Value)+')\n s.remove('^(a|an|the)? #Ordinal? #Superlative')\n s.remove('^(a|an|the)? #Ordinal? most #Adjective')\n\n //\n s.remove('born in .*')\n s.remove('born #Date+ in? #Place+?')\n s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*')\n s.remove('(which|who|that) (is|was) .*')\n s.remove('^the name of')\n\n return s\n}\nmodule.exports = safeCuts\n","const isIndependent = function (c) {\n if (c.has('^(and|the|which|who|whom|also|a|an|the)')) {\n return true\n }\n // 'part of abu dabi'\n if (c.has('^(west|north|south|east|part) of')) {\n return true\n }\n // 'written by .'\n if (c.has('^#PastTense by .')) {\n return true\n }\n // 'sometimes called ..'\n if (c.has('^(occasionally|sometimes|frequently)')) {\n return true\n }\n // 'such as ..'\n if (c.has('^such as')) {\n return true\n }\n // 'featuring gold feathers ..'\n if (c.has('^(including|featuring|depicting)')) {\n return true\n }\n return false\n}\n\nconst hardCuts = function (s) {\n // .. in san fransisco\n if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) {\n s.remove('(located|based) in #Place+$')\n } else if (\n s.has(\n '(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'\n )\n ) {\n s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')\n } else if (s.has('(#Noun|#Value) in #Place+$')) {\n s.remove('in #Place+$')\n } else {\n s.remove('and? part of #Place+$')\n s.remove('and? near #Place+$')\n }\n\n // by clause\n let clauses = s.clauses()\n if (clauses.length > 1) {\n let first = clauses.eq(0)\n let second = clauses.eq(1)\n //can we just choose the first clause?\n if (isIndependent(second)) {\n s = clauses.eq(0)\n } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) {\n // 'produced by...'\n s = clauses.eq(0)\n } else if (second.has('^(#Gerund)') && first.has('#Noun$')) {\n // 'featuring a ...'\n s = clauses.eq(0)\n } else {\n // can we remove the last clause, atleast?\n let last = clauses.last()\n if (isIndependent(last)) {\n clauses.list.pop()\n s = clauses.join()\n }\n }\n }\n\n //.. writen by sandro leonardo\n if (s.has('(#Noun|and) #PastTense by')) {\n s.remove('#PastTense by .*')\n }\n //\n s.remove('and? designed to .*')\n s.remove('and? owned by .*')\n s.remove('and? consisting of .*')\n // , which collapsed\n if (s.has('@hasComma (which|who) #Verb')) {\n s.remove('(which|who) .*')\n }\n // , then\n // if (s.has('@hasComma (then)')) {\n // s.remove('(which|who) .*')\n // }\n return s\n}\nmodule.exports = hardCuts\n","const lastTry = function (s) {\n s.remove('(small|large|minor|major)')\n s.remove('(extinct|retired|annual|biweekly|monthly|daily)')\n s.remove('(female|male)')\n s.remove('(private|independent|official|unofficial|officially)')\n s.remove('(southern|northern|eastern|western|northeastern|northwestern)')\n\n //\n s.remove('^(family|clade|genus|species|order) of')\n return s\n}\nmodule.exports = lastTry\n","//check text is appropriate length\nconst isGood = function (doc, options) {\n if (doc && typeof doc.text === 'function') {\n let text = doc.text()\n if (text && text.length > options.min && text.length < options.max) {\n return true\n }\n }\n return false\n}\nmodule.exports = isGood\n","const nlp = require('compromise')\nconst preProcess = require('./00-preProcess')\nconst findPivot = require('./01-pivot')\nconst byClause = require('./02-byClause')\nconst safeCut = require('./03-safeCuts')\nconst hardCut = require('./04-hardCuts')\nconst lastTry = require('./05-lastTry')\nconst isGood = require('./_isGood')\n\nconst post = function (s) {\n s.remove('^(and|or|but)')\n s.remove('(and|or|but)$')\n s.post('') // remove trailing comma\n return s.text()\n}\n\n// let count = 0\nconst doSentence = function (doc, options) {\n let sentence = doc.sentence(0)\n if (!sentence) {\n return ''\n }\n let txt = sentence.text()\n let s = nlp(txt)\n preProcess(s)\n\n let pivot = findPivot(s)\n // if we can't pivot it properly, don't bother\n if (!pivot || !pivot.verb || !pivot.verb.found) {\n return ''\n }\n let after = pivot.after\n if (options.article && pivot.article && pivot.article.found) {\n after.prepend(pivot.article.text())\n }\n // maybe it's good already\n if (isGood(after, options)) {\n return post(after)\n }\n // parse major chunks\n after = byClause(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // perform some modifications\n after = safeCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // really give it a go\n after = hardCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // atleast we tried\n after = lastTry(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // console.log(after.text())\n // count += 1\n // console.log(count)\n // console.log(after.match('#PastTense').text())\n // console.log(after.text())\n // console.log('\\n')\n return ''\n}\nmodule.exports = doSentence\n","const bad = [\n 'living',\n 'births',\n 'former',\n 'deceased',\n 'missing',\n 'with',\n 'descent',\n 'award',\n 'winners',\n 'nominees',\n 'alumni',\n 'other'\n].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst good = ['male', 'female'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst like = ['male', 'female', 'century'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst dislike = ['people', 'place', 'from', 'in', 'people from'].map(\n (str) => new RegExp(`\\\\b${str}\\\\b`),\n 'i'\n)\n\nmodule.exports = {\n good: good,\n bad: bad,\n like: like,\n dislike: dislike\n}\n","const { like, dislike, good, bad } = require('./regs')\nconst hasYear = /[0-9]{4}/\nconst isPlural = /s$/\n\nconst fromCategory = function (doc) {\n let cats = doc.categories()\n\n // try to focus on the best ones, first\n let tmp = cats.filter((cat) => {\n return good.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // remove bad ones\n cats = cats.filter((cat) => {\n if (bad.find((reg) => reg.test(cat))) {\n return false\n }\n if (hasYear.test(cat)) {\n return false\n }\n return true\n })\n\n if (cats.length === 0) {\n return ''\n }\n // look at sorting by preferences\n tmp = cats.filter((cat) => {\n return like.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n // remove disliked ones\n tmp = cats.filter((cat) => {\n // not a plural ending\n if (isPlural.test(cat) === false) {\n return false\n }\n // just one word\n if (cat.slice(' ').length === 1) {\n return false\n }\n return dislike.find((reg) => reg.test(cat)) === undefined\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // sort them by most words\n cats = cats.sort((a, b) => {\n let aWords = a.split(' ').length\n let bWords = b.split(' ').length\n if (aWords > bWords) {\n return -1\n } else if (aWords < bWords) {\n return 1\n }\n return 0\n })\n // console.log(cats)\n\n return cats[0]\n}\nmodule.exports = fromCategory\n","const nlp = require('compromise')\nconst titleCase = (str) => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\n// 'American songwriters' to 'an American songwriter'\nconst changeCat = function (cat, options) {\n let c = nlp(cat)\n c.nouns().toSingular()\n // add article to the front\n if (options.article) {\n let article = 'A'\n let noun = c.nouns(0)\n if (noun && noun.found) {\n article = c.nouns(0).json({ terms: false })[0].article || article\n article = titleCase(article)\n }\n let first = c.terms(0)\n if (first.has('#ProperNoun') === false) {\n first.toLowerCase()\n }\n c.prepend(article)\n }\n // remove any parentheses\n c.parentheses().remove()\n return c.text()\n}\nmodule.exports = changeCat\n","const chooseCat = require('./01-choose')\nconst change = require('./02-change')\n\nconst byCategory = function (doc, options) {\n let cat = chooseCat(doc, options)\n if (!cat) {\n return ''\n }\n return change(cat, options)\n}\nmodule.exports = byCategory\n","const nlp = require('compromise')\nconst fromTemplate = require('./template')\nconst fromSentence = require('./sentence')\nconst fromCategory = require('./category')\n\nconst defaults = {\n article: true,\n template: true,\n sentence: true,\n category: true,\n max: 80,\n min: 3\n}\n\nconst seemsGood = function (txt, options) {\n return txt && txt.length > 5 && txt.length < options.max\n}\n\nconst plugin = function (models) {\n // add a new method to main class\n models.Doc.prototype.summary = function (options) {\n let doc = this\n options = options || {}\n options = Object.assign({}, defaults, options)\n\n // generate from {{short description}} template\n let txt = ''\n if (options.template) {\n txt = fromTemplate(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n // generate from first-sentence\n if (options.sentence) {\n txt = fromSentence(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n if (options.category) {\n return fromCategory(doc, options)\n }\n return ''\n }\n\n // should we use 'it', 'he', 'they'...\n models.Doc.prototype.article = function () {\n let txt = ''\n // prefer the 2nd sentence\n if (this.sentence(1)) {\n txt = this.sentence(1).text()\n } else {\n txt = this.sentence(0).text()\n }\n let doc = nlp(txt)\n let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase()\n return found || 'it'\n }\n\n // was event in past? is person dead?\n models.Doc.prototype.tense = function () {\n let txt = this.sentence().text()\n let doc = nlp(txt)\n let copula = doc.match('#Copula+').first()\n if (copula.has('was')) {\n return 'Past'\n }\n let vb = doc.verbs(0)\n if (vb.has('#PastTense')) {\n return 'Past'\n }\n if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) {\n return 'Future'\n }\n return 'Present'\n }\n}\nmodule.exports = plugin\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","value","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","e","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","_createSuperInternal","Super","result","NewTarget","arguments","apply","chars","split","makeId","str","text","Math","floor","random","_id","compact","a","b","c","d","f","g","h","I","j","k","l","m","n","q","r","s","t","u","v","w","x","y","z","unicode","keys","forEach","killUnicode","join","unicode_1","periodAcronym","oneLetterAcronym$1","noPeriodAcronym","lowerCaseAcronym","isAcronym$2","isAcronym","test","isAcronym_1$1","hasSlash$1","clean","toLowerCase","trim","original","replace","clean_1","reduced","reduce","startings","endings","hasSlash","hasApostrophe","hasAcronym","minusNumber","shortYear","parseTerm","pre","post","found","after","parsed","word","alias","parse$2","createCommonjsModule","fn","module","exports","_01Case","titleCase","upperCase","toUpperCase","toTitleCase","isUpperCase","isTitleCase","_02Punctuation$1","startQuote","endQuote","hasPost","punct","indexOf","hasPre","hasQuote","hasQuotation","hasComma","hasPeriod","hasExclamation","hasQuestionMark","hasEllipses","hasSemicolon","hasHyphen","hyphen","hasDash","hasContraction","implicit","addPunctuation","editDistance","strA","strB","aLength","bLength","limit","abs","matrix","_i","a_index","b_index","cost","min","_i2","shouldUpdate","fuzzyMatch","minLength","undefined","steps","max","relative","similarity","_fuzzy","wrapMatch","doesMatch","reg","index","id","anything","start","end","hasOwnProperty","soft","root","fuzzy","score","tag","tags","method","regex","fastOr","choices","operator","every","some","negative","_doesMatch","boring","doesMatch_1","isAcronym_1","isImplicit","isKnown","setRoot","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","_03Misc","hasSpace$1","textOut","options","showPre","showPost","before","normal","titlecase","ProperNoun","Acronym","lowercase","acronyms","whitespace","last","punctuation","abbreviations","Abbreviation","_04Text","boringTags","Auxiliary","Possessive","rankTags","term","tagSet","sort","lineage","isA","_bestTag","jsonDefault","offset","bestTag","json$1","json","assign","_05Json$1","methods$8","isClientSide","window","document","padEnd","width","toString","logTag","reason","console","log","logUntag","isArray$3","isArray","arr","titleCase$4","charAt","substr","fns$1","addTag","tagset","isVerbose","down","unTag","notA","addTags","add","lowerCase","titleCase$3","unTag$1","untagAll","unTag_1$1","canBe$2","canBe","enemies","canBe_1$1","tag_1","tagSafe$1","tagSafe","unTag_1","canBe_1","tag$1","Term","String","prev","next","set","clone","Term_1","terms","cache","pool","get","error","push","clone$1","isShallow","_this","buildFrom","newTerms","map","lastTerm","hasId","wantId","_terms","lastId","concat","wordCount","filter","fullSentence","len","_01Utils$1","trimEnd","text$1","isFirst","isLast","isFull","txt","_02Text","_03Change","endOfSentence","combinePost","match","addWhitespace$1","addWhitespace","beforeTerms","newTerm","stitchIn$1","stitchIn","lastBefore","lastNew","afterId","afterTerm","beforeId","unique$5","unique","list","appendPhrase","newPhrase","doc","toStretch","docs","parents","parent","shouldChange","append","hasSpace","main","unique$4","joinPhrase","starterId","prepend","shrinkAll","deleteLength","phrase","find","deletePhrase","_delete$1","append_1","prepend_1","_delete","replace$1","firstLength","tmp","splitOn","findIndex","slice","_04Insert","res","_05Json","lookAhead","regs","getAfter","all","lookBehind","getBefore","_06Lookahead","methods$7","failFast$1","failFast","optional","_02FailFast","_matchLogic","getGreedy","state","endReg","start_i","phrase_length","count","greedyTo","nextReg","isEndGreedy","greedy","tmpReg","doOrBlock","skipN","block","wasFound","cr","w_index","extra","foundBlock","keepGoing","doAndBlock","longest","allDidMatch","allWords","tryTerm","getGroup","term_index","name","groups","groupId","termId","group","tryHere","hasGroup","previousGroup","named","haveNeeds","remain","skipto","skipNum","_g","_skipNum","_g2","startAt","nextRegMatched","nextTerm","_g3","foundNeg","_03TryMatch","postProcess$1","postProcess","matches","atEnd","_ref","_04PostProcess","bySlashes","byParentheses","byWord","isBlock","isReg","cleanUp","parseBlocks","_final","_01ParseBlocks","hasMinMax","andSign","captureName","RegExp","titleCase$2","stripStart","stripEnd","stripBoth","parseToken","groupType","exec","Number","_02ParseToken","nameGroups","tokens","convert","current","token","doFastOrMode","shouldPack","oneOf","opts","_03PostProcess","isArray$2","byArray","blocks","fromDoc","ids","idBlocks","addOptions","syntax","input","matchSyntax","idLookup","blocklist","_loop","_t","foundAll","idLookup_1","matchAll","matchOne","_res","_res2","_01MatchAll","notMatch","ts","not$1","match_1","justOne","has","not","_this2","canBe$1","_this3","results","previous","can","Phrase","aliases$1","Phrase_1","Pool","words","remove","merge","stats","Pool_1","linkTerms","_linkTerms","initSplit","hasSomething","isAcronym$1","hasEllipse","newLine","hasLetter","startWhitespace","naiive_split","lines","isSentence","abbrevs","lastWord","splitSentences","sentences","chunks","splits","ws","_01Sentences","wordlike","isBoundary","naiiveSplit","isSlash","notWord","reg2","combineSlashes","splitHyphens","hyphens","whichDash","isArray$1","splitWords","carry","_02Words","fromText","phrases","_01Tokenizer","fromJSON","fromJSON_1","_version","entity","nouns$1","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","NickName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","verbs$1","Imperative","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","values","Value","Ordinal","Cardinal","Fraction","RomanNumeral","TextValue","NumericValue","Money","Percent","misc$1","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Timezone","Time","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","_color","unique$3","inferIsA","_isA","unique$2","inferNotA","_notA","inferLineage","_lineage","validate","inferTags","inference","addIn","build","_data","seq","cache$1","toAlphaCode","_o","fromCharCode","fromAlphaCode","_e","charCodeAt","encoding","symbols","nodes","symCount","syms","indexFromRef","toArray","_s","unpack","unpack_1$1","unpack_1$1$1","_o2","Array","efrtUnpack_min","misc","g8","vh1","q1","q2","q3","q4","her","his","their","themselves","your","our","my","its","fancy","lex","TextOrdinal","plural","toPlural","conj","conjugate","adjectives","hasCompound","addWords","wordsObj","multi","buildOut","lexicon","unpack_1","addIrregulars","nouns","irregulars","verbs","inf","forms","addIrregulars_1","plurals","addendum","alga","alumna","alumnus","analysis","antenna","appendix","avocado","axis","bacillus","barracks","beau","bus","cactus","chateau","child","circus","clothes","corpus","criterion","curriculum","database","deer","diagnosis","echo","embargo","epoch","foot","formula","fungus","genus","goose","halo","hippopotamus","larva","leaf","libretto","loaf","man","memorandum","modulus","mosquito","mouse","nebula","nucleus","octopus","opus","ovum","ox","parenthesis","person","phenomenon","prognosis","quiz","radius","referendum","rodeo","sex","shoe","sombrero","stimulus","stomach","syllabus","synopsis","tableau","thesis","thief","tooth","tornado","tuxedo","vertebra","mapping$1","prt","perf","pst","fut","pres","pluperf","conjugations","act","ache","age","aim","arise","babysit","ban","be","beat","become","begin","being","bend","bet","bind","bite","bleed","blow","boil","brake","breed","bring","broadcast","budget","burn","burst","buy","choose","cling","come","compete","creep","cut","deal","develop","die","dig","dive","draw","dream","drink","drive","drop","eat","edit","egg","fall","feed","feel","fight","flee","fling","fly","forbid","forget","forgive","free","freeze","give","go","grow","guide","hang","have","hear","hide","hit","hold","hurt","ice","imply","is","keep","kneel","know","lay","lead","leap","leave","lend","lie","light","loose","lose","make","mean","meet","miss","patrol","pay","prove","puke","put","quit","read","ride","reside","ring","rise","rub","run","say","seat","see","seek","sell","send","sew","shake","shave","shed","shine","shoot","show","shut","sing","sink","sit","ski","slay","sleep","slide","smash","sneak","speak","speed","spend","spill","spin","spit","spread","spring","stand","steal","stick","sting","stink","stream","strew","strike","suit","sware","swear","sweep","swim","swing","take","teach","tear","tell","think","thrive","tie","undergo","understand","upset","wait","wake","wear","weave","wed","weep","win","wind","withdraw","wring","write","full","conjugations_1","endsWith$1","repl","pr","pa","gr","ar","suffixes$1","posMap","doTransform","pos","checkSuffix","_01Suffixes","hasY","generic","_02Generic","conjugate$2","conjugate_1$1","do_rules$1","dont_rules$1","irregulars$5","nice","late","hard","inner","outer","far","worse","bad","good","big","large","transforms$2","to_superlative","toSuperlative","do_rules","dont_rules","irregulars$4","grey","gray","green","yellow","red","well","sad","transforms$1","to_comparative","toComparative","fns","conjugate$1","sup","comp","adjectives$2","suffixes","_rules$2","addE","trySuffix","pluralize","_rules$1","invertObj","invert","toSingular_1","rules","to","_transform","guessVerb","_guess","guessTense","three","two","one","toInfinitive$1","irregs","rule","toInfinitive_1$1","irregulars$3","_isVerbose","World","verbose","bool","wordObj","cleaned","addConjugations","addPlurals","taggers","compounds","postProcessors","JSON","parse","stringify","w2","World_1","_01Utils","from","addParent","reverse","doShallow","wordcount","_02Accessors","first","eq","firstTerms","firstTerm","lastTerms","termList","num","getGroups","allGroups","_groups$j","getOneName","_loop2","sentence","cacheRequired$1","cacheRequired","needTags","needWords","_cache","_cacheRequired","_failFast","_03Match","ifNo","lookAfter","lookBefore","befores","hasAfter","hasBefore","tagTerms","safe","tagList","_setTag","why","_04Tag","detachParent","sub","_this4","_this5","_05Loops","tokenize","buildTree","val","more","rest","fastLookup","everyTerm","_lookup","_06Lookup","isObject","lookup","isObj","byVal","lookUp","uncache","_07Cache","titleCase$1","replaceWith","keepTags","newPhrases","keepCase","tmpDoc","tagger","oldTags","_replace","_01Replace","_02Insert","makeNew","insertAfter","insertAt","insertBefore","arg","toRemove","shouldTrim","showFull","trimPre","trimPost","_01Text","termOffsets","elapsed","offsets","calcOffset","_offset","_02Json","jsonDefaults","setOptions","frequency","freq","already","data","_debug","reset","css","blue","magenta","cyan","black","logClientSide","cli","tagString","debug","topk","_topk","debug_1","out","_03Out","methods$6","alpha","left","right","byFreq","counts","sortSequential","order","alphabetical","seqNames","sequence","sequential","chron","chronological","unique$1","_01Sort","isPunct","quotes","methods$5","termArr","quotations","adverbs","_methods","defaults","emoji","contractions","parentheses","possessives","honorifics","mapping","medium","heavy","normalize","strip","contraction","expand","unwrap","possessive","_02Normalize","_03Split","foundEm","parts","splitAfter","splitBefore","segment","eachTerm","toCamelCase","_04Case","_05Whitespace","hyphenate","dehyphenate","deHyphenate","toQuotations","toQuotation","toParentheses","removed","increase","_06Join","postPunct","setContraction","suffix","contract","_07Contract","methods$4","methods$3","emojis","atmentions","atMentions","phoneNumbers","money","places","organizations","clauses","entities","yup","people","ignore","things","topics","_simple","underOver","tryMultiple","checkLexicon","foundWords","noPrefix","_01Lexicon","apostrophes","perSec","checkPunctuation","endChar","_02Punctuation","startsWith","romanNumeral","romanNumValid","checkRegex$1","checkRegex","_03Prefixes","Adj$1","Inf$1","Pres$1","Sing$1","Past$1","Exp","Actor$1","Noun$1","Last$1","endsWith","Adj","Inf","Pres","Sing","Past","Avb","Plrl","Vb","Last","suffixMap","ea","ia","ic","ly","oed","ued","xed","azy","eer","ped","ffy","ify","ing","ize","lar","mum","nes","nny","oid","ous","que","rol","sis","zes","amed","aped","ched","lked","nded","cted","dged","akis","cede","chuk","czyk","ects","ends","enko","ette","fies","fore","gate","gone","ices","ints","ines","ions","less","llen","made","nsen","oses","ould","sson","tage","teen","tion","tive","tors","vice","tized","urned","eased","ances","bound","ettes","fully","ishes","ities","marek","nssen","ology","ports","rough","tches","tieth","tures","wards","where","auskas","keeper","logist","teenth","opoulos","borough","sdottir","endRegexs","_char","knownSuffixes","_04Suffixes","emoticons","emojiReg","isCommaEmoji","raw","isEmoticon","tagEmoji","_05Emoji","lookups","_01Init","afterThisWord","it","there","because","but","who","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","markov","beforeThisPos","afterThisPos","afterKeys","beforeKeys","checkNeighbours","foundTag","_tag","_tag2","_foundTag","_tag3","_ret","_01Neighbours","hasNumber","checkCase","_02Case","hasPrefix","prefix","checkPrefix","stem","_03Stem","isPlural$3","isSingular$1","isPlural_1$2","isSingular","isPlural","noPlurals","notPlural","notSingular","checkPlural","_04Plurals","orgWords","maybeOrg","Comma","tagOrgs","_05Organizations","oneLetterAcronym","periodSeperated","oneLetterWord","A","checkAcronym","_06Acronyms","step","neighbours","fallbacks","_02Fallbacks","hasNegative","irregulars$2","wont","cant","cannot","dont","dun","doAint","noun","checkNegative","_01Negative","contraction$1","easy","ll","ve","re","checkApostrophe","_02Simple","irregulars$1","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","checkIrregulars","_03Irregulars","hasApostropheS","banList","that","hereThere","here","everywhere","isPossessive","twoTerm","isHas","checkPossessive","_04Possessive","hasPerfect","useDid","how","what","checkPerfect","_05PerfectTense","isRange","timeRange","checkRange","_06Ranges","french","qu","checkFrench","_07French","isNumber","isOrdinal","isTime","createPhrase","_03Contractions","hasWord","hasTag","miscCorrection","notIf","fixMisc","_unique","list$5","_01Misc","_ambig","adverbAdjective","personDate","personMonth","personAdjective","personVerb","personPlace","personNoun","dates","list$4","_02Dates","adjectives$1","list$3","_03Adjective","_04Noun","_05Adverb","_06Value","list$2","_07Verbs","list$1","_08Place","_09Org","months","_10People","allLists","lists","newM","enumerated","required","matches_1","hasEvery","chances","runner","allChances","worthIt","tryDoc","runner_1","corrections","_04Correction","_02Tagger","addMethod$a","addMethod","Doc","Abbreviations","_Doc","_super","stripPeriods","addPeriods","addMethod$9","Acronyms","addMethod$8","commas","conjunctions","condition","tooLong","Clauses","addMethod$7","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","addMethod$6","beforeLast","conjunction","hasOxford","Lists","items","hasOxfordComma","addOxfordComma","needsComma","removeOxfordComma","nounList","adjList","verbList","noPlural","hasPlural","hasPlural_1","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","getArticle","isPlural$2","_rules","endS","isPlural$1","isPlural_1$1","exceptions","he","she","they","we","toPossessive","toPossessive_1","parse$1","parse_1","methods$2","article","agree","an","adj","methods_1","addMethod$5","Nouns","keep_anaphora","open","close","addMethod$4","Parentheses","addMethod$3","Possessives","pairs","hasOpen","addMethod$2","Quotations","want","verb","toInfinitive_1","findNoun","vb","auxiliary","isPlural_1","toNegative","_inf","_inf2","toNegative_1","getSubject","behind","lastNoun","getSubject_1","parseVerb","adverb","particle","subject","adverbAfter","toBe","isI","isNegative","toBe_1","doModal","doModal_1","og","past","_infinitive","infinitive","space","conjugate_1","useParticiple$1","useParticiple","toParticiple","participle","_toParticiple","makeNeutral","methods$1","advb","toPastTense","toPresentTense","_this6","toFutureTense","_this7","_this8","toGerund","_this9","_this10","noAux","isPositive","isImperative","_this11","toPositive","addMethod$1","Verbs","negate","gerund","People","subclass","extend","addFn","Subset","methods","selections","aliases","untag","and","onlyIf","Doc_1","smallTagger","tiny","worldInstance","nlp","parseMatch","version","load","plugin","src","fromTemplate","tmpl","template","description","preProcess","findPivot","byClause","safeCuts","isIndependent","hardCuts","second","pop","lastTry","isGood","doSentence","pivot","safeCut","hardCut","like","dislike","require$$0","hasYear","fromCategory","cats","categories","cat","aWords","bWords","changeCat","byCategory","chooseCat","change","category","seemsGood","models","summary","fromSentence","copula"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-summary.js","sources":["../node_modules/compromise/builds/compromise.mjs","../src/template/index.js","../src/sentence/00-preProcess.js","../src/sentence/01-pivot.js","../src/sentence/02-byClause.js","../src/sentence/03-safeCuts.js","../src/sentence/04-hardCuts.js","../src/sentence/05-lastTry.js","../src/sentence/_isGood.js","../src/sentence/index.js","../src/category/regs.js","../src/category/01-choose.js","../src/category/02-change.js","../src/category/index.js","../src/index.js"],"sourcesContent":["/* compromise 13.10.5 MIT */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\n//this is a not-well-thought-out way to reduce our dependence on `object===object` stuff\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term\n\nfunction makeId(str) {\n str = str || '_';\n var text = str + '-';\n\n for (var i = 0; i < 7; i++) {\n text += chars[Math.floor(Math.random() * chars.length)];\n }\n\n return text;\n}\n\nvar _id = makeId;\n\n//a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii.\n//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n//http://en.wikipedia.org/wiki/List_of_Unicode_characters\n//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\nvar compact = {\n '!': '¡',\n '?': '¿Ɂ',\n '\"': '“”\"❝❞',\n \"'\": '‘‛❛❜',\n '-': '—–',\n a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ',\n b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ',\n d: 'ÐĎďĐđƉƊȡƋƌǷ',\n e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ',\n f: 'ƑƒϜϝӺӻҒғſ',\n g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n I: 'ÌÍÎÏ',\n i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії',\n j: 'ĴĵǰȷɈɉϳЈј',\n k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n m: 'ΜϺϻМмӍӎ',\n n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ',\n p: 'ƤƿΡρϷϸϼРрҎҏÞ',\n q: 'Ɋɋ',\n r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ',\n v: 'νѴѵѶѷ',\n w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ'\n}; //decompress data into two hashes\n\nvar unicode = {};\nObject.keys(compact).forEach(function (k) {\n compact[k].split('').forEach(function (s) {\n unicode[s] = k;\n });\n});\n\nvar killUnicode = function killUnicode(str) {\n var chars = str.split('');\n chars.forEach(function (s, i) {\n if (unicode[s]) {\n chars[i] = unicode[s];\n }\n });\n return chars.join('');\n};\n\nvar unicode_1 = killUnicode; // console.log(killUnicode('bjŏȒk—Ɏó'));\n\nvar periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/;\nvar oneLetterAcronym$1 = /^[A-Z]\\.,?$/;\nvar noPeriodAcronym = /[A-Z]{2,}('s|,)?$/;\nvar lowerCaseAcronym = /([a-z]\\.)+[a-z]\\.?$/;\n\nvar isAcronym$2 = function isAcronym(str) {\n //like N.D.A\n if (periodAcronym.test(str) === true) {\n return true;\n } //like c.e.o\n\n\n if (lowerCaseAcronym.test(str) === true) {\n return true;\n } //like 'F.'\n\n\n if (oneLetterAcronym$1.test(str) === true) {\n return true;\n } //like NDA\n\n\n if (noPeriodAcronym.test(str) === true) {\n return true;\n }\n\n return false;\n};\n\nvar isAcronym_1$1 = isAcronym$2;\n\nvar hasSlash$1 = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/;\n/** some basic operations on a string to reduce noise */\n\nvar clean = function clean(str) {\n str = str || '';\n str = str.toLowerCase();\n str = str.trim();\n var original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork\n\n str = unicode_1(str); //rough handling of slashes - 'see/saw'\n\n if (hasSlash$1.test(str) === true) {\n str = str.replace(/\\/.*/, '');\n } //#tags, @mentions\n\n\n str = str.replace(/^[#@]/, ''); //punctuation\n\n str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes\n\n str = str.replace(/[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]+/g, \"'\"); // coerce double curly quotes\n\n str = str.replace(/[\\u0022\\u00AB\\u00BB\\u201C\\u201D\\u201E\\u201F\\u2033\\u2034\\u2036\\u2037\\u2E42\\u301D\\u301E\\u301F\\uFF02]+/g, '\"'); //coerce Unicode ellipses\n\n str = str.replace(/\\u2026/g, '...'); //en-dash\n\n str = str.replace(/\\u2013/g, '-'); //lookin'->looking (make it easier for conjugation)\n\n str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment\n\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n str = str.replace('-', '');\n } //compact acronyms\n\n\n if (isAcronym_1$1(str)) {\n str = str.replace(/\\./g, '');\n } //strip leading & trailing grammatical punctuation\n\n\n if (/^[:;]/.test(str) === false) {\n str = str.replace(/\\.{3,}$/g, '');\n str = str.replace(/[\",\\.!:;\\?\\)]+$/g, '');\n str = str.replace(/^['\"\\(]+/g, '');\n } // remove zero-width characters\n\n\n str = str.replace(/[\\u200B-\\u200D\\uFEFF]/g, ''); //do this again..\n\n str = str.trim(); //oh shucks,\n\n if (str === '') {\n str = original;\n } //nice-numbers\n\n\n str = str.replace(/([0-9]),([0-9])/g, '$1$2');\n return str;\n};\n\nvar clean_1 = clean; // console.log(normalize('Dr. V Cooper'));\n\n/** reduced is one step further than clean */\nvar reduced = function reduced(str) {\n // remove apostrophes\n str = str.replace(/['’]s$/, '');\n str = str.replace(/s['’]$/, 's');\n return str;\n};\n\nvar reduce = reduced;\n\n//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n//we have slightly different rules for start/end - like #hashtags.\n\nvar startings = /^[ \\n\\t\\.\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u0027\\u201C\\u201F\\u201B\\u201E\\u2E42\\u201A\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/;\nvar endings = /[ \\n\\t\\.'\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u201D\\u00B4\\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\n\nvar hasSlash = /\\//;\nvar hasApostrophe = /['’]/;\nvar hasAcronym = /^[a-z]\\.([a-z]\\.)+/i;\nvar minusNumber = /^[-+\\.][0-9]/;\nvar shortYear = /^'[0-9]{2}/;\n/** turn given text into a parsed-up object\n * seperate the 'meat' of the word from the whitespace+punctuation\n */\n\nvar parseTerm = function parseTerm(str) {\n var original = str;\n var pre = '';\n var post = '';\n str = str.replace(startings, function (found) {\n pre = found; // support '-40'\n\n if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) {\n pre = '';\n return found;\n } // support years like '97\n\n\n if (pre === \"'\" && shortYear.test(str)) {\n pre = '';\n return found;\n }\n\n return '';\n });\n str = str.replace(endings, function (found) {\n post = found; // keep s-apostrophe - \"flanders'\" or \"chillin'\"\n\n if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) {\n post = post.replace(hasApostrophe, '');\n return \"'\";\n } //keep end-period in acronym\n\n\n if (hasAcronym.test(str) === true) {\n post = post.replace(/\\./, '');\n return '.';\n }\n\n return '';\n }); //we went too far..\n\n if (str === '') {\n // do a very mild parse, and hope for the best.\n original = original.replace(/ *$/, function (after) {\n post = after || '';\n return '';\n });\n str = original;\n pre = '';\n post = post;\n } // create the various forms of our text,\n\n\n var clean = clean_1(str);\n var parsed = {\n text: str,\n clean: clean,\n reduced: reduce(clean),\n pre: pre,\n post: post\n }; // support aliases for slashes\n\n if (hasSlash.test(str)) {\n str.split(hasSlash).forEach(function (word) {\n parsed.alias = parsed.alias || {};\n parsed.alias[word.trim()] = true;\n });\n }\n\n return parsed;\n};\n\nvar parse$2 = parseTerm;\n\nfunction createCommonjsModule(fn) {\n var module = { exports: {} };\n\treturn fn(module, module.exports), module.exports;\n}\n\nvar _01Case = createCommonjsModule(function (module, exports) {\n var titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\n var upperCase = /^[A-Z]+s?$/;\n /** convert all text to uppercase */\n\n exports.toUpperCase = function () {\n this.text = this.text.toUpperCase();\n return this;\n };\n /** convert all text to lowercase */\n\n\n exports.toLowerCase = function () {\n this.text = this.text.toLowerCase();\n return this;\n };\n /** only set the first letter to uppercase\n * leave any existing uppercase alone\n */\n\n\n exports.toTitleCase = function () {\n this.text = this.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, function (x) {\n return x.toUpperCase();\n }); //support unicode?\n\n return this;\n };\n /** if all letters are uppercase */\n\n\n exports.isUpperCase = function () {\n return upperCase.test(this.text);\n };\n /** if the first letter is uppercase, and the rest are lowercase */\n\n\n exports.isTitleCase = function () {\n return titleCase.test(this.text);\n };\n\n exports.titleCase = exports.isTitleCase;\n});\n\nvar _02Punctuation$1 = createCommonjsModule(function (module, exports) {\n // these methods are called with '@hasComma' in the match syntax\n // various unicode quotation-mark formats\n var startQuote = /(\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F)/;\n var endQuote = /(\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E)/;\n /** search the term's 'post' punctuation */\n\n exports.hasPost = function (punct) {\n return this.post.indexOf(punct) !== -1;\n };\n /** search the term's 'pre' punctuation */\n\n\n exports.hasPre = function (punct) {\n return this.pre.indexOf(punct) !== -1;\n };\n /** does it have a quotation symbol? */\n\n\n exports.hasQuote = function () {\n return startQuote.test(this.pre) || endQuote.test(this.post);\n };\n\n exports.hasQuotation = exports.hasQuote;\n /** does it have a comma? */\n\n exports.hasComma = function () {\n return this.hasPost(',');\n };\n /** does it end in a period? */\n\n\n exports.hasPeriod = function () {\n return this.hasPost('.') === true && this.hasPost('...') === false;\n };\n /** does it end in an exclamation */\n\n\n exports.hasExclamation = function () {\n return this.hasPost('!');\n };\n /** does it end with a question mark? */\n\n\n exports.hasQuestionMark = function () {\n return this.hasPost('?') || this.hasPost('¿');\n };\n /** is there a ... at the end? */\n\n\n exports.hasEllipses = function () {\n return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…');\n };\n /** is there a semicolon after this word? */\n\n\n exports.hasSemicolon = function () {\n return this.hasPost(';');\n };\n /** is there a slash '/' in this word? */\n\n\n exports.hasSlash = function () {\n return /\\//.test(this.text);\n };\n /** a hyphen connects two words like-this */\n\n\n exports.hasHyphen = function () {\n var hyphen = /^(-|–|—)$/;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** a dash separates words - like that */\n\n\n exports.hasDash = function () {\n var hyphen = / (-|–|—) /;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** is it multiple words combinded */\n\n\n exports.hasContraction = function () {\n return Boolean(this.implicit);\n };\n /** try to sensibly put this punctuation mark into the term */\n\n\n exports.addPunctuation = function (punct) {\n // dont add doubles\n if (punct === ',' || punct === ';') {\n this.post = this.post.replace(punct, '');\n }\n\n this.post = punct + this.post;\n return this;\n };\n});\n\n// fuzzy-match (damerau-levenshtein)\n// Based on tad-lispy /node-damerau-levenshtein\n// https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js\n// count steps (insertions, deletions, substitutions, or transpositions)\nvar editDistance = function editDistance(strA, strB) {\n var aLength = strA.length,\n bLength = strB.length; // fail-fast\n\n if (aLength === 0) {\n return bLength;\n }\n\n if (bLength === 0) {\n return aLength;\n } // If the limit is not defined it will be calculate from this and that args.\n\n\n var limit = (bLength > aLength ? bLength : aLength) + 1;\n\n if (Math.abs(aLength - bLength) > (limit || 100)) {\n return limit || 100;\n } // init the array\n\n\n var matrix = [];\n\n for (var i = 0; i < limit; i++) {\n matrix[i] = [i];\n matrix[i].length = limit;\n }\n\n for (var _i = 0; _i < limit; _i++) {\n matrix[0][_i] = _i;\n } // Calculate matrix.\n\n\n var j, a_index, b_index, cost, min, t;\n\n for (var _i2 = 1; _i2 <= aLength; ++_i2) {\n a_index = strA[_i2 - 1];\n\n for (j = 1; j <= bLength; ++j) {\n // Check the jagged distance total so far\n if (_i2 === j && matrix[_i2][j] > 4) {\n return aLength;\n }\n\n b_index = strB[j - 1];\n cost = a_index === b_index ? 0 : 1; // Step 5\n // Calculate the minimum (much faster than Math.min(...)).\n\n min = matrix[_i2 - 1][j] + 1; // Deletion.\n\n if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion.\n\n if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution.\n // Update matrix.\n\n var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min;\n\n if (shouldUpdate) {\n matrix[_i2][j] = t;\n } else {\n matrix[_i2][j] = min;\n }\n }\n } // return number of steps\n\n\n return matrix[aLength][bLength];\n}; // score similarity by from 0-1 (steps/length)\n\n\nvar fuzzyMatch = function fuzzyMatch(strA, strB) {\n var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n\n if (strA === strB) {\n return 1;\n } //don't even bother on tiny strings\n\n\n if (strA.length < minLength || strB.length < minLength) {\n return 0;\n }\n\n var steps = editDistance(strA, strB);\n var length = Math.max(strA.length, strB.length);\n var relative = length === 0 ? 0 : steps / length;\n var similarity = 1 - relative;\n return similarity;\n};\n\nvar _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match\n\nvar wrapMatch = function wrapMatch() {};\n/** ignore optional/greedy logic, straight-up term match*/\n\n\nvar doesMatch = function doesMatch(t, reg, index, length) {\n // support id matches\n if (reg.id === t.id) {\n return true;\n } // support '.'\n\n\n if (reg.anything === true) {\n return true;\n } // support '^' (in parentheses)\n\n\n if (reg.start === true && index !== 0) {\n return false;\n } // support '$' (in parentheses)\n\n\n if (reg.end === true && index !== length - 1) {\n return false;\n } //support a text match\n\n\n if (reg.word !== undefined) {\n //match contractions\n if (t.implicit !== null && t.implicit === reg.word) {\n return true;\n } // term aliases for slashes and things\n\n\n if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) {\n return true;\n } // support ~ match\n\n\n if (reg.soft === true && reg.word === t.root) {\n return true;\n } // support fuzzy match param\n\n\n if (reg.fuzzy !== undefined) {\n var score = _fuzzy(reg.word, t.reduced);\n\n if (score > reg.fuzzy) {\n return true;\n } // support fuzzy + soft match\n\n\n if (reg.soft === true) {\n score = _fuzzy(reg.word, t.root);\n\n if (score > reg.fuzzy) {\n return true;\n }\n }\n } //match either .clean or .text\n\n\n return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced;\n } //support #Tag\n\n\n if (reg.tag !== undefined) {\n return t.tags[reg.tag] === true;\n } //support @method\n\n\n if (reg.method !== undefined) {\n if (typeof t[reg.method] === 'function' && t[reg.method]() === true) {\n return true;\n }\n\n return false;\n } //support /reg/\n\n\n if (reg.regex !== undefined) {\n return reg.regex.test(t.clean);\n } // support optimized (one|two)\n\n\n if (reg.fastOr !== undefined) {\n if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) {\n return true;\n }\n\n return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text);\n } //support slower (one|two)\n\n\n if (reg.choices !== undefined) {\n // try to support && operator\n if (reg.operator === 'and') {\n // must match them all\n return reg.choices.every(function (r) {\n return wrapMatch(t, r, index, length);\n });\n } // or must match one\n\n\n return reg.choices.some(function (r) {\n return wrapMatch(t, r, index, length);\n });\n }\n\n return false;\n}; // wrap result for !negative match logic\n\n\nwrapMatch = function wrapMatch(t, reg, index, length) {\n var result = doesMatch(t, reg, index, length);\n\n if (reg.negative === true) {\n return !result;\n }\n\n return result;\n};\n\nvar _doesMatch = wrapMatch;\n\nvar boring = {};\n/** check a match object against this term */\n\nvar doesMatch_1 = function doesMatch_1(reg, index, length) {\n return _doesMatch(this, reg, index, length);\n};\n/** does this term look like an acronym? */\n\n\nvar isAcronym_1 = function isAcronym_1() {\n return isAcronym_1$1(this.text);\n};\n/** is this term implied by a contraction? */\n\n\nvar isImplicit = function isImplicit() {\n return this.text === '' && Boolean(this.implicit);\n};\n/** does the term have at least one good tag? */\n\n\nvar isKnown = function isKnown() {\n return Object.keys(this.tags).some(function (t) {\n return boring[t] !== true;\n });\n};\n/** cache the root property of the term */\n\n\nvar setRoot = function setRoot(world) {\n var transform = world.transforms;\n var str = this.implicit || this.clean;\n\n if (this.tags.Plural) {\n str = transform.toSingular(str, world);\n }\n\n if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) {\n var tense = null;\n\n if (this.tags.PastTense) {\n tense = 'PastTense';\n } else if (this.tags.Gerund) {\n tense = 'Gerund';\n } else if (this.tags.PresentTense) {\n tense = 'PresentTense';\n } else if (this.tags.Participle) {\n tense = 'Participle';\n } else if (this.tags.Actor) {\n tense = 'Actor';\n }\n\n str = transform.toInfinitive(str, world, tense);\n }\n\n this.root = str;\n};\n\nvar _03Misc = {\n doesMatch: doesMatch_1,\n isAcronym: isAcronym_1,\n isImplicit: isImplicit,\n isKnown: isKnown,\n setRoot: setRoot\n};\n\nvar hasSpace$1 = /[\\s-]/;\nvar isUpperCase = /^[A-Z-]+$/; // const titleCase = str => {\n// return str.charAt(0).toUpperCase() + str.substr(1)\n// }\n\n/** return various text formats of this term */\n\nvar textOut = function textOut(options, showPre, showPost) {\n options = options || {};\n var word = this.text;\n var before = this.pre;\n var after = this.post; // -word-\n\n if (options.reduced === true) {\n word = this.reduced || '';\n }\n\n if (options.root === true) {\n word = this.root || '';\n }\n\n if (options.implicit === true && this.implicit) {\n word = this.implicit || '';\n }\n\n if (options.normal === true) {\n word = this.clean || this.text || '';\n }\n\n if (options.root === true) {\n word = this.root || this.reduced || '';\n }\n\n if (options.unicode === true) {\n word = unicode_1(word);\n } // cleanup case\n\n\n if (options.titlecase === true) {\n if (this.tags.ProperNoun && !this.titleCase()) ; else if (this.tags.Acronym) {\n word = word.toUpperCase(); //uppercase acronyms\n } else if (isUpperCase.test(word) && !this.tags.Acronym) {\n // lowercase everything else\n word = word.toLowerCase();\n }\n }\n\n if (options.lowercase === true) {\n word = word.toLowerCase();\n } // remove the '.'s from 'F.B.I.' (safely)\n\n\n if (options.acronyms === true && this.tags.Acronym) {\n word = word.replace(/\\./g, '');\n } // -before/after-\n\n\n if (options.whitespace === true || options.root === true) {\n before = '';\n after = ' ';\n\n if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) {\n after = '';\n }\n }\n\n if (options.punctuation === true && !options.root) {\n //normalized end punctuation\n if (this.hasPost('.') === true) {\n after = '.' + after;\n } else if (this.hasPost('?') === true) {\n after = '?' + after;\n } else if (this.hasPost('!') === true) {\n after = '!' + after;\n } else if (this.hasPost(',') === true) {\n after = ',' + after;\n } else if (this.hasEllipses() === true) {\n after = '...' + after;\n }\n }\n\n if (showPre !== true) {\n before = '';\n }\n\n if (showPost !== true) {\n // let keep = after.match(/\\)/) || ''\n after = ''; //keep //after.replace(/[ .?!,]+/, '')\n } // remove the '.' from 'Mrs.' (safely)\n\n\n if (options.abbreviations === true && this.tags.Abbreviation) {\n after = after.replace(/^\\./, '');\n }\n\n return before + word + after;\n};\n\nvar _04Text = {\n textOut: textOut\n};\n\nvar boringTags = {\n Auxiliary: 1,\n Possessive: 1\n};\n/** a subjective ranking of tags kinda tfidf-based */\n\nvar rankTags = function rankTags(term, world) {\n var tags = Object.keys(term.tags);\n var tagSet = world.tags;\n tags = tags.sort(function (a, b) {\n //bury the tags we dont want\n if (boringTags[b] || !tagSet[b]) {\n return -1;\n } // unknown tags are interesting\n\n\n if (!tagSet[b]) {\n return 1;\n }\n\n if (!tagSet[a]) {\n return 0;\n } // then sort by #of parent tags (most-specific tags first)\n\n\n if (tagSet[a].lineage.length > tagSet[b].lineage.length) {\n return 1;\n }\n\n if (tagSet[a].isA.length > tagSet[b].isA.length) {\n return -1;\n }\n\n return 0;\n });\n return tags;\n};\n\nvar _bestTag = rankTags;\n\nvar jsonDefault = {\n text: true,\n tags: true,\n implicit: true,\n whitespace: true,\n clean: false,\n id: false,\n index: false,\n offset: false,\n bestTag: false\n};\n/** return various metadata for this term */\n\nvar json$1 = function json(options, world) {\n options = options || {};\n options = Object.assign({}, jsonDefault, options);\n var result = {}; // default on\n\n if (options.text) {\n result.text = this.text;\n }\n\n if (options.normal) {\n result.normal = this.clean;\n }\n\n if (options.tags) {\n result.tags = Object.keys(this.tags);\n } // default off\n\n\n if (options.clean) {\n result.clean = this.clean;\n }\n\n if (options.id || options.offset) {\n result.id = this.id;\n }\n\n if (options.implicit && this.implicit !== null) {\n result.implicit = this.implicit;\n }\n\n if (options.whitespace) {\n result.pre = this.pre;\n result.post = this.post;\n }\n\n if (options.bestTag) {\n result.bestTag = _bestTag(this, world)[0];\n }\n\n return result;\n};\n\nvar _05Json$1 = {\n json: json$1\n};\n\nvar methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1);\n\nfunction isClientSide() {\n return typeof window !== 'undefined' && window.document;\n}\n/** add spaces at the end */\n\n\nvar padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n};\n/** output for verbose-mode */\n\n\nvar logTag = function logTag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 15) + '\\x1b[0m + \\x1b[32m' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason + '';\n }\n\n console.log(log);\n};\n/** output for verbose mode */\n\n\nvar logUntag = function logUntag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 3) + ' \\x1b[31m - #' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason;\n }\n\n console.log(log);\n};\n\nvar isArray$3 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n\nvar titleCase$4 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar fns$1 = {\n logTag: logTag,\n logUntag: logUntag,\n isArray: isArray$3,\n titleCase: titleCase$4\n};\n\n/** add a tag, and its descendents, to a term */\n\nvar addTag = function addTag(t, tag, reason, world) {\n var tagset = world.tags; //support '.' or '-' notation for skipping the tag\n\n if (tag === '' || tag === '.' || tag === '-') {\n return;\n }\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n }\n\n tag = fns$1.titleCase(tag); //if we already got this one\n\n if (t.tags[tag] === true) {\n return;\n } // log it?\n\n\n var isVerbose = world.isVerbose();\n\n if (isVerbose === true) {\n fns$1.logTag(t, tag, reason);\n } //add tag\n\n\n t.tags[tag] = true; //whee!\n //check tagset for any additional things to do...\n\n if (tagset.hasOwnProperty(tag) === true) {\n //add parent Tags\n tagset[tag].isA.forEach(function (down) {\n t.tags[down] = true;\n\n if (isVerbose === true) {\n fns$1.logTag(t, '→ ' + down);\n }\n }); //remove any contrary tags\n\n t.unTag(tagset[tag].notA, '←', world);\n }\n};\n/** support an array of tags */\n\n\nvar addTags = function addTags(term, tags, reason, world) {\n if (typeof tags !== 'string') {\n for (var i = 0; i < tags.length; i++) {\n addTag(term, tags[i], reason, world);\n } // tags.forEach(tag => addTag(term, tag, reason, world))\n\n } else {\n addTag(term, tags, reason, world);\n }\n};\n\nvar add = addTags;\n\nvar lowerCase = /^[a-z]/;\n\nvar titleCase$3 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** remove this tag, and its descentents from the term */\n\n\nvar unTag$1 = function unTag(t, tag, reason, world) {\n var isVerbose = world.isVerbose(); //support '*' for removing all tags\n\n if (tag === '*') {\n t.tags = {};\n return t;\n }\n\n tag = tag.replace(/^#/, '');\n\n if (lowerCase.test(tag) === true) {\n tag = titleCase$3(tag);\n } // remove the tag\n\n\n if (t.tags[tag] === true) {\n delete t.tags[tag]; //log in verbose-mode\n\n if (isVerbose === true) {\n fns$1.logUntag(t, tag, reason);\n }\n } //delete downstream tags too\n\n\n var tagset = world.tags;\n\n if (tagset[tag]) {\n var lineage = tagset[tag].lineage;\n\n for (var i = 0; i < lineage.length; i++) {\n if (t.tags[lineage[i]] === true) {\n delete t.tags[lineage[i]];\n\n if (isVerbose === true) {\n fns$1.logUntag(t, ' - ' + lineage[i]);\n }\n }\n }\n }\n\n return t;\n}; //handle an array of tags\n\n\nvar untagAll = function untagAll(term, tags, reason, world) {\n if (typeof tags !== 'string' && tags) {\n for (var i = 0; i < tags.length; i++) {\n unTag$1(term, tags[i], reason, world);\n }\n\n return;\n }\n\n unTag$1(term, tags, reason, world);\n};\n\nvar unTag_1$1 = untagAll;\n\nvar canBe$2 = function canBe(term, tag, world) {\n var tagset = world.tags; // cleanup tag\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n } //fail-fast\n\n\n if (tagset[tag] === undefined) {\n return true;\n } //loop through tag's contradictory tags\n\n\n var enemies = tagset[tag].notA || [];\n\n for (var i = 0; i < enemies.length; i++) {\n if (term.tags[enemies[i]] === true) {\n return false;\n }\n }\n\n if (tagset[tag].isA !== undefined) {\n return canBe(term, tagset[tag].isA, world); //recursive\n }\n\n return true;\n};\n\nvar canBe_1$1 = canBe$2;\n\n/** add a tag or tags, and their descendents to this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\nvar tag_1 = function tag_1(tags, reason, world) {\n add(this, tags, reason, world);\n return this;\n};\n/** only tag this term if it's consistent with it's current tags */\n\n\nvar tagSafe$1 = function tagSafe(tags, reason, world) {\n if (canBe_1$1(this, tags, world)) {\n add(this, tags, reason, world);\n }\n\n return this;\n};\n/** remove a tag or tags, and their descendents from this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\n\nvar unTag_1 = function unTag_1(tags, reason, world) {\n unTag_1$1(this, tags, reason, world);\n return this;\n};\n/** is this tag consistent with the word's current tags?\n * @param {string | string[]} tags - a tag or tags\n * @returns {boolean}\n */\n\n\nvar canBe_1 = function canBe_1(tags, world) {\n return canBe_1$1(this, tags, world);\n};\n\nvar tag$1 = {\n tag: tag_1,\n tagSafe: tagSafe$1,\n unTag: unTag_1,\n canBe: canBe_1\n};\n\nvar Term = /*#__PURE__*/function () {\n function Term() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n _classCallCheck(this, Term);\n\n text = String(text);\n var obj = parse$2(text); // the various forms of our text\n\n this.text = obj.text || '';\n this.clean = obj.clean;\n this.reduced = obj.reduced;\n this.root = null;\n this.implicit = null;\n this.pre = obj.pre || '';\n this.post = obj.post || '';\n this.tags = {};\n this.prev = null;\n this.next = null;\n this.id = _id(obj.clean);\n this.isA = 'Term'; // easier than .constructor...\n // support alternative matches\n\n if (obj.alias) {\n this.alias = obj.alias;\n }\n }\n /** set the text of the Term to something else*/\n\n\n _createClass(Term, [{\n key: \"set\",\n value: function set(str) {\n var obj = parse$2(str);\n this.text = obj.text;\n this.clean = obj.clean;\n return this;\n }\n }]);\n\n return Term;\n}();\n/** create a deep-copy of this term */\n\n\nTerm.prototype.clone = function () {\n var term = new Term(this.text);\n term.pre = this.pre;\n term.post = this.post;\n term.clean = this.clean;\n term.reduced = this.reduced;\n term.root = this.root;\n term.implicit = this.implicit;\n term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc)\n // term.id = this.id\n\n return term;\n};\n\nObject.assign(Term.prototype, methods$8);\nObject.assign(Term.prototype, tag$1);\nvar Term_1 = Term;\n\n/** return a flat array of Term objects */\nvar terms = function terms(n) {\n if (this.length === 0) {\n return [];\n } // use cache, if it exists\n\n\n if (this.cache.terms) {\n if (n !== undefined) {\n return this.cache.terms[n];\n }\n\n return this.cache.terms;\n }\n\n var terms = [this.pool.get(this.start)];\n\n for (var i = 0; i < this.length - 1; i += 1) {\n var id = terms[terms.length - 1].next;\n\n if (id === null) {\n // throw new Error('linked-list broken')\n console.error(\"Compromise error: Linked list broken in phrase '\" + this.start + \"'\");\n break;\n }\n\n var term = this.pool.get(id);\n terms.push(term); //return this one?\n\n if (n !== undefined && n === i) {\n return terms[n];\n }\n }\n\n if (n === undefined) {\n this.cache.terms = terms;\n }\n\n if (n !== undefined) {\n return terms[n];\n }\n\n return terms;\n};\n/** return a shallow or deep copy of this phrase */\n\n\nvar clone$1 = function clone(isShallow) {\n var _this = this;\n\n if (isShallow) {\n var p = this.buildFrom(this.start, this.length);\n p.cache = this.cache;\n return p;\n } //how do we clone part of the pool?\n\n\n var terms = this.terms();\n var newTerms = terms.map(function (t) {\n return t.clone();\n }); // console.log(newTerms)\n //connect these new ids up\n\n newTerms.forEach(function (t, i) {\n //add it to the pool..\n _this.pool.add(t);\n\n if (newTerms[i + 1]) {\n t.next = newTerms[i + 1].id;\n }\n\n if (newTerms[i - 1]) {\n t.prev = newTerms[i - 1].id;\n }\n });\n return this.buildFrom(newTerms[0].id, newTerms.length);\n};\n/** return last term object */\n\n\nvar lastTerm = function lastTerm() {\n var terms = this.terms();\n return terms[terms.length - 1];\n};\n/** quick lookup for a term id */\n\n\nvar hasId = function hasId(wantId) {\n if (this.length === 0 || !wantId) {\n return false;\n }\n\n if (this.start === wantId) {\n return true;\n } // use cache, if available\n\n\n if (this.cache.terms) {\n var _terms = this.cache.terms;\n\n for (var i = 0; i < _terms.length; i++) {\n if (_terms[i].id === wantId) {\n return true;\n }\n }\n\n return false;\n } // otherwise, go through each term\n\n\n var lastId = this.start;\n\n for (var _i = 0; _i < this.length - 1; _i += 1) {\n var term = this.pool.get(lastId);\n\n if (term === undefined) {\n console.error(\"Compromise error: Linked list broken. Missing term '\".concat(lastId, \"' in phrase '\").concat(this.start, \"'\\n\")); // throw new Error('linked List error')\n\n return false;\n }\n\n if (term.next === wantId) {\n return true;\n }\n\n lastId = term.next;\n }\n\n return false;\n};\n/** how many seperate, non-empty words is it? */\n\n\nvar wordCount = function wordCount() {\n return this.terms().filter(function (t) {\n return t.text !== '';\n }).length;\n};\n/** get the full-sentence this phrase belongs to */\n\n\nvar fullSentence = function fullSentence() {\n var t = this.terms(0); //find first term in sentence\n\n while (t.prev) {\n t = this.pool.get(t.prev);\n }\n\n var start = t.id;\n var len = 1; //go to end of sentence\n\n while (t.next) {\n t = this.pool.get(t.next);\n len += 1;\n }\n\n return this.buildFrom(start, len);\n};\n\nvar _01Utils$1 = {\n terms: terms,\n clone: clone$1,\n lastTerm: lastTerm,\n hasId: hasId,\n wordCount: wordCount,\n fullSentence: fullSentence\n};\n\nvar trimEnd = function trimEnd(str) {\n return str.replace(/ +$/, '');\n};\n/** produce output in the given format */\n\n\nvar text$1 = function text() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var isFirst = arguments.length > 1 ? arguments[1] : undefined;\n var isLast = arguments.length > 2 ? arguments[2] : undefined;\n\n if (typeof options === 'string') {\n if (options === 'normal') {\n options = {\n whitespace: true,\n unicode: true,\n lowercase: true,\n punctuation: true,\n acronyms: true,\n abbreviations: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'clean') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'reduced') {\n options = {\n punctuation: false,\n //Hmm: is this reversed?\n titlecase: false,\n lowercase: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: true\n };\n } else if (options === 'implicit') {\n options = {\n punctuation: true,\n implicit: true,\n whitespace: true,\n trim: true\n };\n } else if (options === 'root') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n root: true\n };\n } else {\n options = {};\n }\n }\n\n var terms = this.terms(); //this this phrase a complete sentence?\n\n var isFull = false;\n\n if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) {\n isFull = true;\n }\n\n var text = terms.reduce(function (str, t, i) {\n // don't output intro space for a contraction-match i'm good => \"[am] good\"\n if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) {\n return str;\n }\n\n options.last = isLast && i === terms.length - 1;\n var showPre = true;\n var showPost = true;\n\n if (isFull === false) {\n // dont show beginning whitespace\n if (i === 0 && isFirst) {\n showPre = false;\n } // dont show end-whitespace\n\n\n if (i === terms.length - 1 && isLast) {\n showPost = false;\n }\n }\n\n var txt = t.textOut(options, showPre, showPost); // console.log(terms)\n // if (options.titlecase && i === 0) {\n // txt = titleCase(txt)\n // }\n\n return str + txt;\n }, ''); //full-phrases show punctuation, but not whitespace\n\n if (isFull === true && isLast) {\n text = trimEnd(text);\n }\n\n if (options.trim === true) {\n text = text.trim();\n }\n\n return text;\n};\n\nvar _02Text = {\n text: text$1\n};\n\n/** remove start and end whitespace */\nvar trim = function trim() {\n var terms = this.terms();\n\n if (terms.length > 0) {\n //trim starting\n terms[0].pre = terms[0].pre.replace(/^\\s+/, ''); //trim ending\n\n var lastTerm = terms[terms.length - 1];\n lastTerm.post = lastTerm.post.replace(/\\s+$/, '');\n }\n\n return this;\n};\n\nvar _03Change = {\n trim: trim\n};\n\nvar endOfSentence = /[.?!]\\s*$/; // replacing a 'word.' with a 'word!'\n\nvar combinePost = function combinePost(before, after) {\n //only transfer the whitespace\n if (endOfSentence.test(after)) {\n var whitespace = before.match(/\\s*$/);\n return after + whitespace;\n }\n\n return before;\n}; //add whitespace to the start of the second bit\n\n\nvar addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) {\n // add any existing pre-whitespace to beginning\n newTerms[0].pre = beforeTerms[0].pre;\n var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms\n\n var newTerm = newTerms[newTerms.length - 1];\n newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation\n\n lastTerm.post = ''; //before ←[space] - after\n\n if (lastTerm.post === '') {\n lastTerm.post += ' ';\n }\n}; //insert this segment into the linked-list\n\n\nvar stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) {\n var lastBefore = beforeTerms[beforeTerms.length - 1];\n var lastNew = newTerms[newTerms.length - 1];\n var afterId = lastBefore.next; //connect ours in (main → newPhrase)\n\n lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after)\n\n lastNew.next = afterId; //do it backwards, too\n\n if (afterId) {\n // newPhrase ← after\n var afterTerm = pool.get(afterId);\n afterTerm.prev = lastNew.id;\n } // before ← newPhrase\n\n\n var beforeId = beforeTerms[0].id;\n\n if (beforeId) {\n var newTerm = newTerms[0];\n newTerm.prev = beforeId;\n }\n}; // avoid stretching a phrase twice.\n\n\nvar unique$5 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another.\n\n\nvar appendPhrase = function appendPhrase(before, newPhrase, doc) {\n var beforeTerms = before.terms();\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list\n\n stitchIn$1(beforeTerms, newTerms, before.pool); // stretch!\n // make each effected phrase longer\n\n var toStretch = [before];\n var hasId = before.start;\n var docs = [doc];\n docs = docs.concat(doc.parents()); // find them all!\n\n docs.forEach(function (parent) {\n // only the phrases that should change\n var shouldChange = parent.list.filter(function (p) {\n return p.hasId(hasId);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count a phrase\n\n toStretch = unique$5(toStretch);\n toStretch.forEach(function (p) {\n p.length += newPhrase.length;\n });\n before.cache = {};\n return before;\n};\n\nvar append = appendPhrase;\n\nvar hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one\n// '[new] [◻old]' -or- '[old] [◻new] [old]'\n\nvar addWhitespace = function addWhitespace(newTerms) {\n //add a space before our new text?\n // add a space after our text\n var lastTerm = newTerms[newTerms.length - 1];\n\n if (hasSpace.test(lastTerm.post) === false) {\n lastTerm.post += ' ';\n }\n\n return;\n}; //insert this segment into the linked-list\n\n\nvar stitchIn = function stitchIn(main, newPhrase, newTerms) {\n // [newPhrase] → [main]\n var lastTerm = newTerms[newTerms.length - 1];\n lastTerm.next = main.start; // [before] → [main]\n\n var pool = main.pool;\n var start = pool.get(main.start);\n\n if (start.prev) {\n var before = pool.get(start.prev);\n before.next = newPhrase.start;\n } //do it backwards, too\n // before ← newPhrase\n\n\n newTerms[0].prev = main.terms(0).prev; // newPhrase ← main\n\n main.terms(0).prev = lastTerm.id;\n};\n\nvar unique$4 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another\n\n\nvar joinPhrase = function joinPhrase(original, newPhrase, doc) {\n var starterId = original.start;\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace(newTerms); //insert this segment into the linked-list\n\n stitchIn(original, newPhrase, newTerms); //increase the length of our phrases\n\n var toStretch = [original];\n var docs = [doc];\n docs = docs.concat(doc.parents());\n docs.forEach(function (d) {\n // only the phrases that should change\n var shouldChange = d.list.filter(function (p) {\n return p.hasId(starterId) || p.hasId(newPhrase.start);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count\n\n toStretch = unique$4(toStretch); // stretch these phrases\n\n toStretch.forEach(function (p) {\n p.length += newPhrase.length; // change the start too, if necessary\n\n if (p.start === starterId) {\n p.start = newPhrase.start;\n }\n\n p.cache = {};\n });\n return original;\n};\n\nvar prepend = joinPhrase;\n\n//recursively decrease the length of all the parent phrases\nvar shrinkAll = function shrinkAll(doc, id, deleteLength, after) {\n var arr = doc.parents();\n arr.push(doc);\n arr.forEach(function (d) {\n //find our phrase to shrink\n var phrase = d.list.find(function (p) {\n return p.hasId(id);\n });\n\n if (!phrase) {\n return;\n }\n\n phrase.length -= deleteLength; // does it start with this soon-removed word?\n\n if (phrase.start === id) {\n phrase.start = after.id;\n }\n\n phrase.cache = {};\n }); // cleanup empty phrase objects\n\n doc.list = doc.list.filter(function (p) {\n if (!p.start || !p.length) {\n return false;\n }\n\n return true;\n });\n};\n/** wrap the linked-list around these terms\n * so they don't appear any more\n */\n\n\nvar deletePhrase = function deletePhrase(phrase, doc) {\n var pool = doc.pool();\n var terms = phrase.terms(); //grab both sides of the chain,\n\n var prev = pool.get(terms[0].prev) || {};\n var after = pool.get(terms[terms.length - 1].next) || {};\n\n if (terms[0].implicit && prev.implicit) {\n prev.set(prev.implicit);\n prev.post += ' ';\n } // //first, change phrase lengths\n\n\n shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after]\n\n if (prev) {\n prev.next = after.id;\n } // connect [prev]<-[after]\n\n\n if (after) {\n after.prev = prev.id;\n } // lastly, actually delete the terms from the pool?\n // for (let i = 0; i < terms.length; i++) {\n // pool.remove(terms[i].id)\n // }\n\n};\n\nvar _delete$1 = deletePhrase;\n\n/** put this text at the end */\n\nvar append_1 = function append_1(newPhrase, doc) {\n append(this, newPhrase, doc);\n return this;\n};\n/** add this text to the beginning */\n\n\nvar prepend_1 = function prepend_1(newPhrase, doc) {\n prepend(this, newPhrase, doc);\n return this;\n};\n\nvar _delete = function _delete(doc) {\n _delete$1(this, doc);\n return this;\n}; // stich-in newPhrase, stretch 'doc' + parents\n\n\nvar replace$1 = function replace(newPhrase, doc) {\n //add it do the end\n var firstLength = this.length;\n append(this, newPhrase, doc); //delete original terms\n\n var tmp = this.buildFrom(this.start, this.length);\n tmp.length = firstLength;\n _delete$1(tmp, doc);\n};\n/**\n * Turn this phrase object into 3 phrase objects\n */\n\n\nvar splitOn = function splitOn(p) {\n var terms = this.terms();\n var result = {\n before: null,\n match: null,\n after: null\n };\n var index = terms.findIndex(function (t) {\n return t.id === p.start;\n });\n\n if (index === -1) {\n return result;\n } //make all three sections into phrase-objects\n\n\n var start = terms.slice(0, index);\n\n if (start.length > 0) {\n result.before = this.buildFrom(start[0].id, start.length);\n }\n\n var match = terms.slice(index, index + p.length);\n\n if (match.length > 0) {\n result.match = this.buildFrom(match[0].id, match.length);\n }\n\n var end = terms.slice(index + p.length, terms.length);\n\n if (end.length > 0) {\n result.after = this.buildFrom(end[0].id, end.length, this.pool);\n }\n\n return result;\n};\n\nvar _04Insert = {\n append: append_1,\n prepend: prepend_1,\n \"delete\": _delete,\n replace: replace$1,\n splitOn: splitOn\n};\n\n/** return json metadata for this phrase */\nvar json = function json() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var res = {}; // text data\n\n if (options.text) {\n res.text = this.text();\n }\n\n if (options.normal) {\n res.normal = this.text('normal');\n }\n\n if (options.clean) {\n res.clean = this.text('clean');\n }\n\n if (options.reduced) {\n res.reduced = this.text('reduced');\n }\n\n if (options.implicit) {\n res.implicit = this.text('implicit');\n }\n\n if (options.root) {\n res.root = this.text('root');\n }\n\n if (options.trim) {\n if (res.text) {\n res.text = res.text.trim();\n }\n\n if (res.normal) {\n res.normal = res.normal.trim();\n }\n\n if (res.reduced) {\n res.reduced = res.reduced.trim();\n }\n } // terms data\n\n\n if (options.terms) {\n if (options.terms === true) {\n options.terms = {};\n }\n\n res.terms = this.terms().map(function (t) {\n return t.json(options.terms, world);\n });\n }\n\n return res;\n};\n\nvar _05Json = {\n json: json\n};\n\n/** match any terms after this phrase */\nvar lookAhead = function lookAhead(regs) {\n // if empty match string, return everything after\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getAfter = function getAfter(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getAfter(term.next); //recursion\n }\n };\n\n var all = this.terms();\n var lastTerm = all[all.length - 1];\n getAfter(lastTerm.next);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[0].id, terms.length);\n return p.match(regs);\n};\n/** match any terms before this phrase */\n\n\nvar lookBehind = function lookBehind(regs) {\n // if empty match string, return everything before\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getBefore = function getBefore(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getBefore(term.prev); //recursion\n }\n };\n\n var term = pool.get(this.start);\n getBefore(term.prev);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[terms.length - 1].id, terms.length);\n return p.match(regs);\n};\n\nvar _06Lookahead = {\n lookAhead: lookAhead,\n lookBehind: lookBehind\n};\n\nvar methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead);\n\n// try to avoid doing the match\nvar failFast$1 = function failFast(p, regs) {\n if (regs.length === 0) {\n return true;\n }\n\n for (var i = 0; i < regs.length; i += 1) {\n var reg = regs[i]; //logical quick-ones\n\n if (reg.optional !== true && reg.negative !== true) {\n //start/end impossibilites\n if (reg.start === true && i > 0) {\n return true;\n }\n } //this is not possible\n\n\n if (reg.anything === true && reg.negative === true) {\n return true;\n }\n }\n\n return false;\n};\n\nvar _02FailFast = failFast$1;\n\nvar _matchLogic = createCommonjsModule(function (module, exports) {\n //found a match? it's greedy? keep going!\n exports.getGreedy = function (state, endReg) {\n // for greedy checking, we no longer care about the reg.start\n // value, and leaving it can cause failures for anchored greedy\n // matches. ditto for end-greedy matches: we need an earlier non-\n // ending match to succceed until we get to the actual end.\n var reg = Object.assign({}, state.regs[state.r], {\n start: false,\n end: false\n });\n var start = state.t;\n\n for (; state.t < state.terms.length; state.t += 1) {\n //stop for next-reg match\n if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) {\n return state.t;\n }\n\n var count = state.t - start + 1; // is it max-length now?\n\n if (reg.max !== undefined && count === reg.max) {\n return state.t;\n } //stop here\n\n\n if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null;\n }\n\n return state.t;\n }\n }\n\n return state.t;\n }; //'unspecific greedy' is a weird situation.\n\n\n exports.greedyTo = function (state, nextReg) {\n var t = state.t; //if there's no next one, just go off the end!\n\n if (!nextReg) {\n return state.terms.length;\n } //otherwise, we're looking for the next one\n\n\n for (; t < state.terms.length; t += 1) {\n if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) {\n return t;\n }\n } //guess it doesn't exist, then.\n\n\n return null;\n }; //we have a special case where an end-anchored greedy match may need to\n //start matching before the actual end; we do this by (temporarily!)\n //removing the \"end\" property from the matching token... since this is\n //very situation-specific, we *only* do this when we really need to.\n\n\n exports.isEndGreedy = function (reg, state) {\n if (reg.end === true && reg.greedy === true) {\n if (state.start_i + state.t < state.phrase_length - 1) {\n var tmpReg = Object.assign({}, reg, {\n end: false\n });\n\n if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) {\n return true;\n }\n }\n }\n\n return false;\n }; // match complex OR cases like (a|b|foo bar)\n\n\n exports.doOrBlock = function (state) {\n var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var block = state.regs[state.r];\n var wasFound = false; // do each multiword sequence\n\n for (var c = 0; c < block.choices.length; c += 1) {\n // try to match this list of tokens\n var regs = block.choices[c];\n wasFound = regs.every(function (cr, w_index) {\n var extra = 0;\n var t = state.t + w_index + skipN + extra;\n\n if (state.terms[t] === undefined) {\n return false;\n }\n\n var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)'\n\n if (foundBlock === true && cr.greedy === true) {\n for (var i = 1; i < state.terms.length; i += 1) {\n var term = state.terms[t + i];\n\n if (term) {\n var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length);\n\n if (keepGoing === true) {\n extra += 1;\n } else {\n break;\n }\n }\n }\n }\n\n skipN += extra;\n return foundBlock;\n });\n\n if (wasFound) {\n skipN += regs.length;\n break;\n }\n } // we found a match - is it greedy though?\n\n\n if (wasFound && block.greedy === true) {\n return exports.doOrBlock(state, skipN); // try it again!\n }\n\n return skipN;\n }; // match AND cases like (#Noun && foo)\n\n\n exports.doAndBlock = function (state) {\n var longest = 0; // all blocks must match, and we return the greediest match\n\n var reg = state.regs[state.r];\n var allDidMatch = reg.choices.every(function (block) {\n // for multi-word blocks, all must match\n var allWords = block.every(function (cr, w_index) {\n var tryTerm = state.t + w_index;\n\n if (state.terms[tryTerm] === undefined) {\n return false;\n }\n\n return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length);\n });\n\n if (allWords === true && block.length > longest) {\n longest = block.length;\n }\n\n return allWords;\n });\n\n if (allDidMatch === true) {\n return longest;\n }\n\n return false;\n }; // get or create named group\n\n\n exports.getGroup = function (state, term_index, name) {\n if (state.groups[state.groupId]) {\n return state.groups[state.groupId];\n }\n\n var termId = state.terms[term_index].id;\n state.groups[state.groupId] = {\n group: String(name),\n start: termId,\n length: 0\n };\n return state.groups[state.groupId];\n };\n});\n\n/** tries to match a sequence of terms, starting from here */\n\nvar tryHere = function tryHere(terms, regs, start_i, phrase_length) {\n // all the variables that matter\n var state = {\n t: 0,\n //the term index we're on\n terms: terms,\n //the working slice of term objects\n r: 0,\n // the reg index we're on\n regs: regs,\n //our match conditions\n groups: {},\n //all named-group matches\n start_i: start_i,\n // term index we're starting from\n phrase_length: phrase_length,\n // # of terms in the sentence\n hasGroup: false,\n groupId: null,\n previousGroup: null\n }; // we must satisfy each rule in 'regs'\n\n for (; state.r < regs.length; state.r += 1) {\n var reg = regs[state.r]; // Check if this reg has a named capture group\n\n state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same\n\n if (state.hasGroup === true) {\n var prev = regs[state.r - 1];\n\n if (prev && prev.named === reg.named && state.previousGroup) {\n state.groupId = state.previousGroup;\n } else {\n state.groupId = _id(reg.named);\n state.previousGroup = state.groupId;\n }\n } //have we run-out of terms?\n\n\n if (!state.terms[state.t]) {\n //are all remaining regs optional or negative?\n var haveNeeds = regs.slice(state.r).some(function (remain) {\n return !remain.optional;\n });\n\n if (haveNeeds === false) {\n break; //done!\n }\n\n return null; // die\n } //support 'unspecific greedy' .* properly\n\n\n if (reg.anything === true && reg.greedy === true) {\n var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough\n\n if (reg.min !== undefined && skipto - state.t < reg.min) {\n return null;\n } // reduce it back, if it's too long\n\n\n if (reg.max !== undefined && skipto - state.t > reg.max) {\n state.t = state.t + reg.max;\n continue;\n }\n\n if (skipto === null) {\n return null; //couldn't find it\n } // is it really this easy?....\n\n\n if (state.hasGroup === true) {\n var g = _matchLogic.getGroup(state, state.t, reg.named);\n g.length = skipto - state.t;\n }\n\n state.t = skipto;\n continue;\n } // support multi-word OR (a|b|foo bar)\n\n\n if (reg.choices !== undefined && reg.operator === 'or') {\n var skipNum = _matchLogic.doOrBlock(state);\n\n if (skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g.length += skipNum;\n }\n\n state.t += skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // support AND (#Noun && foo) blocks\n\n\n if (reg.choices !== undefined && reg.operator === 'and') {\n var _skipNum = _matchLogic.doAndBlock(state);\n\n if (_skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g2 = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g2.length += _skipNum;\n }\n\n state.t += _skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // ok, finally test the term/reg\n\n\n var term = state.terms[state.t];\n var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length);\n\n if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) {\n var startAt = state.t; // if it's a negative optional match... :0\n\n if (reg.optional && regs[state.r + 1] && reg.negative) {\n continue;\n } // okay, it was a match, but if it's optional too,\n // we should check the next reg too, to skip it?\n\n\n if (reg.optional && regs[state.r + 1]) {\n // does the next reg match it too?\n var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length);\n\n if (reg.negative || nextRegMatched) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n var nextTerm = state.terms[state.t + 1];\n\n if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) {\n state.r += 1;\n }\n }\n } //advance to the next term!\n\n\n state.t += 1; //check any ending '$' flags\n\n if (reg.end === true) {\n //if this isn't the last term, refuse the match\n if (state.t !== state.terms.length && reg.greedy !== true) {\n return null; //die\n }\n } //try keep it going!\n\n\n if (reg.greedy === true) {\n state.t = _matchLogic.getGreedy(state, regs[state.r + 1]);\n\n if (state.t === null) {\n return null; //greedy was too short\n }\n\n if (reg.min && reg.min > state.t) {\n return null; //greedy was too short\n } // if this was also an end-anchor match, check to see we really\n // reached the end\n\n\n if (reg.end === true && state.start_i + state.t !== phrase_length) {\n return null; //greedy didn't reach the end\n }\n }\n\n if (state.hasGroup === true) {\n // Get or create capture group\n var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length\n\n\n if (state.t > 1 && reg.greedy) {\n _g3.length += state.t - startAt;\n } else {\n _g3.length++;\n }\n }\n\n continue;\n } // ok, it doesn't match.\n // did it *actually match* a negative?\n\n\n if (reg.negative) {\n var tmpReg = Object.assign({}, reg);\n tmpReg.negative = false; // try removing it\n\n var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length);\n\n if (foundNeg === true) {\n return null; //bye!\n }\n } //bah, who cares, keep going\n\n\n if (reg.optional === true) {\n continue;\n } // should we skip-over an implicit word?\n\n\n if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) {\n // if the last match was implicit too, we're missing a word.\n if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) {\n return null;\n } // does the next one match?\n\n\n if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) {\n state.t += 2;\n continue;\n }\n }\n\n return null; //die\n } //return our result\n\n\n return {\n match: state.terms.slice(0, state.t),\n groups: state.groups\n };\n};\n\nvar _03TryMatch = tryHere;\n\n// final checks on the validity of our results\nvar postProcess$1 = function postProcess(terms, regs, matches) {\n if (!matches || matches.length === 0) {\n return matches;\n } // ensure end reg has the end term\n\n\n var atEnd = regs.some(function (r) {\n return r.end;\n });\n\n if (atEnd) {\n var lastTerm = terms[terms.length - 1];\n matches = matches.filter(function (_ref) {\n var arr = _ref.match;\n return arr.indexOf(lastTerm) !== -1;\n });\n }\n\n return matches;\n};\n\nvar _04PostProcess = postProcess$1;\n\n// supported suffix-flags:\n// suffixes: ? ] + * $ {2,6} ~\n// [\\?\\]\\+\\*\\$~]*\n// prefixes: ! [ ^\n// [\\!\\[\\^]*\n// match 'foo /yes/' and not 'foo/no/bar'\nvar bySlashes = /(?:^|\\s)([\\!\\[\\^]*(?:<[^<]*>)?\\/.*?[^\\\\\\/]\\/[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // match '(yes) but not foo(no)bar'\n\nvar byParentheses = /([\\!\\[\\^]*(?:<[^<]*>)?\\([^\\)]+[^\\\\\\)]\\)[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // okay\n\nvar byWord = / /g;\n\nvar isBlock = function isBlock(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\(/.test(str) && /\\)[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar isReg = function isReg(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\//.test(str) && /\\/[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar cleanUp = function cleanUp(arr) {\n arr = arr.map(function (str) {\n return str.trim();\n });\n arr = arr.filter(function (str) {\n return str;\n });\n return arr;\n};\n\nvar parseBlocks = function parseBlocks(txt) {\n // parse by /regex/ first\n var arr = txt.split(bySlashes);\n var res = []; // parse by (blocks), next\n\n arr.forEach(function (str) {\n if (isReg(str)) {\n res.push(str);\n return;\n }\n\n res = res.concat(str.split(byParentheses));\n });\n res = cleanUp(res); // split by spaces, now\n\n var _final = [];\n res.forEach(function (str) {\n if (isBlock(str)) {\n _final.push(str);\n } else if (isReg(str)) {\n _final.push(str);\n } else {\n _final = _final.concat(str.split(byWord));\n }\n });\n _final = cleanUp(_final);\n return _final;\n};\n\nvar _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses))\n\n/* break-down a match expression into this:\n{\n word:'',\n tag:'',\n regex:'',\n\n start:false,\n end:false,\n negative:false,\n anything:false,\n greedy:false,\n optional:false,\n\n named:'',\n choices:[],\n}\n*/\nvar hasMinMax = /\\{([0-9]+,?[0-9]*)\\}/;\nvar andSign = /&&/;\nvar captureName = new RegExp(/^<\\s*?(\\S+)\\s*?>/);\n\nvar titleCase$2 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar end = function end(str) {\n return str[str.length - 1];\n};\n\nvar start = function start(str) {\n return str[0];\n};\n\nvar stripStart = function stripStart(str) {\n return str.substr(1);\n};\n\nvar stripEnd = function stripEnd(str) {\n return str.substr(0, str.length - 1);\n};\n\nvar stripBoth = function stripBoth(str) {\n str = stripStart(str);\n str = stripEnd(str);\n return str;\n}; //\n\n\nvar parseToken = function parseToken(w) {\n var obj = {}; //collect any flags (do it twice)\n\n for (var i = 0; i < 2; i += 1) {\n //end-flag\n if (end(w) === '$') {\n obj.end = true;\n w = stripEnd(w);\n } //front-flag\n\n\n if (start(w) === '^') {\n obj.start = true;\n w = stripStart(w);\n } //capture group (this one can span multiple-terms)\n\n\n if (start(w) === '[' || end(w) === ']') {\n obj.named = true;\n\n if (start(w) === '[') {\n obj.groupType = end(w) === ']' ? 'single' : 'start';\n } else {\n obj.groupType = 'end';\n }\n\n w = w.replace(/^\\[/, '');\n w = w.replace(/\\]$/, ''); // Use capture group name\n\n if (start(w) === '<') {\n var res = captureName.exec(w);\n\n if (res.length >= 2) {\n obj.named = res[1];\n w = w.replace(res[0], '');\n }\n }\n } //back-flags\n\n\n if (end(w) === '+') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (end(w) === '?') {\n obj.optional = true;\n w = stripEnd(w);\n }\n\n if (start(w) === '!') {\n obj.negative = true; // obj.optional = true\n\n w = stripStart(w);\n } //wrapped-flags\n\n\n if (start(w) === '(' && end(w) === ')') {\n // support (one && two)\n if (andSign.test(w)) {\n obj.choices = w.split(andSign);\n obj.operator = 'and';\n } else {\n obj.choices = w.split('|');\n obj.operator = 'or';\n } //remove '(' and ')'\n\n\n obj.choices[0] = stripStart(obj.choices[0]);\n var last = obj.choices.length - 1;\n obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results\n\n obj.choices = obj.choices.map(function (s) {\n return s.trim();\n });\n obj.choices = obj.choices.filter(function (s) {\n return s;\n }); //recursion alert!\n\n obj.choices = obj.choices.map(function (str) {\n return str.split(/ /g).map(parseToken);\n });\n w = '';\n } //regex\n\n\n if (start(w) === '/' && end(w) === '/') {\n w = stripBoth(w);\n obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp\n\n return obj;\n } //soft-match\n\n\n if (start(w) === '~' && end(w) === '~') {\n w = stripBoth(w);\n obj.soft = true;\n obj.word = w;\n return obj;\n }\n } // support #Tag{1,9}\n\n\n if (hasMinMax.test(w) === true) {\n w = w.replace(hasMinMax, function (a, b) {\n var arr = b.split(/,/g);\n\n if (arr.length === 1) {\n // '{3}'\tExactly three times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[0]);\n } else {\n // '{2,4}' Two to four times\n // '{3,}' Three or more times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[1] || 999);\n } // use same method as '+'\n\n\n obj.greedy = true; // 0 as min means the same as '?'\n\n obj.optional = true;\n return '';\n });\n } //do the actual token content\n\n\n if (start(w) === '#') {\n obj.tag = stripStart(w);\n obj.tag = titleCase$2(obj.tag);\n return obj;\n } //dynamic function on a term object\n\n\n if (start(w) === '@') {\n obj.method = stripStart(w);\n return obj;\n }\n\n if (w === '.') {\n obj.anything = true;\n return obj;\n } //support alone-astrix\n\n\n if (w === '*') {\n obj.anything = true;\n obj.greedy = true;\n obj.optional = true;\n return obj;\n }\n\n if (w) {\n //somehow handle encoded-chars?\n w = w.replace('\\\\*', '*');\n w = w.replace('\\\\.', '.');\n obj.word = w.toLowerCase();\n }\n\n return obj;\n};\n\nvar _02ParseToken = parseToken;\n\n// name any [unnamed] capture-groups with a number\nvar nameGroups = function nameGroups(tokens) {\n var convert = false;\n var index = -1;\n var current; //'fill in' capture groups between start-end\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]; // Give name to un-named single tokens\n\n if (token.groupType === 'single' && token.named === true) {\n index += 1;\n token.named = index;\n continue;\n } // Start converting tokens\n\n\n if (token.groupType === 'start') {\n convert = true;\n\n if (typeof token.named === 'string' || typeof token.named === 'number') {\n current = token.named;\n } else {\n index += 1;\n current = index;\n }\n } // Ensure this token has the right name\n\n\n if (convert) {\n token.named = current;\n } // Stop converting tokens\n\n\n if (token.groupType === 'end') {\n convert = false;\n }\n }\n\n return tokens;\n}; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word\n\n\nvar doFastOrMode = function doFastOrMode(tokens) {\n return tokens.map(function (token) {\n if (token.choices !== undefined) {\n // are they all straight-up words? then optimize them.\n var shouldPack = token.choices.every(function (block) {\n if (block.length !== 1) {\n return false;\n }\n\n var reg = block[0];\n\n if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) {\n return true; //reg is simple-enough\n }\n\n return false;\n });\n\n if (shouldPack === true) {\n var oneOf = {};\n token.choices.forEach(function (block) {\n oneOf[block[0].word] = true;\n });\n token.fastOr = oneOf;\n delete token.choices;\n }\n }\n\n return token;\n });\n}; // allow multiword OR (foo|one two)\n// const doMultiWord = function (tokens) {\n// return tokens.map(token => {\n// if (token.choices !== undefined) {\n// let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false\n// if (isMulti !== false) {\n// token.multiword = true\n// // turn all choices into arrays\n// token.choices = token.choices.map(choice => {\n// if (choice.word) {\n// choice.sequence = choice.word.split(hasASpace)\n// delete choice.word\n// }\n// return choice\n// })\n// }\n// }\n// return token\n// })\n// }\n// const doBlockMode = function (tokens) {\n// return tokens.map(token => {\n// // we've already setup fastOr mode\n// if (token.choices !== undefined) {\n// // console.log(token)\n// }\n// return token\n// })\n// }\n\n\nvar postProcess = function postProcess(tokens) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // ensure all capture groups are filled between start and end\n // give all capture groups names\n var count = tokens.filter(function (t) {\n return t.groupType;\n }).length;\n\n if (count > 0) {\n tokens = nameGroups(tokens);\n } // convert 'choices' format to 'fastOr' format\n\n\n if (!opts.fuzzy) {\n tokens = doFastOrMode(tokens);\n } // support multiword OR (foo bar|baz)\n // tokens = doMultiWord(tokens)\n // support (one two three)\n // tokens = doBlockMode(tokens)\n\n\n return tokens;\n};\n\nvar _03PostProcess = postProcess;\n\nvar isArray$2 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn an array into a 'choices' list\n\n\nvar byArray = function byArray(arr) {\n var blocks = arr.map(function (s) {\n return [{\n word: s\n }];\n });\n return [{\n choices: blocks,\n operator: 'or'\n }];\n}; // turn a Doc object into a reg of ids to lookup\n\n\nvar fromDoc = function fromDoc(doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return [];\n }\n\n var regs = [];\n doc.list.forEach(function (p) {\n var ids = [];\n p.terms().forEach(function (t) {\n ids.push(t.id);\n });\n regs.push(ids);\n });\n return [{\n idBlocks: regs\n }];\n}; // add fuzziness etc to each reg\n\n\nvar addOptions = function addOptions(tokens, opts) {\n // add default fuzzy-search limit\n if (opts.fuzzy === true) {\n opts.fuzzy = 0.85;\n }\n\n if (typeof opts.fuzzy === 'number') {\n tokens = tokens.map(function (reg) {\n // add a fuzzy-match on 'word' tokens\n if (opts.fuzzy > 0 && reg.word) {\n reg.fuzzy = opts.fuzzy;\n } //add it to or|and choices too\n\n\n if (reg.choices) {\n reg.choices.forEach(function (block) {\n block.forEach(function (r) {\n r.fuzzy = opts.fuzzy;\n });\n });\n }\n\n return reg;\n });\n }\n\n return tokens;\n};\n/** parse a match-syntax string into json */\n\n\nvar syntax = function syntax(input) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // fail-fast\n if (input === null || input === undefined || input === '') {\n return [];\n } //try to support a ton of different formats:\n\n\n if (_typeof(input) === 'object') {\n if (isArray$2(input)) {\n if (input.length === 0 || !input[0]) {\n return [];\n } //is it a pre-parsed reg-list?\n\n\n if (_typeof(input[0]) === 'object') {\n return input;\n } //support a flat array of normalized words\n\n\n if (typeof input[0] === 'string') {\n return byArray(input);\n }\n } //support passing-in a compromise object as a match\n\n\n if (input && input.isA === 'Doc') {\n return fromDoc(input);\n }\n\n return [];\n }\n\n if (typeof input === 'number') {\n input = String(input); //go for it?\n }\n\n var tokens = _01ParseBlocks(input); //turn them into objects\n\n tokens = tokens.map(function (str) {\n return _02ParseToken(str);\n }); //clean up anything weird\n\n tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc\n\n tokens = addOptions(tokens, opts); // console.log(tokens)\n\n return tokens;\n};\n\nvar matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)'))\n\n// match an explicit sequence of term ids\n// take a phrase and find any of the idBlocks in it\nvar idLookup = function idLookup(terms, regs) {\n var matches = [];\n var blocklist = regs[0].idBlocks;\n\n var _loop = function _loop(_t) {\n blocklist.forEach(function (block) {\n if (block.length === 0) {\n t = _t;\n return;\n }\n\n var foundAll = block.every(function (id, i) {\n t = _t;\n return terms[_t + i].id === id;\n });\n\n if (foundAll) {\n matches.push({\n match: terms.slice(_t, _t + block.length)\n }); // skip top-loop forward\n\n _t += block.length - 1;\n }\n });\n t = _t;\n };\n\n for (var t = 0; t < terms.length; t += 1) {\n _loop(t);\n }\n\n return matches;\n};\n\nvar idLookup_1 = idLookup;\n\n/** returns a simple array of arrays */\n\nvar matchAll = function matchAll(p, regs) {\n var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n //if we forgot to parse it..\n if (typeof regs === 'string') {\n regs = matchSyntax(regs);\n } //try to dismiss it, at-once\n\n\n if (_02FailFast(p, regs) === true) {\n return [];\n } //any match needs to be this long, at least\n\n\n var minLength = regs.filter(function (r) {\n return r.optional !== true && r.negative !== true;\n }).length;\n var terms = p.terms();\n var matches = []; // these id-lookups can be super-fast\n\n if (regs[0].idBlocks) {\n var res = idLookup_1(terms, regs);\n\n if (res && res.length > 0) {\n return _04PostProcess(terms, regs, res);\n }\n } //optimisation for '^' start logic\n\n\n if (regs[0].start === true) {\n var _res = _03TryMatch(terms, regs, 0, terms.length);\n\n if (_res && _res.match && _res.match.length > 0) {\n _res.match = _res.match.filter(function (m) {\n return m;\n });\n matches.push(_res);\n }\n\n return _04PostProcess(terms, regs, matches);\n } //try starting, from every term\n\n\n for (var i = 0; i < terms.length; i += 1) {\n // slice may be too short\n if (i + minLength > terms.length) {\n break;\n } //try it!\n\n\n var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length);\n\n if (_res2 && _res2.match && _res2.match.length > 0) {\n //zoom forward!\n i += _res2.match.length - 1; //[capture-groups] return some null responses\n\n _res2.match = _res2.match.filter(function (m) {\n return m;\n });\n matches.push(_res2); //ok, maybe that's enough?\n\n if (matchOne === true) {\n return _04PostProcess(terms, regs, matches);\n }\n }\n }\n\n return _04PostProcess(terms, regs, matches);\n};\n\nvar _01MatchAll = matchAll;\n\n/** return anything that doesn't match.\n * returns a simple array of arrays\n */\n\nvar notMatch = function notMatch(p, regs) {\n var found = {};\n var arr = _01MatchAll(p, regs);\n arr.forEach(function (_ref) {\n var ts = _ref.match;\n ts.forEach(function (t) {\n found[t.id] = true;\n });\n }); //return anything not found\n\n var terms = p.terms();\n var result = [];\n var current = [];\n terms.forEach(function (t) {\n if (found[t.id] === true) {\n if (current.length > 0) {\n result.push(current);\n current = [];\n }\n\n return;\n }\n\n current.push(t);\n });\n\n if (current.length > 0) {\n result.push(current);\n }\n\n return result;\n};\n\nvar not$1 = notMatch;\n\n/** return an array of matching phrases */\n\nvar match_1 = function match_1(regs) {\n var _this = this;\n\n var justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var matches = _01MatchAll(this, regs, justOne); //make them phrase objects\n\n matches = matches.map(function (_ref) {\n var match = _ref.match,\n groups = _ref.groups;\n\n var p = _this.buildFrom(match[0].id, match.length, groups);\n\n p.cache.terms = match;\n return p;\n });\n return matches;\n};\n/** return boolean if one match is found */\n\n\nvar has = function has(regs) {\n var matches = _01MatchAll(this, regs, true);\n return matches.length > 0;\n};\n/** remove all matches from the result */\n\n\nvar not = function not(regs) {\n var _this2 = this;\n\n var matches = not$1(this, regs); //make them phrase objects\n\n matches = matches.map(function (list) {\n return _this2.buildFrom(list[0].id, list.length);\n });\n return matches;\n};\n/** return a list of phrases that can have this tag */\n\n\nvar canBe$1 = function canBe(tag, world) {\n var _this3 = this;\n\n var results = [];\n var terms = this.terms();\n var previous = false;\n\n for (var i = 0; i < terms.length; i += 1) {\n var can = terms[i].canBe(tag, world);\n\n if (can === true) {\n if (previous === true) {\n //add it to the end\n results[results.length - 1].push(terms[i]);\n } else {\n results.push([terms[i]]); //make a new one\n }\n\n previous = can;\n }\n } //turn them into Phrase objects\n\n\n results = results.filter(function (a) {\n return a.length > 0;\n }).map(function (arr) {\n return _this3.buildFrom(arr[0].id, arr.length);\n });\n return results;\n};\n\nvar match = {\n match: match_1,\n has: has,\n not: not,\n canBe: canBe$1\n};\n\nvar Phrase = function Phrase(id, length, pool) {\n _classCallCheck(this, Phrase);\n\n this.start = id;\n this.length = length;\n this.isA = 'Phrase'; // easier than .constructor...\n\n Object.defineProperty(this, 'pool', {\n enumerable: false,\n writable: true,\n value: pool\n });\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, 'groups', {\n enumerable: false,\n writable: true,\n value: {}\n });\n};\n/** create a new Phrase object from an id and length */\n\n\nPhrase.prototype.buildFrom = function (id, length, groups) {\n var p = new Phrase(id, length, this.pool); //copy-over or replace capture-groups too\n\n if (groups && Object.keys(groups).length > 0) {\n p.groups = groups;\n } else {\n p.groups = this.groups;\n }\n\n return p;\n}; //apply methods\n\n\nObject.assign(Phrase.prototype, match);\nObject.assign(Phrase.prototype, methods$7); //apply aliases\n\nvar aliases$1 = {\n term: 'terms'\n};\nObject.keys(aliases$1).forEach(function (k) {\n return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]];\n});\nvar Phrase_1 = Phrase;\n\n/** a key-value store of all terms in our Document */\nvar Pool = /*#__PURE__*/function () {\n function Pool() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Pool);\n\n //quiet this property in console.logs\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: words\n });\n }\n /** throw a new term object in */\n\n\n _createClass(Pool, [{\n key: \"add\",\n value: function add(term) {\n this.words[term.id] = term;\n return this;\n }\n /** find a term by it's id */\n\n }, {\n key: \"get\",\n value: function get(id) {\n return this.words[id];\n }\n /** find a term by it's id */\n\n }, {\n key: \"remove\",\n value: function remove(id) {\n delete this.words[id];\n }\n }, {\n key: \"merge\",\n value: function merge(pool) {\n Object.assign(this.words, pool.words);\n return this;\n }\n /** helper method */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length\n };\n }\n }]);\n\n return Pool;\n}();\n/** make a deep-copy of all terms */\n\n\nPool.prototype.clone = function () {\n var _this = this;\n\n var keys = Object.keys(this.words);\n var words = keys.reduce(function (h, k) {\n var t = _this.words[k].clone();\n\n h[t.id] = t;\n return h;\n }, {});\n return new Pool(words);\n};\n\nvar Pool_1 = Pool;\n\n//add forward/backward 'linked-list' prev/next ids\nvar linkTerms = function linkTerms(terms) {\n terms.forEach(function (term, i) {\n if (i > 0) {\n term.prev = terms[i - 1].id;\n }\n\n if (terms[i + 1]) {\n term.next = terms[i + 1].id;\n }\n });\n};\n\nvar _linkTerms = linkTerms;\n\n//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.\n// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n// @spencermountain 2017 MIT\n//proper nouns with exclamation marks\n// const blacklist = {\n// yahoo: true,\n// joomla: true,\n// jeopardy: true,\n// }\n//regs-\nvar initSplit = /(\\S.+?[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049])(?=\\s+|$)/g;\nvar hasSomething = /\\S/;\nvar isAcronym$1 = /[ .][A-Z]\\.? *$/i;\nvar hasEllipse = /(?:\\u2026|\\.{2,}) *$/;\nvar newLine = /((?:\\r?\\n|\\r)+)/; // Match different new-line formats\n\nvar hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i;\nvar startWhitespace = /^\\s+/; // Start with a regex:\n\nvar naiive_split = function naiive_split(text) {\n var all = []; //first, split by newline\n\n var lines = text.split(newLine);\n\n for (var i = 0; i < lines.length; i++) {\n //split by period, question-mark, and exclamation-mark\n var arr = lines[i].split(initSplit);\n\n for (var o = 0; o < arr.length; o++) {\n all.push(arr[o]);\n }\n }\n\n return all;\n};\n/** does this look like a sentence? */\n\n\nvar isSentence = function isSentence(str, abbrevs) {\n // check for 'F.B.I.'\n if (isAcronym$1.test(str) === true) {\n return false;\n } //check for '...'\n\n\n if (hasEllipse.test(str) === true) {\n return false;\n } // must have a letter\n\n\n if (hasLetter.test(str) === false) {\n return false;\n }\n\n var txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '');\n var words = txt.split(' ');\n var lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.'\n\n if (abbrevs.hasOwnProperty(lastWord)) {\n return false;\n } // //check for jeopardy!\n // if (blacklist.hasOwnProperty(lastWord)) {\n // return false\n // }\n\n\n return true;\n};\n\nvar splitSentences = function splitSentences(text, world) {\n var abbrevs = world.cache.abbreviations;\n text = text || '';\n text = String(text);\n var sentences = []; // First do a greedy-split..\n\n var chunks = []; // Ensure it 'smells like' a sentence\n\n if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n return sentences;\n } // cleanup unicode-spaces\n\n\n text = text.replace('\\xa0', ' '); // Start somewhere:\n\n var splits = naiive_split(text); // Filter-out the crap ones\n\n for (var i = 0; i < splits.length; i++) {\n var s = splits[i];\n\n if (s === undefined || s === '') {\n continue;\n } //this is meaningful whitespace\n\n\n if (hasSomething.test(s) === false) {\n //add it to the last one\n if (chunks[chunks.length - 1]) {\n chunks[chunks.length - 1] += s;\n continue;\n } else if (splits[i + 1]) {\n //add it to the next one\n splits[i + 1] = s + splits[i + 1];\n continue;\n }\n } //else, only whitespace, no terms, no sentence\n\n\n chunks.push(s);\n } //detection of non-sentence chunks:\n //loop through these chunks, and join the non-sentence chunks back together..\n\n\n for (var _i = 0; _i < chunks.length; _i++) {\n var c = chunks[_i]; //should this chunk be combined with the next one?\n\n if (chunks[_i + 1] && isSentence(c, abbrevs) === false) {\n chunks[_i + 1] = c + (chunks[_i + 1] || '');\n } else if (c && c.length > 0) {\n //&& hasLetter.test(c)\n //this chunk is a proper sentence..\n sentences.push(c);\n chunks[_i] = '';\n }\n } //if we never got a sentence, return the given text\n\n\n if (sentences.length === 0) {\n return [text];\n } //move whitespace to the ends of sentences, when possible\n //['hello',' world'] -> ['hello ','world']\n\n\n for (var _i2 = 1; _i2 < sentences.length; _i2 += 1) {\n var ws = sentences[_i2].match(startWhitespace);\n\n if (ws !== null) {\n sentences[_i2 - 1] += ws[0];\n sentences[_i2] = sentences[_i2].replace(startWhitespace, '');\n }\n }\n\n return sentences;\n};\n\nvar _01Sentences = splitSentences; // console.log(sentence_parser('john f. kennedy'));\n\nvar wordlike = /\\S/;\nvar isBoundary = /^[!?.]+$/;\nvar naiiveSplit = /(\\S+)/;\nvar isSlash = /[a-z] ?\\/ ?[a-z]*$/;\nvar notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '\"', \"'\", '`'];\nnotWord = notWord.reduce(function (h, c) {\n h[c] = true;\n return h;\n}, {});\n\nvar hasHyphen = function hasHyphen(str) {\n //dont split 're-do'\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n return false;\n } //letter-number 'aug-20'\n\n\n var reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)(-|–|—)([a-z0-9\\u00C0-\\u00FF].*)/i;\n\n if (reg.test(str) === true) {\n return true;\n } //number-letter '20-aug'\n\n\n var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\\u00C0-\\u00FF`\"'/-]+$)/i;\n\n if (reg2.test(str) === true) {\n return true;\n } //support weird number-emdash combo '2010–2011'\n // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i\n // if (reg2.test(str)) {\n // return true\n // }\n\n\n return false;\n}; // 'he / she' should be one word\n\n\nvar combineSlashes = function combineSlashes(arr) {\n for (var i = 1; i < arr.length - 1; i++) {\n if (isSlash.test(arr[i])) {\n arr[i - 1] += arr[i] + arr[i + 1];\n arr[i] = null;\n arr[i + 1] = null;\n }\n }\n\n return arr;\n};\n\nvar splitHyphens = function splitHyphens(word) {\n var arr = []; //support multiple-hyphenated-terms\n\n var hyphens = word.split(/[-–—]/);\n var whichDash = '-';\n var found = word.match(/[-–—]/);\n\n if (found && found[0]) {\n whichDash = found;\n }\n\n for (var o = 0; o < hyphens.length; o++) {\n if (o === hyphens.length - 1) {\n arr.push(hyphens[o]);\n } else {\n arr.push(hyphens[o] + whichDash);\n }\n }\n\n return arr;\n};\n\nvar isArray$1 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn a string into an array of strings (naiive for now, lumped later)\n\n\nvar splitWords = function splitWords(str) {\n var result = [];\n var arr = []; //start with a naiive split\n\n str = str || '';\n\n if (typeof str === 'number') {\n str = String(str);\n }\n\n if (isArray$1(str)) {\n return str;\n }\n\n var words = str.split(naiiveSplit);\n\n for (var i = 0; i < words.length; i++) {\n //split 'one-two'\n if (hasHyphen(words[i]) === true) {\n arr = arr.concat(splitHyphens(words[i]));\n continue;\n }\n\n arr.push(words[i]);\n } //greedy merge whitespace+arr to the right\n\n\n var carry = '';\n\n for (var _i = 0; _i < arr.length; _i++) {\n var word = arr[_i]; //if it's more than a whitespace\n\n if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n //put whitespace on end of previous term, if possible\n if (result.length > 0) {\n result[result.length - 1] += carry;\n result.push(word);\n } else {\n //otherwise, but whitespace before\n result.push(carry + word);\n }\n\n carry = '';\n } else {\n carry += word;\n }\n } //handle last one\n\n\n if (carry) {\n if (result.length === 0) {\n result[0] = '';\n }\n\n result[result.length - 1] += carry; //put it on the end\n } // combine 'one / two'\n\n\n result = combineSlashes(result); // remove empty results\n\n result = result.filter(function (s) {\n return s;\n });\n return result;\n};\n\nvar _02Words = splitWords;\n\nvar isArray = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n/** turn a string into an array of Phrase objects */\n\n\nvar fromText = function fromText() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var pool = arguments.length > 2 ? arguments[2] : undefined;\n var sentences = null; //a bit of validation, first\n\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text);\n } else if (isArray(text)) {\n sentences = text;\n }\n } //tokenize into words\n\n\n sentences = sentences || _01Sentences(text, world);\n sentences = sentences.map(function (str) {\n return _02Words(str);\n }); //turn them into proper objects\n\n pool = pool || new Pool_1();\n var phrases = sentences.map(function (terms) {\n terms = terms.map(function (str) {\n var term = new Term_1(str);\n pool.add(term);\n return term;\n }); //add next/previous ids\n\n _linkTerms(terms); //return phrase objects\n\n var p = new Phrase_1(terms[0].id, terms.length, pool);\n p.cache.terms = terms;\n return p;\n }); //return them ready for a Document object\n\n return phrases;\n};\n\nvar _01Tokenizer = fromText;\n\nvar fromJSON = function fromJSON(json, world) {\n var pool = new Pool_1();\n var phrases = json.map(function (p, k) {\n var terms = p.terms.map(function (o, i) {\n var term = new Term_1(o.text);\n term.pre = o.pre !== undefined ? o.pre : '';\n\n if (o.post === undefined) {\n o.post = ' '; //no given space for very last term\n\n if (i >= p.terms.length - 1) {\n o.post = '. ';\n\n if (k >= p.terms.length - 1) {\n o.post = '.';\n }\n }\n }\n\n term.post = o.post !== undefined ? o.post : ' ';\n\n if (o.tags) {\n o.tags.forEach(function (tag) {\n return term.tag(tag, '', world);\n });\n }\n\n pool.add(term);\n return term;\n }); //add prev/next links\n\n _linkTerms(terms); // return a proper Phrase object\n\n return new Phrase_1(terms[0].id, terms.length, pool);\n });\n return phrases;\n};\n\nvar fromJSON_1 = fromJSON;\n\nvar _version = '13.10.5';\n\nvar entity = ['Person', 'Place', 'Organization'];\nvar nouns$1 = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural'\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun'\n },\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization', 'Date']\n },\n FirstName: {\n isA: 'Person'\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName']\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName']\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName']\n },\n NickName: {\n isA: 'Person',\n notA: ['FirstName', 'LastName']\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName', 'Value']\n },\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization']\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City']\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country']\n },\n Region: {\n isA: ['Place', 'ProperNoun']\n },\n Address: {\n isA: 'Place'\n },\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place']\n },\n SportsTeam: {\n isA: 'Organization'\n },\n School: {\n isA: 'Organization'\n },\n Company: {\n isA: 'Organization'\n },\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular']\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun'\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place']\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity\n },\n //`john's`\n Possessive: {\n isA: 'Noun' // notA: 'Pronoun',\n\n }\n};\n\nvar verbs$1 = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value']\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'FutureTense']\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund']\n },\n //close the door!\n Imperative: {\n isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'],\n\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense']\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense']\n },\n // will walk\n FutureTense: {\n isA: 'Verb'\n },\n // is\n Copula: {\n isA: 'Verb'\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive']\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund'\n },\n Pluperfect: {\n isA: 'Verb'\n },\n // shown\n Participle: {\n isA: 'PastTense'\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb'\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb'\n },\n //this can be an adverb\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value']\n }\n};\n\nvar values = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal']\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal']\n },\n Fraction: {\n isA: 'Value',\n notA: ['Noun']\n },\n RomanNumeral: {\n isA: 'Cardinal',\n //can be a person, too\n notA: ['Ordinal', 'TextValue']\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue']\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue']\n },\n Money: {\n isA: 'Cardinal'\n },\n Percent: {\n isA: 'Value'\n }\n};\n\nvar anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord'];\nvar misc$1 = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value']\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective']\n },\n // better\n Comparative: {\n isA: ['Adjective']\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative']\n },\n NumberRange: {\n isA: ['Contraction']\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value']\n },\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Adverb', 'Preposition', 'Adjective']\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time']\n },\n WeekDay: {\n isA: ['Date', 'Noun']\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n notA: ['Adjective', 'ProperNoun']\n },\n // '9:20pm'\n Time: {\n isA: ['Date'],\n notA: ['AtMention']\n },\n //glue\n Determiner: {\n notA: anything\n },\n Conjunction: {\n notA: anything\n },\n Preposition: {\n notA: anything\n },\n // what, who, why\n QuestionWord: {\n notA: ['Determiner']\n },\n // peso, euro\n Currency: {\n isA: ['Noun']\n },\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb']\n },\n // dr.\n Abbreviation: {},\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email']\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n //non-exclusive\n Acronym: {\n notA: ['Plural', 'RomanNumeral']\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value']\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value']\n }\n};\n\n// i just made these up\nvar colorMap = {\n Noun: 'blue',\n Verb: 'green',\n Negative: 'green',\n Date: 'red',\n Value: 'red',\n Adjective: 'magenta',\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan'\n};\n/** add a debug color to some tags */\n\nvar addColors = function addColors(tags) {\n Object.keys(tags).forEach(function (k) {\n // assigned from plugin, for example\n if (tags[k].color) {\n tags[k].color = tags[k].color;\n return;\n } // defined above\n\n\n if (colorMap[k]) {\n tags[k].color = colorMap[k];\n return;\n }\n\n tags[k].isA.some(function (t) {\n if (colorMap[t]) {\n tags[k].color = colorMap[t];\n return true;\n }\n\n return false;\n });\n });\n return tags;\n};\n\nvar _color = addColors;\n\nvar unique$3 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; //add 'downward' tags (that immediately depend on this one)\n\n\nvar inferIsA = function inferIsA(tags) {\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k];\n var len = tag.isA.length;\n\n for (var i = 0; i < len; i++) {\n var down = tag.isA[i];\n\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA);\n }\n } // clean it up\n\n\n tag.isA = unique$3(tag.isA);\n });\n return tags;\n};\n\nvar _isA = inferIsA;\n\nvar unique$2 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; // crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\n\n\nvar inferNotA = function inferNotA(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.notA = tag.notA || [];\n tag.isA.forEach(function (down) {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n var notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || [];\n tag.notA = tag.notA.concat(notA);\n }\n }); // any tag that lists us as a conflict, we conflict it back.\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key);\n }\n } // clean it up\n\n\n tag.notA = unique$2(tag.notA);\n });\n return tags;\n};\n\nvar _notA = inferNotA;\n\n// a lineage is all 'incoming' tags that have this as 'isA'\nvar inferLineage = function inferLineage(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.lineage = []; // find all tags with it in their 'isA' set\n\n for (var i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i]);\n }\n }\n });\n return tags;\n};\n\nvar _lineage = inferLineage;\n\nvar validate = function validate(tags) {\n // cleanup format\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k]; // ensure isA is an array\n\n tag.isA = tag.isA || [];\n\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA];\n } // ensure notA is an array\n\n\n tag.notA = tag.notA || [];\n\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA];\n }\n });\n return tags;\n}; // build-out the tag-graph structure\n\n\nvar inferTags = function inferTags(tags) {\n // validate data\n tags = validate(tags); // build its 'down tags'\n\n tags = _isA(tags); // infer the conflicts\n\n tags = _notA(tags); // debug tag color\n\n tags = _color(tags); // find incoming links\n\n tags = _lineage(tags);\n return tags;\n};\n\nvar inference = inferTags;\n\nvar addIn = function addIn(obj, tags) {\n Object.keys(obj).forEach(function (k) {\n tags[k] = obj[k];\n });\n};\n\nvar build = function build() {\n var tags = {};\n addIn(nouns$1, tags);\n addIn(verbs$1, tags);\n addIn(values, tags);\n addIn(misc$1, tags); // do the graph-stuff\n\n tags = inference(tags);\n return tags;\n};\n\nvar tags = build();\n\nvar _data = {\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc\",\n \"Copula\": \"true¦a1is,w0;as,ere;m,re\",\n \"PastTense\": \"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan\",\n \"Condition\": \"true¦if,lest,unless\",\n \"Preposition\": \"true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Gerund\": \"true¦accord0be0develop0go0result0stain0;ing\",\n \"Negative\": \"true¦n0;ever,o0;!n,t\",\n \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n \"Plural\": \"true¦records\",\n \"Conjunction\": \"true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Abbreviation\": \"true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:15;1:12;2:18;a15b0Sc0Jd0Ce09f04gZhViUjel0kitty,lSmOnNoMpHquestionGrEs9t6u4w3;ay,om02;nc0Zs 3;doll0Kst0M; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoMt3uper bowl,yst14;ep4ri2u3;de0Xff;faSmoS;st1ze;al0i2o3;om,se;! mark;a6i1la5r4u3;dPrpoH;eroga00ie0Gobl0U;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em\",\n \"FemaleName\": \"true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt\",\n \"Honorific\": \"true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al\",\n \"SportsTeam\": \"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls\",\n \"Uncountable\": \"true¦0:1I;1:16;2:1X;a1Rb1Jc1Ad17e10f0Ug0Nh0Ii0Ej0Dknowled1Ql08mYnews,oXpTrOsDt8vi7w3;a5ea0Bi4oo3;d,l;ldlife,ne;rmth,t0;neg17ol0Ctae;e6h5oothpaste,r3una;affTou3;ble,sers,t;ermod1Mund0;a,nnis;aBcene0Aeri1hAil9kittl1now,o8p6t4u3;g10nshi0Q;ati1Le3;am,el;ace1Ee3;ci1ed;ap,cc0;k,v0;eep,ingl1;d0Dfe18l3nd,tish;m11t;a6e4ic3;e,ke0M;c3laxa0Isearch;ogni0Hrea0H;bi1in;aPe5hys2last9o3ress04;l3rk,w0;it2yA;a12trZ;bstetr2il,xygen;aAe8ilk,o5u3;mps,s3;ic;n3o0I;ey,o3;gamy;a3chan2;sl1t;chine3il,themat2; learn0Bry;aught0e5i4ogi0Su3;ck,g0I;ce,ghtn08ngui0QteratN;a3isM;th0;ewelAusti0L;ce,mp3nformaUtself;a3ortan0J;ti3;en0H;a6isto5o3;ck3mework,n3spitali0B;ey;ry;ir,libut,ppiD;ene6o4r3um,ymna0D;aCound;l3ssip;d,f; 3t2;editQpo3;ol;i7lour,o4urnit3;ure;od,rgive3uri0wl;ne3;ss;c9sh;conom2duca8lectr7n5quip6th2very3;body,o3thH;ne;joy3tertain3;ment;iciPon2;tiI;ar4iabet1raugh4;es;ts;aAelcius,h6iv2l5o3urrency;al,ld w3nfusiDttD;ar;ass2oth5;aos,e3;e4w3;ing;se;r7sh;a7eef,i4lood,owls,read,utt0;er;lliar4s3;on;ds;g3ss;ga3;ge;c8dvi7ero5ir4mnes3rt,thlet2;ty;craft;b2d3naut2;ynam2;ce;id,ou3;st2;ics\",\n \"Infinitive\": \"true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s\",\n \"Organization\": \"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c\",\n \"Demonym\": \"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n \"Possessive\": \"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne\",\n \"Currency\": \"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s\",\n \"City\": \"true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",\n \"Country\": \"true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an\",\n \"Region\": \"true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma\",\n \"Place\": \"true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s\",\n \"MaleName\": \"true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:B6;7:CW;8:C8;9:DK;A:DL;B:A6;C:C2;aCObBLcAJd9He8Nf85g7Ih6Ui6Ej5Ek52l4Dm35n2To2Np2Fqu2Dr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Tkaria,n5W;hEkD;!aCM;ar5WeCL;aLoFuD;sDu2KvBY;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBMssX;avi3ho4;aMeKiFoDyaC2;jcie8Clfgang,odrow,utD;!er;lDnst1;bFey,frD1lD;aBDiD;am,e,s;e9Fur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5C;avAWeDist0oy,um0;ntAOv5Zy;bGdFmDny;!as,mDoharu;aCTie,y;!d;iBy;mDt5;!my,othy;adFeoEia8GomD;!as;!do8P;!de5;dGrD;en9LrD;an9KeDy;ll,n9J;!dy;dgh,ha,iDnn3req,tsu4T;cB5ka;aTcotRePhLiJoHpenc3tDur1Vylve9Kzym1;anFeDua8D;f0phBTvDwa8C;e62ie;!islaw,l8;lom1nBFuD;leyma7ta;dDlBm1yabonga;!dhart7Bn8;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y7;aDbasti0k2Al4Rrg4Oth,ymoAU;m5n;!tD;!ie,y;lEmDnti2Eq5Bul;!ke5MmCu4;ik,vato7X;aYeUheAAiQoHuEyD;an,ou;b7NdEf5pe7SssD;!elBZ;ol3Fy;an,bKcJdIel,geHh0landBQmGnFry,sEyD;!ce;coe,s;!aAHnC;an,eo;l47r;e5Og3n8olfo,ri7A;co,ky;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on\",\n \"LastName\": \"true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta\",\n \"WeekDay\": \"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",\n \"Month\": \"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il\",\n \"Date\": \"true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w\",\n \"FirstName\": \"true¦aKblair,cGdevFgabrieEhinaDjBk8l7m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is\",\n \"Person\": \"true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er\",\n \"Verb\": \"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en\",\n \"PhrasalVerb\": \"true¦0:7E;1:72;2:7Q;3:7G;4:6V;5:7T;6:7I;7:6O;8:71;9:6P;A:5T;B:7C;C:7J;D:6Q;E:7L;F:7D;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietDr1Ms0FtVuTvacuum 1wLyammerBzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r7s7;eel Fip G;aJiIn2L;gh 0Crd0;n Fr 3S;it 60k7lk6rm 6Bsh 7Lt6Ov53;rgeBsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleDp G;ckDde 02;neDp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov8up;aIe 4Vll52;m 1r 01;ckBke Jlk I;ov8u53;aIba4d2in,o3Fup;ba4ft8p58w3;a0Nc0Me0Gh0Ci09l05m04n03o02pXquare WtOuMwI;earKiI;ngJtch I;aw3ba4o75; by;ck Iit 1m 1ss0;in,up;aNe10iMoKrIucH;aigh1ZiI;ke 6En3C;p Irm22;by,in,oC;nHr 1tc3V;cHmp0nd Ir6Xve6y 1;ba4d2up;d2oCup;arHeLiKlJrIurB;ingBuc7;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row F;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v8;gn 4WngJt Iz7;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v7;aTeQiPoLuI;b 4Sle0n Istl7;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arEin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleBess JiLoI;p 1;ah1Ron;iIp 5Fr3XurDwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leBn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt F;arrowDerd0oI;d6teD;aQeNiMoKuI;ddl7lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur7lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft8ba4d2forw2Jin45ov8uI;nd8p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arEd2;av1Mt 36velI; o3T;c7p 1sh ItchBugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic7mpA;ke30tD;c39zz 1;aUePiMoJuI;nkerDrry 1s0Z;lIneArse2W;d Ie 1;ba4d2fast,o05up;de Jt I;ba4on,up;aw3o5;aIlp0;d Kl 2Ar It 1;fIof;rom;in,oXu1H;cHm 1nJve Iz25;it,to;d Ig 2EkerK;d2in,o5;aWeQive Oloss 22oKrJunI; f0Q;in3Gow 2A; Iof 0Y;aJb1Dit,oIrEt0Su18;ff,n,v8;bo5ft8hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrEup;ff,n,ut,v8;cJhIl1WrEt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownBy 1;aw3oC;eIshe1N; 1z7;lKol I;aIwi1G;bo5rE;d 9low 1;aJeIip0;sh0;g 9ke0mIrI;e G;gPlNnLrJsIzzle0;h G;e Im 1;aw3ba4up;d0isI;h 1;e Il 19;aw3fN;ht ba4ure0;eNnJsI;s 1;cKd I;fIoC;or;e F;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v8;a4ehi20;e J;at0dge0nd Iy7;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl7;aYhVlean 9oIross Fut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd8;ogeth8;ut,v8;th,wI;ard;a4y;pIrEw3;art;eIipA;ck FeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Ft6;ry JvI;e 01;aw3o18;l ImD;aIba4d2o16up;rEw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t F;in,o5up;e I;ov8;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrEw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgDil 9n7oLssKttlJunce Ix F;aw3ba4;e 9; arE;k Ft 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov8up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h F;ainBe F;g FkB; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arEo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt\",\n \"Comparable\": \"true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd\",\n \"TextOrdinal\": \"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th\",\n \"Cardinal\": \"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s\",\n \"Expression\": \"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la\",\n \"Adverb\": \"true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Determiner\": \"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n};\n\nvar seq = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n cache$1 = seq.split(\"\").reduce(function (n, o, e) {\n return n[o] = e, n;\n}, {}),\n toAlphaCode = function toAlphaCode(n) {\n if (void 0 !== seq[n]) return seq[n];\n var o = 1,\n e = 36,\n t = \"\";\n\n for (; n >= e; n -= e, o++, e *= 36) {\n }\n\n for (; o--;) {\n var _o = n % 36;\n\n t = String.fromCharCode((_o < 10 ? 48 : 55) + _o) + t, n = (n - _o) / 36;\n }\n\n return t;\n},\n fromAlphaCode = function fromAlphaCode(n) {\n if (void 0 !== cache$1[n]) return cache$1[n];\n var o = 0,\n e = 1,\n t = 36,\n r = 1;\n\n for (; e < n.length; o += t, e++, t *= 36) {\n }\n\n for (var _e = n.length - 1; _e >= 0; _e--, r *= 36) {\n var _t = n.charCodeAt(_e) - 48;\n\n _t > 10 && (_t -= 7), o += _t * r;\n }\n\n return o;\n};\n\nvar encoding = {\n toAlphaCode: toAlphaCode,\n fromAlphaCode: fromAlphaCode\n},\n symbols = function symbols(n) {\n var o = new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");\n\n for (var e = 0; e < n.nodes.length; e++) {\n var t = o.exec(n.nodes[e]);\n\n if (!t) {\n n.symCount = e;\n break;\n }\n\n n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]);\n }\n\n n.nodes = n.nodes.slice(n.symCount, n.nodes.length);\n};\n\nvar indexFromRef = function indexFromRef(n, o, e) {\n var t = encoding.fromAlphaCode(o);\n return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount;\n},\n toArray = function toArray(n) {\n var o = [],\n e = function e(t, r) {\n var s = n.nodes[t];\n \"!\" === s[0] && (o.push(r), s = s.slice(1));\n var c = s.split(/([A-Z0-9,]+)/g);\n\n for (var _s = 0; _s < c.length; _s += 2) {\n var u = c[_s],\n i = c[_s + 1];\n if (!u) continue;\n var l = r + u;\n\n if (\",\" === i || void 0 === i) {\n o.push(l);\n continue;\n }\n\n var f = indexFromRef(n, i, t);\n e(f, l);\n }\n };\n\n return e(0, \"\"), o;\n},\n unpack = function unpack(n) {\n var o = {\n nodes: n.split(\";\"),\n syms: [],\n symCount: 0\n };\n return n.match(\":\") && symbols(o), toArray(o);\n};\n\nvar unpack_1$1 = unpack,\n unpack_1$1$1 = function unpack_1$1$1(n) {\n var o = n.split(\"|\").reduce(function (n, o) {\n var e = o.split(\"¦\");\n return n[e[0]] = e[1], n;\n }, {}),\n e = {};\n return Object.keys(o).forEach(function (n) {\n var t = unpack_1$1(o[n]);\n \"true\" === n && (n = !0);\n\n for (var _o2 = 0; _o2 < t.length; _o2++) {\n var r = t[_o2];\n !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n;\n }\n }), e;\n};\n\nvar efrtUnpack_min = unpack_1$1$1;\n\n//words that can't be compressed, for whatever reason\nvar misc = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n 'motel 6': 'Organization',\n g8: 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date',\n her: ['Possessive', 'Pronoun'],\n his: ['Possessive', 'Pronoun'],\n their: ['Possessive', 'Pronoun'],\n themselves: ['Possessive', 'Pronoun'],\n your: ['Possessive', 'Pronoun'],\n our: ['Possessive', 'Pronoun'],\n my: ['Possessive', 'Pronoun'],\n its: ['Possessive', 'Pronoun']\n};\n\nvar fancy = {\n Unit: function Unit(lex, w) {\n lex[w] = ['Abbreviation', 'Unit'];\n },\n Cardinal: function Cardinal(lex, w) {\n lex[w] = ['TextValue', 'Cardinal'];\n },\n TextOrdinal: function TextOrdinal(lex, w) {\n lex[w] = ['Ordinal', 'TextValue'];\n lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths'\n },\n // add plural/singular forms\n Singular: function Singular(lex, w, world) {\n lex[w] = 'Singular';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || 'Plural';\n },\n // conjugate these verbs\n Infinitive: function Infinitive(lex, w, world) {\n lex[w] = 'Infinitive';\n var conj = world.transforms.conjugate(w, world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]];\n lex[str] = lex[str] || tags[i]; // only if it's safe\n }\n },\n // conjugate other Adjectival forms\n Comparable: function Comparable(lex, w, world) {\n lex[w] = 'Comparable';\n var conj = world.transforms.adjectives(w);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var word = conj[tags[i]];\n lex[word] = lex[word] || tags[i]; // only if it's safe\n }\n },\n //conjugate phrasal-verbs\n PhrasalVerb: function PhrasalVerb(lex, w, world) {\n // whole thing\n lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form\n\n var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive'\n // //conjugate first word\n\n var conj = world.transforms.conjugate(words[0], world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]] + ' ' + words[1];\n lex[str] = lex[str] || ['PhrasalVerb', tags[i]];\n world.hasCompound[conj[tags[i]]] = true;\n }\n },\n // inflect our demonyms - 'germans'\n Demonym: function Demonym(lex, w, world) {\n lex[w] = 'Demonym';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe\n }\n}; // let a user explode their lexicon, too\n\nvar addWords = function addWords(wordsObj, lex, world) {\n Object.keys(wordsObj).forEach(function (word) {\n var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer\n\n if (tag === 'Abbreviation' || tag === 'Unit') {\n world.cache.abbreviations[word] = true;\n } // cache multi-words\n\n\n var multi = word.split(' ');\n\n if (multi.length > 1) {\n world.hasCompound[multi[0]] = true;\n } // do some ad-hoc work before adding it\n\n\n if (fancy[tag] !== undefined) {\n fancy[tag](lex, word, world);\n return;\n } //set it in our lexicon, basic\n\n\n if (lex[word] === undefined) {\n lex[word] = tag;\n return;\n } // if we already have that word\n\n\n if (typeof lex[word] === 'string') {\n lex[word] = [lex[word]];\n }\n\n if (typeof tag === 'string') {\n lex[word].push(tag);\n } else {\n lex[word] = lex[word].concat(tag);\n }\n });\n}; // we do some ad-hoc stuff here, building-up our word-list\n\n\nvar buildOut = function buildOut(world) {\n //our bag of words\n var lexicon = Object.assign({}, misc); // start adding words to the lex\n\n Object.keys(_data).forEach(function (tag) {\n var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks\n\n Object.keys(wordsObj).forEach(function (w) {\n wordsObj[w] = tag;\n });\n addWords(wordsObj, lexicon, world);\n }); // console.log(Object.keys(lexicon).length)\n\n return lexicon;\n};\n\nvar unpack_1 = {\n buildOut: buildOut,\n addWords: addWords\n};\n\n// add words from plurals and conjugations data\nvar addIrregulars = function addIrregulars(world) {\n //add irregular plural nouns\n var nouns = world.irregulars.nouns;\n var words = Object.keys(nouns);\n\n for (var i = 0; i < words.length; i++) {\n var w = words[i];\n world.words[w] = 'Singular';\n world.words[nouns[w]] = 'Plural';\n } // add irregular verb conjugations\n\n\n var verbs = world.irregulars.verbs;\n var keys = Object.keys(verbs);\n\n var _loop = function _loop(_i) {\n var inf = keys[_i]; //add only if it it's safe...\n\n world.words[inf] = world.words[inf] || 'Infinitive';\n var forms = world.transforms.conjugate(inf, world);\n forms = Object.assign(forms, verbs[inf]); //add the others\n\n Object.keys(forms).forEach(function (tag) {\n world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle\n\n if (world.words[forms[tag]] === 'Participle') {\n world.words[forms[tag]] = tag;\n }\n });\n };\n\n for (var _i = 0; _i < keys.length; _i++) {\n _loop(_i);\n }\n};\n\nvar addIrregulars_1 = addIrregulars;\n\n//nouns with irregular plural/singular forms\n//used in noun.inflect, and also in the lexicon.\nvar plurals = {\n addendum: 'addenda',\n alga: 'algae',\n alumna: 'alumnae',\n alumnus: 'alumni',\n analysis: 'analyses',\n antenna: 'antennae',\n appendix: 'appendices',\n avocado: 'avocados',\n axis: 'axes',\n bacillus: 'bacilli',\n barracks: 'barracks',\n beau: 'beaux',\n bus: 'buses',\n cactus: 'cacti',\n chateau: 'chateaux',\n child: 'children',\n circus: 'circuses',\n clothes: 'clothes',\n corpus: 'corpora',\n criterion: 'criteria',\n curriculum: 'curricula',\n database: 'databases',\n deer: 'deer',\n diagnosis: 'diagnoses',\n echo: 'echoes',\n embargo: 'embargoes',\n epoch: 'epochs',\n foot: 'feet',\n formula: 'formulae',\n fungus: 'fungi',\n genus: 'genera',\n goose: 'geese',\n halo: 'halos',\n hippopotamus: 'hippopotami',\n index: 'indices',\n larva: 'larvae',\n leaf: 'leaves',\n libretto: 'libretti',\n loaf: 'loaves',\n man: 'men',\n matrix: 'matrices',\n memorandum: 'memoranda',\n modulus: 'moduli',\n mosquito: 'mosquitoes',\n mouse: 'mice',\n // move: 'moves',\n nebula: 'nebulae',\n nucleus: 'nuclei',\n octopus: 'octopi',\n opus: 'opera',\n ovum: 'ova',\n ox: 'oxen',\n parenthesis: 'parentheses',\n person: 'people',\n phenomenon: 'phenomena',\n prognosis: 'prognoses',\n quiz: 'quizzes',\n radius: 'radii',\n referendum: 'referenda',\n rodeo: 'rodeos',\n sex: 'sexes',\n shoe: 'shoes',\n sombrero: 'sombreros',\n stimulus: 'stimuli',\n stomach: 'stomachs',\n syllabus: 'syllabi',\n synopsis: 'synopses',\n tableau: 'tableaux',\n thesis: 'theses',\n thief: 'thieves',\n tooth: 'teeth',\n tornado: 'tornados',\n tuxedo: 'tuxedos',\n vertebra: 'vertebrae' // virus: 'viri',\n // zero: 'zeros',\n\n};\n\n// a list of irregular verb conjugations\n// used in verbs().conjugate()\n// but also added to our lexicon\n//use shorter key-names\nvar mapping$1 = {\n g: 'Gerund',\n prt: 'Participle',\n perf: 'PerfectTense',\n pst: 'PastTense',\n fut: 'FuturePerfect',\n pres: 'PresentTense',\n pluperf: 'Pluperfect',\n a: 'Actor'\n}; // '_' in conjugations is the infinitive form\n// (order matters, to the lexicon)\n\nvar conjugations = {\n act: {\n a: '_or'\n },\n ache: {\n pst: 'ached',\n g: 'aching'\n },\n age: {\n g: 'ageing',\n pst: 'aged',\n pres: 'ages'\n },\n aim: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n arise: {\n prt: '_n',\n pst: 'arose'\n },\n babysit: {\n a: '_ter',\n pst: 'babysat'\n },\n ban: {\n a: '',\n g: '_ning',\n pst: '_ned'\n },\n be: {\n a: '',\n g: 'am',\n prt: 'been',\n pst: 'was',\n pres: 'is'\n },\n beat: {\n a: '_er',\n g: '_ing',\n prt: '_en'\n },\n become: {\n prt: '_'\n },\n begin: {\n g: '_ning',\n prt: 'begun',\n pst: 'began'\n },\n being: {\n g: 'are',\n pst: 'were',\n pres: 'are'\n },\n bend: {\n prt: 'bent'\n },\n bet: {\n a: '_ter',\n prt: '_'\n },\n bind: {\n pst: 'bound'\n },\n bite: {\n g: 'biting',\n prt: 'bitten',\n pst: 'bit'\n },\n bleed: {\n pst: 'bled',\n prt: 'bled'\n },\n blow: {\n prt: '_n',\n pst: 'blew'\n },\n boil: {\n a: '_er'\n },\n brake: {\n prt: 'broken'\n },\n \"break\": {\n pst: 'broke'\n },\n breed: {\n pst: 'bred'\n },\n bring: {\n pst: 'brought',\n prt: 'brought'\n },\n broadcast: {\n pst: '_'\n },\n budget: {\n pst: '_ed'\n },\n build: {\n pst: 'built',\n prt: 'built'\n },\n burn: {\n prt: '_ed'\n },\n burst: {\n prt: '_'\n },\n buy: {\n pst: 'bought',\n prt: 'bought'\n },\n can: {\n a: '',\n fut: '_',\n g: '',\n pst: 'could',\n perf: 'could',\n pluperf: 'could',\n pres: '_'\n },\n \"catch\": {\n pst: 'caught'\n },\n choose: {\n g: 'choosing',\n prt: 'chosen',\n pst: 'chose'\n },\n cling: {\n prt: 'clung'\n },\n come: {\n prt: '_',\n pst: 'came',\n g: 'coming'\n },\n compete: {\n a: 'competitor',\n g: 'competing',\n pst: '_d'\n },\n cost: {\n pst: '_'\n },\n creep: {\n prt: 'crept'\n },\n cut: {\n prt: '_'\n },\n deal: {\n pst: '_t',\n prt: '_t'\n },\n develop: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n die: {\n g: 'dying',\n pst: '_d'\n },\n dig: {\n g: '_ging',\n pst: 'dug',\n prt: 'dug'\n },\n dive: {\n prt: '_d'\n },\n \"do\": {\n pst: 'did',\n pres: '_es'\n },\n draw: {\n prt: '_n',\n pst: 'drew'\n },\n dream: {\n prt: '_t'\n },\n drink: {\n prt: 'drunk',\n pst: 'drank'\n },\n drive: {\n g: 'driving',\n prt: '_n',\n pst: 'drove'\n },\n drop: {\n g: '_ping',\n pst: '_ped'\n },\n eat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n pst: 'ate'\n },\n edit: {\n pst: '_ed',\n g: '_ing'\n },\n egg: {\n pst: '_ed'\n },\n fall: {\n prt: '_en',\n pst: 'fell'\n },\n feed: {\n prt: 'fed',\n pst: 'fed'\n },\n feel: {\n a: '_er',\n pst: 'felt'\n },\n fight: {\n pst: 'fought',\n prt: 'fought'\n },\n find: {\n pst: 'found'\n },\n flee: {\n g: '_ing',\n prt: 'fled'\n },\n fling: {\n prt: 'flung'\n },\n fly: {\n prt: 'flown',\n pst: 'flew'\n },\n forbid: {\n pst: 'forbade'\n },\n forget: {\n g: '_ing',\n prt: 'forgotten',\n pst: 'forgot'\n },\n forgive: {\n g: 'forgiving',\n prt: '_n',\n pst: 'forgave'\n },\n free: {\n a: '',\n g: '_ing'\n },\n freeze: {\n g: 'freezing',\n prt: 'frozen',\n pst: 'froze'\n },\n get: {\n pst: 'got',\n prt: 'gotten'\n },\n give: {\n g: 'giving',\n prt: '_n',\n pst: 'gave'\n },\n go: {\n prt: '_ne',\n pst: 'went',\n pres: 'goes'\n },\n grow: {\n prt: '_n'\n },\n guide: {\n pst: '_d'\n },\n hang: {\n pst: 'hung',\n prt: 'hung'\n },\n have: {\n g: 'having',\n pst: 'had',\n prt: 'had',\n pres: 'has'\n },\n hear: {\n pst: '_d',\n prt: '_d'\n },\n hide: {\n prt: 'hidden',\n pst: 'hid'\n },\n hit: {\n prt: '_'\n },\n hold: {\n pst: 'held',\n prt: 'held'\n },\n hurt: {\n pst: '_',\n prt: '_'\n },\n ice: {\n g: 'icing',\n pst: '_d'\n },\n imply: {\n pst: 'implied',\n pres: 'implies'\n },\n is: {\n a: '',\n g: 'being',\n pst: 'was',\n pres: '_'\n },\n keep: {\n prt: 'kept'\n },\n kneel: {\n prt: 'knelt'\n },\n know: {\n prt: '_n'\n },\n lay: {\n pst: 'laid',\n prt: 'laid'\n },\n lead: {\n pst: 'led',\n prt: 'led'\n },\n leap: {\n prt: '_t'\n },\n leave: {\n pst: 'left',\n prt: 'left'\n },\n lend: {\n prt: 'lent'\n },\n lie: {\n g: 'lying',\n pst: 'lay'\n },\n light: {\n pst: 'lit',\n prt: 'lit'\n },\n log: {\n g: '_ging',\n pst: '_ged'\n },\n loose: {\n prt: 'lost'\n },\n lose: {\n g: 'losing',\n pst: 'lost'\n },\n make: {\n pst: 'made',\n prt: 'made'\n },\n mean: {\n pst: '_t',\n prt: '_t'\n },\n meet: {\n a: '_er',\n g: '_ing',\n pst: 'met',\n prt: 'met'\n },\n miss: {\n pres: '_'\n },\n name: {\n g: 'naming'\n },\n patrol: {\n g: '_ling',\n pst: '_led'\n },\n pay: {\n pst: 'paid',\n prt: 'paid'\n },\n prove: {\n prt: '_n'\n },\n puke: {\n g: 'puking'\n },\n put: {\n prt: '_'\n },\n quit: {\n prt: '_'\n },\n read: {\n pst: '_',\n prt: '_'\n },\n ride: {\n prt: 'ridden'\n },\n reside: {\n pst: '_d'\n },\n ring: {\n pst: 'rang',\n prt: 'rung'\n },\n rise: {\n fut: 'will have _n',\n g: 'rising',\n prt: '_n',\n pst: 'rose',\n pluperf: 'had _n'\n },\n rub: {\n g: '_bing',\n pst: '_bed'\n },\n run: {\n g: '_ning',\n prt: '_',\n pst: 'ran'\n },\n say: {\n pst: 'said',\n prt: 'said',\n pres: '_s'\n },\n seat: {\n pst: 'sat',\n prt: 'sat'\n },\n see: {\n g: '_ing',\n prt: '_n',\n pst: 'saw'\n },\n seek: {\n prt: 'sought'\n },\n sell: {\n pst: 'sold',\n prt: 'sold'\n },\n send: {\n prt: 'sent'\n },\n set: {\n prt: '_'\n },\n sew: {\n prt: '_n'\n },\n shake: {\n prt: '_n'\n },\n shave: {\n prt: '_d'\n },\n shed: {\n g: '_ding',\n pst: '_',\n pres: '_s'\n },\n shine: {\n pst: 'shone',\n prt: 'shone'\n },\n shoot: {\n pst: 'shot',\n prt: 'shot'\n },\n show: {\n pst: '_ed'\n },\n shut: {\n prt: '_'\n },\n sing: {\n prt: 'sung',\n pst: 'sang'\n },\n sink: {\n pst: 'sank',\n pluperf: 'had sunk'\n },\n sit: {\n pst: 'sat'\n },\n ski: {\n pst: '_ied'\n },\n slay: {\n prt: 'slain'\n },\n sleep: {\n prt: 'slept'\n },\n slide: {\n pst: 'slid',\n prt: 'slid'\n },\n smash: {\n pres: '_es'\n },\n sneak: {\n prt: 'snuck'\n },\n speak: {\n fut: 'will have spoken',\n prt: 'spoken',\n pst: 'spoke',\n perf: 'have spoken',\n pluperf: 'had spoken'\n },\n speed: {\n prt: 'sped'\n },\n spend: {\n prt: 'spent'\n },\n spill: {\n prt: '_ed',\n pst: 'spilt'\n },\n spin: {\n g: '_ning',\n pst: 'spun',\n prt: 'spun'\n },\n spit: {\n prt: 'spat'\n },\n split: {\n prt: '_'\n },\n spread: {\n pst: '_'\n },\n spring: {\n prt: 'sprung'\n },\n stand: {\n pst: 'stood'\n },\n steal: {\n a: '_er',\n pst: 'stole'\n },\n stick: {\n pst: 'stuck'\n },\n sting: {\n pst: 'stung'\n },\n stink: {\n pst: 'stunk',\n prt: 'stunk'\n },\n stream: {\n a: '_er'\n },\n strew: {\n prt: '_n'\n },\n strike: {\n g: 'striking',\n pst: 'struck'\n },\n suit: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n sware: {\n prt: 'sworn'\n },\n swear: {\n pst: 'swore'\n },\n sweep: {\n prt: 'swept'\n },\n swim: {\n g: '_ming',\n pst: 'swam'\n },\n swing: {\n pst: 'swung'\n },\n take: {\n fut: 'will have _n',\n pst: 'took',\n perf: 'have _n',\n pluperf: 'had _n'\n },\n teach: {\n pst: 'taught',\n pres: '_es'\n },\n tear: {\n pst: 'tore'\n },\n tell: {\n pst: 'told'\n },\n think: {\n pst: 'thought'\n },\n thrive: {\n prt: '_d'\n },\n tie: {\n g: 'tying',\n pst: '_d'\n },\n undergo: {\n prt: '_ne'\n },\n understand: {\n pst: 'understood'\n },\n upset: {\n prt: '_'\n },\n wait: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n wake: {\n pst: 'woke'\n },\n wear: {\n pst: 'wore'\n },\n weave: {\n prt: 'woven'\n },\n wed: {\n pst: 'wed'\n },\n weep: {\n prt: 'wept'\n },\n win: {\n g: '_ning',\n pst: 'won'\n },\n wind: {\n prt: 'wound'\n },\n withdraw: {\n pst: 'withdrew'\n },\n wring: {\n prt: 'wrung'\n },\n write: {\n g: 'writing',\n prt: 'written',\n pst: 'wrote'\n }\n}; //uncompress our ad-hoc compression scheme\n\nvar keys = Object.keys(conjugations);\n\nvar _loop = function _loop(i) {\n var inf = keys[i];\n var _final = {};\n Object.keys(conjugations[inf]).forEach(function (key) {\n var str = conjugations[inf][key]; //swap-in infinitives for '_'\n\n str = str.replace('_', inf);\n var full = mapping$1[key];\n _final[full] = str;\n }); //over-write original\n\n conjugations[inf] = _final;\n};\n\nfor (var i = 0; i < keys.length; i++) {\n _loop(i);\n}\n\nvar conjugations_1 = conjugations;\n\nvar endsWith$1 = {\n b: [{\n reg: /([^aeiou][aeiou])b$/i,\n repl: {\n pr: '$1bs',\n pa: '$1bbed',\n gr: '$1bbing'\n }\n }],\n d: [{\n reg: /(end)$/i,\n repl: {\n pr: '$1s',\n pa: 'ent',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(eed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(ed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ded',\n ar: '$1der',\n gr: '$1ding'\n }\n }, {\n reg: /([^aeiou][ou])d$/i,\n repl: {\n pr: '$1ds',\n pa: '$1dded',\n gr: '$1dding'\n }\n }],\n e: [{\n reg: /(eave)$/i,\n repl: {\n pr: '$1s',\n pa: '$1d',\n gr: 'eaving',\n ar: '$1r'\n }\n }, {\n reg: /(ide)$/i,\n repl: {\n pr: '$1s',\n pa: 'ode',\n gr: 'iding',\n ar: 'ider'\n }\n }, {\n //shake\n reg: /(t|sh?)(ake)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1ook',\n gr: '$1aking',\n ar: '$1$2r'\n }\n }, {\n //awake\n reg: /w(ake)$/i,\n repl: {\n pr: 'w$1s',\n pa: 'woke',\n gr: 'waking',\n ar: 'w$1r'\n }\n }, {\n //make\n reg: /m(ake)$/i,\n repl: {\n pr: 'm$1s',\n pa: 'made',\n gr: 'making',\n ar: 'm$1r'\n }\n }, {\n reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing' // prt: '$1en',\n\n }\n }, {\n reg: /([bd]l)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(om)e$/i,\n repl: {\n pr: '$1es',\n pa: 'ame',\n gr: '$1ing'\n }\n }],\n g: [{\n reg: /([^aeiou][ou])g$/i,\n repl: {\n pr: '$1gs',\n pa: '$1gged',\n gr: '$1gging'\n }\n }],\n h: [{\n reg: /(..)([cs]h)$/i,\n repl: {\n pr: '$1$2es',\n pa: '$1$2ed',\n gr: '$1$2ing'\n }\n }],\n k: [{\n reg: /(ink)$/i,\n repl: {\n pr: '$1s',\n pa: 'unk',\n gr: '$1ing',\n ar: '$1er'\n }\n }],\n m: [{\n reg: /([^aeiou][aeiou])m$/i,\n repl: {\n pr: '$1ms',\n pa: '$1mmed',\n gr: '$1mming'\n }\n }],\n n: [{\n reg: /(en)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n p: [{\n reg: /(e)(ep)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1pt',\n gr: '$1$2ing',\n ar: '$1$2er'\n }\n }, {\n reg: /([^aeiou][aeiou])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1pped',\n gr: '$1pping'\n }\n }, {\n reg: /([aeiu])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1p',\n gr: '$1pping'\n }\n }],\n r: [{\n reg: /([td]er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n s: [{\n reg: /(ish|tch|ess)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n t: [{\n reg: /(ion|end|e[nc]t)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(.eat)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /([aeiu])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1t',\n gr: '$1tting'\n }\n }, {\n reg: /([^aeiou][aeiou])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1tted',\n gr: '$1tting'\n }\n }],\n w: [{\n reg: /(.llow)$/i,\n //follow, allow\n repl: {\n pr: '$1s',\n pa: '$1ed'\n }\n }, {\n reg: /(..)(ow)$/i,\n //grow\n repl: {\n pr: '$1$2s',\n pa: '$1ew',\n gr: '$1$2ing',\n prt: '$1$2n'\n }\n }],\n y: [{\n reg: /(i|f|rr)y$/i,\n repl: {\n pr: '$1ies',\n pa: '$1ied',\n gr: '$1ying'\n }\n }],\n z: [{\n reg: /([aeiou]zz)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }]\n};\nvar suffixes$1 = endsWith$1;\n\nvar posMap = {\n pr: 'PresentTense',\n pa: 'PastTense',\n gr: 'Gerund',\n prt: 'Participle',\n ar: 'Actor'\n};\n\nvar doTransform = function doTransform(str, obj) {\n var found = {};\n var keys = Object.keys(obj.repl);\n\n for (var i = 0; i < keys.length; i += 1) {\n var pos = keys[i];\n found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]);\n }\n\n return found;\n}; //look at the end of the word for clues\n\n\nvar checkSuffix = function checkSuffix() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var c = str[str.length - 1];\n\n if (suffixes$1.hasOwnProperty(c) === true) {\n for (var r = 0; r < suffixes$1[c].length; r += 1) {\n var reg = suffixes$1[c][r].reg;\n\n if (reg.test(str) === true) {\n return doTransform(str, suffixes$1[c][r]);\n }\n }\n }\n\n return {};\n};\n\nvar _01Suffixes = checkSuffix;\n\n//non-specifc, 'hail-mary' transforms from infinitive, into other forms\nvar hasY = /[bcdfghjklmnpqrstvwxz]y$/;\nvar generic = {\n Gerund: function Gerund(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf.replace(/e$/, 'ing');\n }\n\n return inf + 'ing';\n },\n PresentTense: function PresentTense(inf) {\n if (inf.charAt(inf.length - 1) === 's') {\n return inf + 'es';\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ies';\n }\n\n return inf + 's';\n },\n PastTense: function PastTense(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf + 'd';\n }\n\n if (inf.substr(-2) === 'ed') {\n return inf;\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ied';\n }\n\n return inf + 'ed';\n }\n};\nvar _02Generic = generic;\n\n//we assume the input word is a proper infinitive\n\nvar conjugate$2 = function conjugate() {\n var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var found = {}; // 1. look at irregulars\n //the lexicon doesn't pass this in\n\n if (world && world.irregulars) {\n if (world.irregulars.verbs.hasOwnProperty(inf) === true) {\n found = Object.assign({}, world.irregulars.verbs[inf]);\n }\n } //2. rule-based regex\n\n\n found = Object.assign({}, _01Suffixes(inf), found); //3. generic transformations\n //'buzzing'\n\n if (found.Gerund === undefined) {\n found.Gerund = _02Generic.Gerund(inf);\n } //'buzzed'\n\n\n if (found.PastTense === undefined) {\n found.PastTense = _02Generic.PastTense(inf);\n } //'buzzes'\n\n\n if (found.PresentTense === undefined) {\n found.PresentTense = _02Generic.PresentTense(inf);\n }\n\n return found;\n};\n\nvar conjugate_1$1 = conjugate$2; // console.log(conjugate('bake'))\n\n//turn 'quick' into 'quickest'\nvar do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/];\nvar dont_rules$1 = [/ary$/];\nvar irregulars$5 = {\n nice: 'nicest',\n late: 'latest',\n hard: 'hardest',\n inner: 'innermost',\n outer: 'outermost',\n far: 'furthest',\n worse: 'worst',\n bad: 'worst',\n good: 'best',\n big: 'biggest',\n large: 'largest'\n};\nvar transforms$2 = [{\n reg: /y$/i,\n repl: 'iest'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1ttest'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1dest'\n}, {\n reg: /nge$/i,\n repl: 'ngest'\n}, {\n reg: /([aeiou])te$/i,\n repl: '$1test'\n}];\n\nvar to_superlative = function to_superlative(str) {\n //irregulars\n if (irregulars$5.hasOwnProperty(str)) {\n return irregulars$5[str];\n } //known transforms\n\n\n for (var i = 0; i < transforms$2.length; i++) {\n if (transforms$2[i].reg.test(str)) {\n return str.replace(transforms$2[i].reg, transforms$2[i].repl);\n }\n } //dont-rules\n\n\n for (var _i = 0; _i < dont_rules$1.length; _i++) {\n if (dont_rules$1[_i].test(str) === true) {\n return null;\n }\n } //do-rules\n\n\n for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) {\n if (do_rules$1[_i2].test(str) === true) {\n if (str.charAt(str.length - 1) === 'e') {\n return str + 'st';\n }\n\n return str + 'est';\n }\n }\n\n return str + 'est';\n};\n\nvar toSuperlative = to_superlative;\n\n//turn 'quick' into 'quickly'\nvar do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/];\nvar dont_rules = [/ary$/, /ous$/];\nvar irregulars$4 = {\n grey: 'greyer',\n gray: 'grayer',\n green: 'greener',\n yellow: 'yellower',\n red: 'redder',\n good: 'better',\n well: 'better',\n bad: 'worse',\n sad: 'sadder',\n big: 'bigger'\n};\nvar transforms$1 = [{\n reg: /y$/i,\n repl: 'ier'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1tter'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1der'\n}, {\n reg: /nge$/i,\n repl: 'nger'\n}];\n\nvar to_comparative = function to_comparative(str) {\n //known-irregulars\n if (irregulars$4.hasOwnProperty(str)) {\n return irregulars$4[str];\n } //known-transforms\n\n\n for (var i = 0; i < transforms$1.length; i++) {\n if (transforms$1[i].reg.test(str) === true) {\n return str.replace(transforms$1[i].reg, transforms$1[i].repl);\n }\n } //dont-patterns\n\n\n for (var _i = 0; _i < dont_rules.length; _i++) {\n if (dont_rules[_i].test(str) === true) {\n return null;\n }\n } //do-patterns\n\n\n for (var _i2 = 0; _i2 < do_rules.length; _i2++) {\n if (do_rules[_i2].test(str) === true) {\n return str + 'er';\n }\n } //easy-one\n\n\n if (/e$/.test(str) === true) {\n return str + 'r';\n }\n\n return str + 'er';\n};\n\nvar toComparative = to_comparative;\n\nvar fns = {\n toSuperlative: toSuperlative,\n toComparative: toComparative\n};\n/** conjugate an adjective into other forms */\n\nvar conjugate$1 = function conjugate(w) {\n var res = {}; // 'greatest'\n\n var sup = fns.toSuperlative(w);\n\n if (sup) {\n res.Superlative = sup;\n } // 'greater'\n\n\n var comp = fns.toComparative(w);\n\n if (comp) {\n res.Comparative = comp;\n }\n\n return res;\n};\n\nvar adjectives$2 = conjugate$1;\n\n/** patterns for turning 'bus' to 'buses'*/\nvar suffixes = {\n a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']],\n e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']],\n f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']],\n i: [[/(octop|vir)i$/i, '$1i']],\n m: [[/([ti])um$/i, '$1a']],\n n: [[/^(oxen)$/i, '$1']],\n o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']],\n s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']],\n x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']],\n y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n z: [[/(quiz)$/i, '$1zes']]\n};\nvar _rules$2 = suffixes;\n\nvar addE = /(x|ch|sh|s|z)$/;\n\nvar trySuffix = function trySuffix(str) {\n var c = str[str.length - 1];\n\n if (_rules$2.hasOwnProperty(c) === true) {\n for (var i = 0; i < _rules$2[c].length; i += 1) {\n var reg = _rules$2[c][i][0];\n\n if (reg.test(str) === true) {\n return str.replace(reg, _rules$2[c][i][1]);\n }\n }\n }\n\n return null;\n};\n/** Turn a singular noun into a plural\n * assume the given string is singular\n */\n\n\nvar pluralize = function pluralize() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var irregulars = world.irregulars.nouns; // check irregulars list\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //we have some rules to try-out\n\n\n var plural = trySuffix(str);\n\n if (plural !== null) {\n return plural;\n } //like 'church'\n\n\n if (addE.test(str)) {\n return str + 'es';\n } // ¯\\_(ツ)_/¯\n\n\n return str + 's';\n};\n\nvar toPlural = pluralize;\n\n//patterns for turning 'dwarves' to 'dwarf'\nvar _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],\n[/(eas)es$/i, '$1e'], //diseases\n[/(..[aeiou]s)es$/i, '$1'], //geniouses\n[/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']];\n\nvar invertObj = function invertObj(obj) {\n return Object.keys(obj).reduce(function (h, k) {\n h[obj[k]] = k;\n return h;\n }, {});\n};\n\nvar toSingular = function toSingular(str, world) {\n var irregulars = world.irregulars.nouns;\n var invert = invertObj(irregulars); //(not very efficient)\n // check irregulars list\n\n if (invert.hasOwnProperty(str)) {\n return invert[str];\n } // go through our regexes\n\n\n for (var i = 0; i < _rules$1.length; i++) {\n if (_rules$1[i][0].test(str) === true) {\n str = str.replace(_rules$1[i][0], _rules$1[i][1]);\n return str;\n }\n }\n\n return str;\n};\n\nvar toSingular_1 = toSingular;\n\n//rules for turning a verb into infinitive form\nvar rules = {\n Participle: [{\n reg: /own$/i,\n to: 'ow'\n }, {\n reg: /(.)un([g|k])$/i,\n to: '$1in$2'\n }],\n Actor: [{\n reg: /(er)er$/i,\n to: '$1'\n }],\n PresentTense: [{\n reg: /(..)(ies)$/i,\n to: '$1y'\n }, {\n reg: /(tch|sh)es$/i,\n to: '$1'\n }, {\n reg: /(ss|zz)es$/i,\n to: '$1'\n }, {\n reg: /([tzlshicgrvdnkmu])es$/i,\n to: '$1e'\n }, {\n reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,\n to: '$1'\n }, {\n reg: /(ow)s$/i,\n to: '$1'\n }, {\n reg: /(op)s$/i,\n to: '$1'\n }, {\n reg: /([eirs])ts$/i,\n to: '$1t'\n }, {\n reg: /(ll)s$/i,\n to: '$1'\n }, {\n reg: /(el)s$/i,\n to: '$1'\n }, {\n reg: /(ip)es$/i,\n to: '$1e'\n }, {\n reg: /ss$/i,\n to: 'ss'\n }, {\n reg: /s$/i,\n to: ''\n }],\n Gerund: [{\n //popping -> pop\n reg: /(..)(p|d|t|g){2}ing$/i,\n to: '$1$2'\n }, {\n //fuzzing -> fuzz\n reg: /(ll|ss|zz)ing$/i,\n to: '$1'\n }, {\n reg: /([^aeiou])ying$/i,\n to: '$1y'\n }, {\n reg: /([^ae]i.)ing$/i,\n to: '$1e'\n }, {\n //eating, reading\n reg: /(ea[dklnrtv])ing$/i,\n to: '$1'\n }, {\n //washing -> wash\n reg: /(ch|sh)ing$/i,\n to: '$1'\n }, //soft-e forms:\n {\n //z : hazing (not buzzing)\n reg: /(z)ing$/i,\n to: '$1e'\n }, {\n //a : baking, undulating\n reg: /(a[gdkvtc])ing$/i,\n to: '$1e'\n }, {\n //u : conjuring, tubing\n reg: /(u[rtcbn])ing$/i,\n to: '$1e'\n }, {\n //o : forboding, poking, hoping, boring (not hooping)\n reg: /([^o]o[bdknprv])ing$/i,\n to: '$1e'\n }, {\n //ling : tingling, wrinkling, circling, scrambling, bustling\n reg: /([tbckg]l)ing$/i,\n //dp\n to: '$1e'\n }, {\n //cing : bouncing, denouncing\n reg: /(c|s)ing$/i,\n //dp\n to: '$1e'\n }, // {\n // //soft-e :\n // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i,\n // to: '$1e',\n // },\n {\n //fallback\n reg: /(..)ing$/i,\n to: '$1'\n }],\n PastTense: [{\n reg: /(ued)$/i,\n to: 'ue'\n }, {\n reg: /a([^aeiouy])ed$/i,\n to: 'a$1e'\n }, {\n reg: /([aeiou]zz)ed$/i,\n to: '$1'\n }, {\n reg: /(e|i)lled$/i,\n to: '$1ll'\n }, {\n reg: /(.)(sh|ch)ed$/i,\n to: '$1$2'\n }, {\n reg: /(tl|gl)ed$/i,\n to: '$1e'\n }, {\n reg: /(um?pt?)ed$/i,\n to: '$1'\n }, {\n reg: /(ss)ed$/i,\n to: '$1'\n }, {\n reg: /pped$/i,\n to: 'p'\n }, {\n reg: /tted$/i,\n to: 't'\n }, {\n reg: /(..)gged$/i,\n to: '$1g'\n }, {\n reg: /(..)lked$/i,\n to: '$1lk'\n }, {\n reg: /([^aeiouy][aeiou])ked$/i,\n to: '$1ke'\n }, {\n reg: /(.[aeiou])led$/i,\n to: '$1l'\n }, {\n reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,\n to: '$1$2'\n }, {\n reg: /(.ut)ed$/i,\n to: '$1e'\n }, {\n reg: /(.pt)ed$/i,\n to: '$1'\n }, {\n reg: /(us)ed$/i,\n to: '$1e'\n }, {\n reg: /(dd)ed$/i,\n to: '$1'\n }, {\n reg: /(..[^aeiouy])ed$/i,\n to: '$1e'\n }, {\n reg: /(..)ied$/i,\n to: '$1y'\n }, {\n reg: /(.o)ed$/i,\n to: '$1o'\n }, {\n reg: /(..i)ed$/i,\n to: '$1'\n }, {\n reg: /(.a[^aeiou])ed$/i,\n to: '$1'\n }, {\n //owed, aced\n reg: /([aeiou][^aeiou])ed$/i,\n to: '$1e'\n }, {\n reg: /([rl])ew$/i,\n to: '$1ow'\n }, {\n reg: /([pl])t$/i,\n to: '$1t'\n }]\n};\nvar _transform = rules;\n\nvar guessVerb = {\n Gerund: ['ing'],\n Actor: ['erer'],\n Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'],\n PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'],\n PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns']\n}; //flip it into a lookup object\n\nguessVerb = Object.keys(guessVerb).reduce(function (h, k) {\n guessVerb[k].forEach(function (a) {\n return h[a] = k;\n });\n return h;\n}, {});\nvar _guess = guessVerb;\n\n/** it helps to know what we're conjugating from */\n\nvar guessTense = function guessTense(str) {\n var three = str.substr(str.length - 3);\n\n if (_guess.hasOwnProperty(three) === true) {\n return _guess[three];\n }\n\n var two = str.substr(str.length - 2);\n\n if (_guess.hasOwnProperty(two) === true) {\n return _guess[two];\n }\n\n var one = str.substr(str.length - 1);\n\n if (one === 's') {\n return 'PresentTense';\n }\n\n return null;\n};\n\nvar toInfinitive$1 = function toInfinitive(str, world, tense) {\n if (!str) {\n return '';\n } //1. look at known irregulars\n\n\n if (world.words.hasOwnProperty(str) === true) {\n var irregs = world.irregulars.verbs;\n var keys = Object.keys(irregs);\n\n for (var i = 0; i < keys.length; i++) {\n var forms = Object.keys(irregs[keys[i]]);\n\n for (var o = 0; o < forms.length; o++) {\n if (str === irregs[keys[i]][forms[o]]) {\n return keys[i];\n }\n }\n }\n } // give'r!\n\n\n tense = tense || guessTense(str);\n\n if (tense && _transform[tense]) {\n for (var _i = 0; _i < _transform[tense].length; _i++) {\n var rule = _transform[tense][_i];\n\n if (rule.reg.test(str) === true) {\n // console.log(rule.reg)\n return str.replace(rule.reg, rule.to);\n }\n }\n }\n\n return str;\n};\n\nvar toInfinitive_1$1 = toInfinitive$1;\n\nvar irregulars$3 = {\n nouns: plurals,\n verbs: conjugations_1\n}; //these behaviours are configurable & shared across some plugins\n\nvar transforms = {\n conjugate: conjugate_1$1,\n adjectives: adjectives$2,\n toPlural: toPlural,\n toSingular: toSingular_1,\n toInfinitive: toInfinitive_1$1\n};\nvar _isVerbose = false;\n/** all configurable linguistic data */\n\nvar World = /*#__PURE__*/function () {\n function World() {\n _classCallCheck(this, World);\n\n // quiet these properties from a console.log\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'hasCompound', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'irregulars', {\n enumerable: false,\n value: irregulars$3,\n writable: true\n });\n Object.defineProperty(this, 'tags', {\n enumerable: false,\n value: Object.assign({}, tags),\n writable: true\n });\n Object.defineProperty(this, 'transforms', {\n enumerable: false,\n value: transforms,\n writable: true\n });\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true\n }); // cache our abbreviations for our sentence-parser\n\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: {}\n }\n }); // add our compressed data to lexicon\n\n this.words = unpack_1.buildOut(this); // add our irregulars to lexicon\n\n addIrregulars_1(this);\n }\n /** more logs for debugging */\n\n\n _createClass(World, [{\n key: \"verbose\",\n value: function verbose(bool) {\n _isVerbose = bool;\n return this;\n }\n }, {\n key: \"isVerbose\",\n value: function isVerbose() {\n return _isVerbose;\n }\n /** put new words into our lexicon, properly */\n\n }, {\n key: \"addWords\",\n value: function addWords(wordObj) {\n // clean them up a bit\n var cleaned = {};\n Object.keys(wordObj).forEach(function (w) {\n var tag = wordObj[w];\n w = w.toLowerCase().trim();\n cleaned[w] = tag;\n });\n unpack_1.addWords(cleaned, this.words, this);\n }\n /** add new custom conjugations */\n\n }, {\n key: \"addConjugations\",\n value: function addConjugations(obj) {\n Object.assign(this.irregulars.verbs, obj);\n return this;\n }\n /** add new custom plural/singular pairs */\n\n }, {\n key: \"addPlurals\",\n value: function addPlurals(obj) {\n Object.assign(this.irregulars.nouns, obj);\n return this;\n }\n /** extend the compromise tagset */\n\n }, {\n key: \"addTags\",\n value: function addTags(tags) {\n tags = Object.assign({}, tags);\n this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags\n\n this.tags = inference(this.tags);\n return this;\n }\n /** call methods after tagger runs */\n\n }, {\n key: \"postProcess\",\n value: function postProcess(fn) {\n this.taggers.push(fn);\n return this;\n }\n /** helper method for logging + debugging */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length,\n plurals: Object.keys(this.irregulars.nouns).length,\n conjugations: Object.keys(this.irregulars.verbs).length,\n compounds: Object.keys(this.hasCompound).length,\n postProcessors: this.taggers.length\n };\n }\n }]);\n\n return World;\n}(); // ¯\\_(:/)_/¯\n\n\nvar clone = function clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n/** produce a deep-copy of all lingustic data */\n\n\nWorld.prototype.clone = function () {\n var w2 = new World(); // these are simple to copy:\n\n w2.words = Object.assign({}, this.words);\n w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested:\n\n w2.irregulars = clone(this.irregulars);\n w2.tags = clone(this.tags); // these are functions\n\n w2.transforms = this.transforms;\n w2.taggers = this.taggers;\n return w2;\n};\n\nvar World_1 = World;\n\n/** return the root, first document */\n\nvar _01Utils = createCommonjsModule(function (module, exports) {\n exports.all = function () {\n return this.parents()[0] || this;\n };\n /** return the previous result */\n\n\n exports.parent = function () {\n if (this.from) {\n return this.from;\n }\n\n return this;\n };\n /** return a list of all previous results */\n\n\n exports.parents = function (n) {\n var arr = [];\n\n var addParent = function addParent(doc) {\n if (doc.from) {\n arr.push(doc.from);\n addParent(doc.from);\n }\n };\n\n addParent(this);\n arr = arr.reverse();\n\n if (typeof n === 'number') {\n return arr[n];\n }\n\n return arr;\n };\n /** deep-copy the document, so that no references remain */\n\n\n exports.clone = function (doShallow) {\n var list = this.list.map(function (ts) {\n return ts.clone(doShallow);\n });\n var tmp = this.buildFrom(list);\n return tmp;\n };\n /** how many seperate terms does the document have? */\n\n\n exports.wordCount = function () {\n return this.list.reduce(function (count, p) {\n count += p.wordCount();\n return count;\n }, 0);\n };\n\n exports.wordcount = exports.wordCount;\n /** turn on logging for decision-debugging */\n // exports.verbose = function(bool) {\n // if (bool === undefined) {\n // bool = true\n // }\n // this.world.verbose = bool\n // }\n});\n\n/** use only the first result(s) */\n\nvar _02Accessors = createCommonjsModule(function (module, exports) {\n exports.first = function (n) {\n if (n === undefined) {\n return this.get(0);\n }\n\n return this.slice(0, n);\n };\n /** use only the last result(s) */\n\n\n exports.last = function (n) {\n if (n === undefined) {\n return this.get(this.list.length - 1);\n }\n\n var end = this.list.length;\n return this.slice(end - n, end);\n };\n /** grab a given subset of the results*/\n\n\n exports.slice = function (start, end) {\n var list = this.list.slice(start, end);\n return this.buildFrom(list);\n };\n /* grab nth result */\n\n\n exports.eq = function (n) {\n var p = this.list[n];\n\n if (p === undefined) {\n return this.buildFrom([]);\n }\n\n return this.buildFrom([p]);\n };\n\n exports.get = exports.eq;\n /** grab term[0] for every match */\n\n exports.firstTerms = function () {\n return this.match('^.');\n };\n\n exports.firstTerm = exports.firstTerms;\n /** grab the last term for every match */\n\n exports.lastTerms = function () {\n return this.match('.$');\n };\n\n exports.lastTerm = exports.lastTerms;\n /** return a flat array of term objects */\n\n exports.termList = function (num) {\n var arr = []; //'reduce' but faster\n\n for (var i = 0; i < this.list.length; i++) {\n var terms = this.list[i].terms();\n\n for (var o = 0; o < terms.length; o++) {\n arr.push(terms[o]); //support .termList(4)\n\n if (num !== undefined && arr[num] !== undefined) {\n return arr[num];\n }\n }\n }\n\n return arr;\n };\n /* grab named capture group terms as object */\n\n\n var getGroups = function getGroups(doc) {\n var res = {};\n var allGroups = {};\n\n var _loop = function _loop(i) {\n var phrase = doc.list[i];\n var groups = Object.keys(phrase.groups).map(function (k) {\n return phrase.groups[k];\n });\n\n for (var j = 0; j < groups.length; j++) {\n var _groups$j = groups[j],\n group = _groups$j.group,\n start = _groups$j.start,\n length = _groups$j.length;\n\n if (!allGroups[group]) {\n allGroups[group] = [];\n }\n\n allGroups[group].push(phrase.buildFrom(start, length));\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n var keys = Object.keys(allGroups);\n\n for (var _i = 0; _i < keys.length; _i++) {\n var key = keys[_i];\n res[key] = doc.buildFrom(allGroups[key]);\n }\n\n return res;\n };\n /** lookup a named-group, by its name */\n\n\n var getOneName = function getOneName(doc, name) {\n var arr = [];\n\n var _loop2 = function _loop2(i) {\n var phrase = doc.list[i];\n var keys = Object.keys(phrase.groups);\n keys = keys.filter(function (id) {\n return phrase.groups[id].group === name;\n });\n keys.forEach(function (id) {\n arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length));\n });\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop2(i);\n }\n\n return doc.buildFrom(arr);\n };\n /** grab named capture group results */\n\n\n exports.groups = function (target) {\n if (target === undefined) {\n return getGroups(this);\n }\n\n if (typeof target === 'number') {\n target = String(target);\n }\n\n return getOneName(this, target) || this.buildFrom([]);\n };\n\n exports.group = exports.groups;\n /** get the full-sentence each phrase belongs to */\n\n exports.sentences = function (n) {\n var arr = [];\n this.list.forEach(function (p) {\n arr.push(p.fullSentence());\n });\n\n if (typeof n === 'number') {\n return this.buildFrom([arr[n]]);\n }\n\n return this.buildFrom(arr);\n };\n\n exports.sentence = exports.sentences;\n});\n\n// cache the easier conditions up-front\nvar cacheRequired$1 = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: needTags,\n words: needWords\n };\n}; // try to pre-fail as many matches as possible, without doing them\n\n\nvar failFast = function failFast(doc, regs) {\n if (doc._cache && doc._cache.set === true) {\n var _cacheRequired = cacheRequired$1(regs),\n words = _cacheRequired.words,\n tags = _cacheRequired.tags; //check required words\n\n\n for (var i = 0; i < words.length; i++) {\n if (doc._cache.words[words[i]] === undefined) {\n return false;\n }\n } //check required tags\n\n\n for (var _i = 0; _i < tags.length; _i++) {\n if (doc._cache.tags[tags[_i]] === undefined) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nvar _failFast = failFast;\n\nvar _03Match = createCommonjsModule(function (module, exports) {\n /** return a new Doc, with this one as a parent */\n exports.match = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // support '0' shorthand for named-groups\n if (typeof opts === 'string' || typeof opts === 'number' || opts === null) {\n opts = {\n group: opts\n };\n } //parse-up the input expression\n\n\n var regs = matchSyntax(reg, opts);\n\n if (regs.length === 0) {\n return this.buildFrom([]);\n } //check our cache, if it exists\n\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.match(regs));\n }, []); // support returning named groups\n\n if (opts.group !== undefined && opts.group !== null && opts.group !== '') {\n return this.buildFrom(matches).groups(opts.group);\n }\n\n return this.buildFrom(matches);\n };\n /** return all results except for this */\n\n\n exports.not = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n //parse-up the input expression\n var regs = matchSyntax(reg, opts); //if it's empty, return them all!\n\n if (regs.length === 0 || _failFast(this, regs) === false) {\n return this;\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.not(regs));\n }, []);\n return this.buildFrom(matches);\n };\n /** return only the first match */\n\n\n exports.matchOne = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //check our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n for (var i = 0; i < this.list.length; i++) {\n var match = this.list[i].match(regs, true);\n return this.buildFrom(match);\n }\n\n return this.buildFrom([]);\n };\n /** return each current phrase, only if it contains this match */\n\n\n exports[\"if\"] = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n var found = this.list.filter(function (p) {\n return p.has(regs) === true;\n });\n return this.buildFrom(found);\n };\n /** Filter-out any current phrases that have this match*/\n\n\n exports.ifNo = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts);\n var found = this.list.filter(function (p) {\n return p.has(regs) === false;\n });\n return this.buildFrom(found);\n };\n /**Return a boolean if this match exists */\n\n\n exports.has = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return false;\n }\n\n return this.list.some(function (p) {\n return p.has(regs) === true;\n });\n };\n /** match any terms after our matches, within the sentence */\n\n\n exports.lookAhead = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookAhead(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookAfter = exports.lookAhead;\n /** match any terms before our matches, within the sentence */\n\n exports.lookBehind = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookBehind(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookBefore = exports.lookBehind;\n /** return all terms before a match, in each phrase */\n\n exports.before = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var ids = p.terms().map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //nothing is before a first-term match\n\n if (index === 0 || index === -1) {\n return null;\n }\n\n return p.buildFrom(p.start, index);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return all terms after a match, in each phrase */\n\n\n exports.after = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var terms = p.terms();\n var ids = terms.map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //skip if nothing is after it\n\n if (index === -1 || !terms[index + m.length]) {\n return null;\n } //create the new phrase, after our match.\n\n\n var id = terms[index + m.length].id;\n var len = p.length - index - m.length;\n return p.buildFrom(id, len);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return only results with this match afterwards */\n\n\n exports.hasAfter = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookAfter(reg, opts).found;\n });\n };\n /** return only results with this match before it */\n\n\n exports.hasBefore = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookBefore(reg, opts).found;\n });\n };\n});\n\n/** apply a tag, or tags to all terms */\nvar tagTerms = function tagTerms(tag, doc, safe, reason) {\n var tagList = [];\n\n if (typeof tag === 'string') {\n tagList = tag.split(' ');\n } // doc.parents()[0].reasons.push(reason)\n //do indepenent tags for each term:\n\n\n doc.list.forEach(function (p) {\n var terms = p.terms(); // tagSafe - apply only to fitting terms\n\n if (safe === true) {\n terms = terms.filter(function (t) {\n return t.canBe(tag, doc.world);\n });\n }\n\n terms.forEach(function (t, i) {\n //fancy version:\n if (tagList.length > 1) {\n if (tagList[i] && tagList[i] !== '.') {\n t.tag(tagList[i], reason, doc.world);\n }\n } else {\n //non-fancy version (same tag for all terms)\n t.tag(tag, reason, doc.world);\n }\n });\n });\n return;\n};\n\nvar _setTag = tagTerms;\n\n/** Give all terms the given tag */\n\nvar tag = function tag(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, false, why);\n return this;\n};\n/** Only apply tag to terms if it is consistent with current tags */\n\n\nvar tagSafe = function tagSafe(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, true, why);\n return this;\n};\n/** Remove this term from the given terms */\n\n\nvar unTag = function unTag(tags, why) {\n var _this = this;\n\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t.unTag(tags, why, _this.world);\n });\n });\n return this;\n};\n/** return only the terms that can be this tag*/\n\n\nvar canBe = function canBe(tag) {\n if (!tag) {\n return this;\n }\n\n var world = this.world;\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.canBe(tag, world));\n }, []);\n return this.buildFrom(matches);\n};\n\nvar _04Tag = {\n tag: tag,\n tagSafe: tagSafe,\n unTag: unTag,\n canBe: canBe\n};\n\n/* run each phrase through a function, and create a new document */\nvar map = function map(fn) {\n var _this = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.map(function (p, i) {\n var doc = _this.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n var res = fn(doc, i); // if its a doc, return one result\n\n if (res && res.list && res.list[0]) {\n return res.list[0];\n }\n\n return res;\n }); //remove nulls\n\n list = list.filter(function (x) {\n return x;\n }); // return an empty response\n\n if (list.length === 0) {\n return this.buildFrom(list);\n } // if it is not a list of Phrase objects, then don't try to make a Doc object\n\n\n if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') {\n return list;\n }\n\n return this.buildFrom(list);\n};\n/** run a function on each phrase */\n\n\nvar forEach = function forEach(fn, detachParent) {\n var _this2 = this;\n\n if (!fn) {\n return this;\n }\n\n this.list.forEach(function (p, i) {\n var sub = _this2.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time.\n\n\n if (detachParent === true) {\n sub.from = null; //\n }\n\n fn(sub, i);\n });\n return this;\n};\n/** return only the phrases that return true */\n\n\nvar filter = function filter(fn) {\n var _this3 = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.filter(function (p, i) {\n var doc = _this3.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n return this.buildFrom(list);\n};\n/** return a document with only the first phrase that matches */\n\n\nvar find = function find(fn) {\n var _this4 = this;\n\n if (!fn) {\n return this;\n }\n\n var phrase = this.list.find(function (p, i) {\n var doc = _this4.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n\n if (phrase) {\n return this.buildFrom([phrase]);\n }\n\n return undefined;\n};\n/** return true or false if there is one matching phrase */\n\n\nvar some = function some(fn) {\n var _this5 = this;\n\n if (!fn) {\n return this;\n }\n\n return this.list.some(function (p, i) {\n var doc = _this5.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n};\n/** sample a subset of the results */\n\n\nvar random = function random(n) {\n if (!this.found) {\n return this;\n }\n\n var r = Math.floor(Math.random() * this.list.length);\n\n if (n === undefined) {\n var list = [this.list[r]];\n return this.buildFrom(list);\n } //prevent it from going over the end\n\n\n if (r + n > this.length) {\n r = this.length - n;\n r = r < 0 ? 0 : r;\n }\n\n return this.slice(r, r + n);\n};\n/** combine each phrase into a new data-structure */\n// exports.reduce = function(fn, h) {\n// let list = this.list.reduce((_h, ts) => {\n// let doc = this.buildFrom([ts])\n// doc.from = null //it's not a child/parent\n// return fn(_h, doc)\n// }, h)\n// return this.buildFrom(list)\n// }\n\n\nvar _05Loops = {\n map: map,\n forEach: forEach,\n filter: filter,\n find: find,\n some: some,\n random: random\n};\n\n// const tokenize = require('../../01-tokenizer/02-words')\nvar tokenize = function tokenize(str) {\n return str.split(/[ -]/g);\n}; // take a list of strings\n// look them up in the document\n\n\nvar buildTree = function buildTree(termList) {\n var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var root = {}; // parse our input\n\n termList.forEach(function (str, i) {\n var val = true;\n\n if (values[i] !== undefined) {\n val = values[i];\n } // some rough normalization\n\n\n str = (str || '').toLowerCase();\n str = str.replace(/[,;.!?]+$/, '');\n var arr = tokenize(str).map(function (s) {\n return s.trim();\n });\n root[arr[0]] = root[arr[0]] || {};\n\n if (arr.length === 1) {\n root[arr[0]].value = val;\n } else {\n root[arr[0]].more = root[arr[0]].more || [];\n root[arr[0]].more.push({\n rest: arr.slice(1),\n value: val\n });\n }\n }); // sort by longest-first?\n // console.log(JSON.stringify(root, null, 2))\n\n return root;\n};\n\nvar fastLookup = function fastLookup(termList, values, doc) {\n var root = buildTree(termList, values);\n var found = []; // each phrase\n\n var _loop = function _loop(i) {\n var p = doc.list[i];\n var terms = p.terms();\n var words = terms.map(function (t) {\n return t.reduced;\n }); // each word\n\n var _loop2 = function _loop2(w) {\n if (root[words[w]] !== undefined) {\n // is it a multi-word match?\n if (root[words[w]].more !== undefined) {\n root[words[w]].more.forEach(function (more) {\n // is it too-long?\n if (words[w + more.rest.length] === undefined) {\n return;\n } // compare each subsequent term\n\n\n var everyTerm = more.rest.every(function (word, r) {\n return word === words[w + r + 1];\n });\n\n if (everyTerm === true) {\n found.push({\n id: p.terms()[w].id,\n value: more.value,\n length: more.rest.length + 1\n });\n }\n });\n } // is it a single-word match?\n\n\n if (root[words[w]].value !== undefined) {\n found.push({\n id: p.terms()[w].id,\n value: root[words[w]].value,\n length: 1\n });\n }\n }\n };\n\n for (var w = 0; w < words.length; w++) {\n _loop2(w);\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n return found;\n};\n\nvar _lookup = fastLookup;\n\nvar _06Lookup = createCommonjsModule(function (module, exports) {\n // compare one term and one match\n // const doesMatch = function(term, str) {\n // if (str === '') {\n // return false\n // }\n // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str\n // }\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n };\n /** lookup an array of words or phrases */\n\n\n exports.lookup = function (arr) {\n var _this = this;\n\n var values = []; //is it a {key:val} object?\n\n var isObj = isObject(arr);\n\n if (isObj === true) {\n arr = Object.keys(arr).map(function (k) {\n values.push(arr[k]);\n return k;\n });\n } // support .lookup('foo')\n\n\n if (typeof arr === 'string') {\n arr = [arr];\n } //make sure we go fast.\n\n\n if (this._cache.set !== true) {\n this.cache();\n }\n\n var found = _lookup(arr, values, this);\n var p = this.list[0]; // make object response\n\n if (isObj === true) {\n var byVal = {};\n found.forEach(function (o) {\n byVal[o.value] = byVal[o.value] || [];\n byVal[o.value].push(p.buildFrom(o.id, o.length));\n });\n Object.keys(byVal).forEach(function (k) {\n byVal[k] = _this.buildFrom(byVal[k]);\n });\n return byVal;\n } // otherwise, make array response:\n\n\n found = found.map(function (o) {\n return p.buildFrom(o.id, o.length);\n });\n return this.buildFrom(found);\n };\n\n exports.lookUp = exports.lookup;\n});\n\n/** freeze the current state of the document, for speed-purposes*/\nvar cache = function cache(options) {\n var _this = this;\n\n options = options || {};\n var words = {};\n var tags = {};\n this._cache.words = words;\n this._cache.tags = tags;\n this._cache.set = true;\n this.list.forEach(function (p, i) {\n p.cache = p.cache || {}; //p.terms get cached automatically\n\n var terms = p.terms(); // cache all the terms\n\n terms.forEach(function (t) {\n if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) {\n return; //skip prototype words\n }\n\n words[t.reduced] = words[t.reduced] || [];\n words[t.reduced].push(i);\n Object.keys(t.tags).forEach(function (tag) {\n tags[tag] = tags[tag] || [];\n tags[tag].push(i);\n }); // cache root-form on Term, too\n\n if (options.root) {\n t.setRoot(_this.world);\n words[t.root] = [i];\n }\n });\n });\n return this;\n};\n/** un-freezes the current state of the document, so it may be transformed */\n\n\nvar uncache = function uncache() {\n this._cache = {};\n this.list.forEach(function (p) {\n p.cache = {};\n }); // do parents too?\n\n this.parents().forEach(function (doc) {\n doc._cache = {};\n doc.list.forEach(function (p) {\n p.cache = {};\n });\n });\n return this;\n};\n\nvar _07Cache = {\n cache: cache,\n uncache: uncache\n};\n\nvar titleCase$1 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** substitute-in new content */\n\n\nvar replaceWith = function replaceWith(replace) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!replace) {\n return this[\"delete\"]();\n } //support old-style params\n\n\n if (options === true) {\n options = {\n keepTags: true\n };\n }\n\n if (options === false) {\n options = {\n keepTags: false\n };\n }\n\n options = options || {}; // clear the cache\n\n this.uncache(); // return this\n\n this.list.forEach(function (p) {\n var input = replace; // accept a function for replace\n\n if (typeof replace === 'function') {\n input = replace(p);\n }\n\n var newPhrases; // accept a Doc object to replace\n\n if (input && _typeof(input) === 'object' && input.isA === 'Doc') {\n newPhrases = input.list;\n\n _this.pool().merge(input.pool());\n } else if (typeof input === 'string') {\n //input is a string\n if (options.keepCase !== false && p.terms(0).isTitleCase()) {\n input = titleCase$1(input);\n }\n\n newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases\n\n var tmpDoc = _this.buildFrom(newPhrases);\n\n tmpDoc.tagger();\n newPhrases = tmpDoc.list;\n } else {\n return; //don't even bother\n } // try to keep its old tags, if appropriate\n\n\n if (options.keepTags === true) {\n var oldTags = p.json({\n terms: {\n tags: true\n }\n }).terms;\n newPhrases[0].terms().forEach(function (t, i) {\n if (oldTags[i]) {\n t.tagSafe(oldTags[i].tags, 'keptTag', _this.world);\n }\n });\n }\n\n p.replace(newPhrases[0], _this); //Oneday: support multi-sentence replacements\n });\n return this;\n};\n/** search and replace match with new content */\n\n\nvar replace = function replace(match, _replace, options) {\n // if there's no 2nd param, use replaceWith\n if (_replace === undefined) {\n return this.replaceWith(match, options);\n }\n\n this.match(match).replaceWith(_replace, options);\n return this;\n};\n\nvar _01Replace = {\n replaceWith: replaceWith,\n replace: replace\n};\n\nvar _02Insert = createCommonjsModule(function (module, exports) {\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n }; // if it's empty, just create the phrase\n\n\n var makeNew = function makeNew(str, doc) {\n var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now\n\n var tmpDoc = doc.buildFrom([phrase]);\n tmpDoc.tagger();\n doc.list = tmpDoc.list;\n return doc;\n };\n /** add these new terms to the end*/\n\n\n exports.append = function () {\n var _this = this;\n\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to end of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this.buildFrom([phrase]);\n\n tmpDoc.tagger(); // push it onto the end\n\n p.append(phrase, _this);\n });\n return this;\n };\n\n exports.insertAfter = exports.append;\n exports.insertAt = exports.append;\n /** add these new terms to the front*/\n\n exports.prepend = function (str) {\n var _this2 = this;\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to start of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this2.buildFrom([phrase]);\n\n tmpDoc.tagger(); // add it to the start\n\n p.prepend(phrase, _this2);\n });\n return this;\n };\n\n exports.insertBefore = exports.prepend;\n /** add these new things to the end*/\n\n exports.concat = function () {\n // clear the cache\n this.uncache();\n var list = this.list.slice(0); //repeat for any number of params\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]; //support a fresh string\n\n if (typeof arg === 'string') {\n var arr = _01Tokenizer(arg, this.world); //TODO: phrase.tagger()?\n\n list = list.concat(arr);\n } else if (arg.isA === 'Doc') {\n list = list.concat(arg.list);\n } else if (arg.isA === 'Phrase') {\n list.push(arg);\n }\n }\n\n return this.buildFrom(list);\n };\n /** fully remove these terms from the document */\n\n\n exports[\"delete\"] = function (match) {\n var _this3 = this;\n\n // clear the cache\n this.uncache();\n var toRemove = this;\n\n if (match) {\n toRemove = this.match(match);\n }\n\n toRemove.list.forEach(function (phrase) {\n return phrase[\"delete\"](_this3);\n });\n return this;\n }; // aliases\n\n\n exports.remove = exports[\"delete\"];\n});\n\nvar shouldTrim = {\n clean: true,\n reduced: true,\n root: true\n};\n/** return the document as text */\n\nvar text = function text(options) {\n var _this = this;\n\n options = options || {}; //are we showing every phrase?\n\n var showFull = false;\n\n if (this.parents().length === 0) {\n showFull = true;\n } // cache roots, if necessary\n\n\n if (options === 'root' || _typeof(options) === 'object' && options.root) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var txt = this.list.reduce(function (str, p, i) {\n var trimPre = !showFull && i === 0;\n var trimPost = !showFull && i === _this.list.length - 1;\n return str + p.text(options, trimPre, trimPost);\n }, ''); // clumsy final trim of leading/trailing whitespace\n\n if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) {\n txt = txt.trim();\n }\n\n return txt;\n};\n\nvar _01Text = {\n text: text\n};\n\n// get all character startings in doc\nvar termOffsets = function termOffsets(doc) {\n var elapsed = 0;\n var index = 0;\n var offsets = {};\n doc.termList().forEach(function (term) {\n offsets[term.id] = {\n index: index,\n start: elapsed + term.pre.length,\n length: term.text.length\n };\n elapsed += term.pre.length + term.text.length + term.post.length;\n index += 1;\n });\n return offsets;\n};\n\nvar calcOffset = function calcOffset(doc, result, options) {\n // calculate offsets for each term\n var offsets = termOffsets(doc.all()); // add index values\n\n if (options.terms.index || options.index) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.index = offsets[t.id].index;\n });\n o.index = o.terms[0].index;\n });\n } // add offset values\n\n\n if (options.terms.offset || options.offset) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.offset = offsets[t.id] || {};\n }); // let len = o.terms.reduce((n, t, i) => {\n // n += t.offset.length || 0\n // //add whitespace, too\n // console.log(t.post)\n // return n\n // }, 0)\n // The offset information for the entire doc starts at (or just before)\n // the first term, and is as long as the whole text. The code originally\n // copied the entire offset value from terms[0], but since we're now\n // overriding 2 of the three fields, it's cleaner to just create an all-\n // new object and not pretend it's \"just\" the same as terms[0].\n\n o.offset = {\n index: o.terms[0].offset.index,\n start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text),\n length: o.text.length\n };\n });\n }\n};\n\nvar _offset = calcOffset;\n\nvar _02Json = createCommonjsModule(function (module, exports) {\n var jsonDefaults = {\n text: true,\n terms: true,\n trim: true\n }; //some options have dependents\n\n var setOptions = function setOptions(options) {\n options = Object.assign({}, jsonDefaults, options);\n\n if (options.unique) {\n options.reduced = true;\n } //offset calculation requires these options to be on\n\n\n if (options.offset) {\n options.text = true;\n\n if (!options.terms || options.terms === true) {\n options.terms = {};\n }\n\n options.terms.offset = true;\n }\n\n if (options.index || options.terms.index) {\n options.terms = options.terms === true ? {} : options.terms;\n options.terms.id = true;\n }\n\n return options;\n };\n /** pull out desired metadata from the document */\n\n\n exports.json = function () {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n //support json(3) format\n if (typeof options === 'number' && this.list[options]) {\n return this.list[options].json(jsonDefaults);\n }\n\n options = setOptions(options); // cache root strings beforehand, if necessary\n\n if (options.root === true) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var result = this.list.map(function (p) {\n return p.json(options, _this.world);\n }); // add offset and index data for each term\n\n if (options.terms.offset || options.offset || options.terms.index || options.index) {\n _offset(this, result, options);\n } // add frequency #s\n\n\n if (options.frequency || options.freq || options.count) {\n var obj = {};\n this.list.forEach(function (p) {\n var str = p.text('reduced');\n obj[str] = obj[str] || 0;\n obj[str] += 1;\n });\n this.list.forEach(function (p, i) {\n result[i].count = obj[p.text('reduced')];\n });\n } // remove duplicates\n\n\n if (options.unique) {\n var already = {};\n result = result.filter(function (o) {\n if (already[o.reduced] === true) {\n return false;\n }\n\n already[o.reduced] = true;\n return true;\n });\n }\n\n return result;\n }; //aliases\n\n\n exports.data = exports.json;\n});\n\nvar _debug = createCommonjsModule(function (module) {\n // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\n var reset = '\\x1b[0m';\n\n var padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n };\n\n function isClientSide() {\n return typeof window !== 'undefined' && window.document;\n } // some nice colors for client-side debug\n\n\n var css = {\n green: '#7f9c6c',\n red: '#914045',\n blue: '#6699cc',\n magenta: '#6D5685',\n cyan: '#2D85A8',\n yellow: '#e6d7b3',\n black: '#303b50'\n };\n\n var logClientSide = function logClientSide(doc) {\n var tagset = doc.world.tags;\n doc.list.forEach(function (p) {\n console.log('\\n%c\"' + p.text() + '\"', 'color: #e6d7b3;');\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 8);\n var found = tags.find(function (tag) {\n return tagset[tag] && tagset[tag].color;\n });\n var color = 'steelblue';\n\n if (tagset[found]) {\n color = tagset[found].color;\n color = css[color];\n }\n\n console.log(\" \".concat(word, \" - %c\").concat(tags.join(', ')), \"color: \".concat(color || 'steelblue', \";\"));\n });\n });\n }; //cheaper than requiring chalk\n\n\n var cli = {\n green: function green(str) {\n return '\\x1b[32m' + str + reset;\n },\n red: function red(str) {\n return '\\x1b[31m' + str + reset;\n },\n blue: function blue(str) {\n return '\\x1b[34m' + str + reset;\n },\n magenta: function magenta(str) {\n return '\\x1b[35m' + str + reset;\n },\n cyan: function cyan(str) {\n return '\\x1b[36m' + str + reset;\n },\n yellow: function yellow(str) {\n return '\\x1b[33m' + str + reset;\n },\n black: function black(str) {\n return '\\x1b[30m' + str + reset;\n }\n };\n\n var tagString = function tagString(tags, world) {\n tags = tags.map(function (tag) {\n if (!world.tags.hasOwnProperty(tag)) {\n return tag;\n }\n\n var c = world.tags[tag].color || 'blue';\n return cli[c](tag);\n });\n return tags.join(', ');\n }; //output some helpful stuff to the console\n\n\n var debug = function debug(doc) {\n if (isClientSide()) {\n logClientSide(doc);\n return doc;\n }\n\n console.log(cli.blue('====='));\n doc.list.forEach(function (p) {\n console.log(cli.blue(' -----'));\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n {\n text = cli.yellow(text);\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 18);\n var str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world);\n console.log(str);\n });\n });\n console.log('');\n return doc;\n };\n\n module.exports = debug;\n});\n\nvar topk = function topk(doc) {\n var list = doc.json({\n text: false,\n terms: false,\n reduced: true\n }); // combine them\n\n var obj = {};\n list.forEach(function (o) {\n if (!obj[o.reduced]) {\n o.count = 0;\n obj[o.reduced] = o;\n }\n\n obj[o.reduced].count += 1;\n });\n var arr = Object.keys(obj).map(function (k) {\n return obj[k];\n }); // sort them\n\n arr.sort(function (a, b) {\n if (a.count > b.count) {\n return -1;\n } else if (a.count < b.count) {\n return 1;\n }\n\n return 0;\n });\n return arr;\n};\n\nvar _topk = topk;\n\n/** pretty-print the current document and its tags */\n\nvar debug_1 = function debug_1() {\n _debug(this);\n return this;\n};\n/** some named output formats */\n\n\nvar out = function out(method) {\n if (method === 'text') {\n return this.text();\n }\n\n if (method === 'normal') {\n return this.text('normal');\n }\n\n if (method === 'json') {\n return this.json();\n }\n\n if (method === 'offset' || method === 'offsets') {\n return this.json({\n offset: true\n });\n }\n\n if (method === 'array') {\n return this.json({\n terms: false\n }).map(function (obj) {\n return obj.text;\n }).filter(function (str) {\n return str;\n });\n }\n\n if (method === 'freq' || method === 'frequency') {\n return _topk(this);\n }\n\n if (method === 'terms') {\n var list = [];\n this.json({\n text: false,\n terms: {\n text: true\n }\n }).forEach(function (obj) {\n var terms = obj.terms.map(function (t) {\n return t.text;\n });\n terms = terms.filter(function (t) {\n return t;\n });\n list = list.concat(terms);\n });\n return list;\n }\n\n if (method === 'tags') {\n return this.list.map(function (p) {\n return p.terms().reduce(function (h, t) {\n h[t.clean || t.implicit] = Object.keys(t.tags);\n return h;\n }, {});\n });\n }\n\n if (method === 'debug') {\n _debug(this);\n return this;\n }\n\n return this.text();\n};\n\nvar _03Out = {\n debug: debug_1,\n out: out\n};\n\nvar methods$6 = {\n /** alphabetical order */\n alpha: function alpha(a, b) {\n var left = a.text('clean');\n var right = b.text('clean');\n\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n },\n\n /** count the # of characters of each match */\n length: function length(a, b) {\n var left = a.text().trim().length;\n var right = b.text().trim().length;\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n },\n\n /** count the # of terms in each match */\n wordCount: function wordCount(a, b) {\n var left = a.wordCount();\n var right = b.wordCount();\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n }\n};\n/** sort by # of duplicates in the document*/\n\nvar byFreq = function byFreq(doc) {\n var counts = {};\n var options = {\n \"case\": true,\n punctuation: false,\n whitespace: true,\n unicode: true\n };\n doc.list.forEach(function (p) {\n var str = p.text(options);\n counts[str] = counts[str] || 0;\n counts[str] += 1;\n }); // sort by freq\n\n doc.list.sort(function (a, b) {\n var left = counts[a.text(options)];\n var right = counts[b.text(options)];\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; // order results 'chronologically', or document-order\n\n\nvar sortSequential = function sortSequential(doc) {\n var order = {};\n doc.json({\n terms: {\n offset: true\n }\n }).forEach(function (o) {\n order[o.terms[0].id] = o.terms[0].offset.start;\n });\n doc.list = doc.list.sort(function (a, b) {\n if (order[a.start] > order[b.start]) {\n return 1;\n } else if (order[a.start] < order[b.start]) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; //aliases\n\n\nmethods$6.alphabetical = methods$6.alpha;\nmethods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering\n\nvar seqNames = {\n index: true,\n sequence: true,\n seq: true,\n sequential: true,\n chron: true,\n chronological: true\n};\n/** re-arrange the order of the matches (in place) */\n\nvar sort = function sort(input) {\n input = input || 'alpha'; //do this one up-front\n\n if (input === 'freq' || input === 'frequency' || input === 'topk') {\n return byFreq(this);\n }\n\n if (seqNames.hasOwnProperty(input)) {\n return sortSequential(this);\n }\n\n input = methods$6[input] || input; // apply sort method on each phrase\n\n if (typeof input === 'function') {\n this.list = this.list.sort(input);\n return this;\n }\n\n return this;\n};\n/** reverse the order of the matches, but not the words */\n\n\nvar reverse = function reverse() {\n var list = [].concat(this.list);\n list = list.reverse();\n return this.buildFrom(list);\n};\n/** remove any duplicate matches */\n\n\nvar unique$1 = function unique() {\n var list = [].concat(this.list);\n var obj = {};\n list = list.filter(function (p) {\n var str = p.text('reduced').trim() || p.text('implicit').trim();\n\n if (obj.hasOwnProperty(str) === true) {\n return false;\n }\n\n obj[str] = true;\n return true;\n });\n return this.buildFrom(list);\n};\n\nvar _01Sort = {\n sort: sort,\n reverse: reverse,\n unique: unique$1\n};\n\nvar isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g;\nvar quotes = /['‘’“”\"′″‴]+/g;\nvar methods$5 = {\n // cleanup newlines and extra spaces\n whitespace: function whitespace(doc) {\n var termArr = doc.list.map(function (ts) {\n return ts.terms();\n });\n termArr.forEach(function (terms, o) {\n terms.forEach(function (t, i) {\n // keep dashes between words\n if (t.hasDash() === true) {\n t.post = ' - ';\n return;\n } // remove existing spaces\n\n\n t.pre = t.pre.replace(/\\s/g, '');\n t.post = t.post.replace(/\\s/g, ''); //last word? ensure there's a next sentence.\n\n if (terms.length - 1 === i && !termArr[o + 1]) {\n return;\n } // no extra spaces for contractions\n\n\n if (t.implicit && Boolean(t.text) === true) {\n return;\n } // no extra spaces for hyphenated words\n\n\n if (t.hasHyphen() === true) {\n return;\n }\n\n t.post += ' ';\n });\n });\n },\n punctuation: function punctuation(termList) {\n termList.forEach(function (t) {\n // space between hyphenated words\n if (t.hasHyphen() === true) {\n t.post = ' ';\n }\n\n t.pre = t.pre.replace(isPunct, '');\n t.post = t.post.replace(isPunct, ''); // elipses\n\n t.post = t.post.replace(/\\.\\.\\./, ''); // only allow one exclamation\n\n if (/!/.test(t.post) === true) {\n t.post = t.post.replace(/!/g, '');\n t.post = '!' + t.post;\n } // only allow one question mark\n\n\n if (/\\?/.test(t.post) === true) {\n t.post = t.post.replace(/[\\?!]*/, '');\n t.post = '?' + t.post;\n }\n });\n },\n unicode: function unicode(termList) {\n termList.forEach(function (t) {\n if (t.isImplicit() === true) {\n return;\n }\n\n t.text = unicode_1(t.text);\n });\n },\n quotations: function quotations(termList) {\n termList.forEach(function (t) {\n t.post = t.post.replace(quotes, '');\n t.pre = t.pre.replace(quotes, '');\n });\n },\n adverbs: function adverbs(doc) {\n doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove();\n },\n // remove the '.' from 'Mrs.' (safely)\n abbreviations: function abbreviations(doc) {\n doc.list.forEach(function (ts) {\n var terms = ts.terms();\n terms.forEach(function (t, i) {\n if (t.tags.Abbreviation === true && terms[i + 1]) {\n t.post = t.post.replace(/^\\./, '');\n }\n });\n });\n }\n};\nvar _methods = methods$5;\n\nvar defaults = {\n // light\n whitespace: true,\n unicode: true,\n punctuation: true,\n emoji: true,\n acronyms: true,\n abbreviations: true,\n // medium\n \"case\": false,\n contractions: false,\n parentheses: false,\n quotations: false,\n adverbs: false,\n // heavy (loose legibility)\n possessives: false,\n verbs: false,\n nouns: false,\n honorifics: false // pronouns: true,\n\n};\nvar mapping = {\n light: {},\n medium: {\n \"case\": true,\n contractions: true,\n parentheses: true,\n quotations: true,\n adverbs: true\n }\n};\nmapping.heavy = Object.assign({}, mapping.medium, {\n possessives: true,\n verbs: true,\n nouns: true,\n honorifics: true\n});\n/** common ways to clean-up the document, and reduce noise */\n\nvar normalize = function normalize(options) {\n options = options || {}; // support named forms\n\n if (typeof options === 'string') {\n options = mapping[options] || {};\n } // set defaults\n\n\n options = Object.assign({}, defaults, options); // clear the cache\n\n this.uncache();\n var termList = this.termList(); // lowercase things\n\n if (options[\"case\"]) {\n this.toLowerCase();\n } //whitespace\n\n\n if (options.whitespace) {\n _methods.whitespace(this);\n } // unicode: é -> e\n\n\n if (options.unicode) {\n _methods.unicode(termList);\n } //punctuation - keep sentence punctation, quotes, parenths\n\n\n if (options.punctuation) {\n _methods.punctuation(termList);\n } // remove ':)'\n\n\n if (options.emoji) {\n this.remove('(#Emoji|#Emoticon)');\n } // 'f.b.i.' -> 'FBI'\n\n\n if (options.acronyms) {\n this.acronyms().strip(); // .toUpperCase()\n } // remove period from abbreviations\n\n\n if (options.abbreviations) {\n _methods.abbreviations(this);\n } // --Medium methods--\n // `isn't` -> 'is not'\n\n\n if (options.contraction || options.contractions) {\n this.contractions().expand();\n } // '(word)' -> 'word'\n\n\n if (options.parentheses) {\n this.parentheses().unwrap();\n } // remove \"\" punctuation\n\n\n if (options.quotations || options.quotes) {\n _methods.quotations(termList);\n } // remove any un-necessary adverbs\n\n\n if (options.adverbs) {\n _methods.adverbs(this);\n } // --Heavy methods--\n // `cory hart's -> cory hart'\n\n\n if (options.possessive || options.possessives) {\n this.possessives().strip();\n } // 'he walked' -> 'he walk'\n\n\n if (options.verbs) {\n this.verbs().toInfinitive();\n } // 'three dogs' -> 'three dog'\n\n\n if (options.nouns || options.plurals) {\n this.nouns().toSingular();\n } // remove 'Mr.' from 'Mr John Smith'\n\n\n if (options.honorifics) {\n this.remove('#Honorific');\n }\n\n return this;\n};\n\nvar _02Normalize = {\n normalize: normalize\n};\n\nvar _03Split = createCommonjsModule(function (module, exports) {\n /** return a Document with three parts for every match\n * seperate everything before the word, as a new phrase\n */\n exports.splitOn = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitOn(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before) {\n matches.push(parts.before);\n }\n\n if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** return a Document with two parts for every match\n * seperate everything after the word, as a new phrase\n */\n\n\n exports.splitAfter = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitAfter(this);\n } // start looking for our matches\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before && parts.match) {\n // merge these two together\n parts.before.length += parts.match.length;\n matches.push(parts.before);\n } else if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n\n exports.split = exports.splitAfter; //i guess?\n\n /** return a Document with two parts for every match */\n\n exports.splitBefore = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitBefore(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add before part in\n\n if (parts.before) {\n matches.push(parts.before);\n } // merge match+after\n\n\n if (parts.match && parts.after) {\n parts.match.length += parts.after.length;\n } // start matching now on the end\n\n\n carry = parts.match;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** split a document into labeled sections */\n\n\n exports.segment = function (regs, options) {\n regs = regs || {};\n options = options || {\n text: true\n };\n var doc = this;\n var keys = Object.keys(regs); // split em\n\n keys.forEach(function (k) {\n doc = doc.splitOn(k);\n }); //add labels for each section\n\n doc.list.forEach(function (p) {\n for (var i = 0; i < keys.length; i += 1) {\n if (p.has(keys[i])) {\n p.segment = regs[keys[i]];\n return;\n }\n }\n });\n return doc.list.map(function (p) {\n var res = p.json(options);\n res.segment = p.segment || null;\n return res;\n });\n };\n});\n\nvar eachTerm = function eachTerm(doc, fn) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t[fn](world);\n });\n });\n return doc;\n};\n/** turn every letter of every term to lower-cse */\n\n\nvar toLowerCase = function toLowerCase() {\n return eachTerm(this, 'toLowerCase');\n};\n/** turn every letter of every term to upper case */\n\n\nvar toUpperCase = function toUpperCase() {\n return eachTerm(this, 'toUpperCase');\n};\n/** upper-case the first letter of each term */\n\n\nvar toTitleCase = function toTitleCase() {\n return eachTerm(this, 'toTitleCase');\n};\n/** remove whitespace and title-case each term */\n\n\nvar toCamelCase = function toCamelCase() {\n this.list.forEach(function (p) {\n //remove whitespace\n var terms = p.terms();\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.toTitleCase();\n }\n\n if (i !== terms.length - 1) {\n t.post = '';\n }\n });\n }); // this.tag('#CamelCase', 'toCamelCase')\n\n return this;\n};\n\nvar _04Case = {\n toLowerCase: toLowerCase,\n toUpperCase: toUpperCase,\n toTitleCase: toTitleCase,\n toCamelCase: toCamelCase\n};\n\n/** add this punctuation or whitespace before each match: */\n\nvar _05Whitespace = createCommonjsModule(function (module, exports) {\n exports.pre = function (str, concat) {\n if (str === undefined) {\n return this.list[0].terms(0).pre;\n }\n\n this.list.forEach(function (p) {\n var term = p.terms(0);\n\n if (concat === true) {\n term.pre += str;\n } else {\n term.pre = str;\n }\n });\n return this;\n };\n /** add this punctuation or whitespace after each match: */\n\n\n exports.post = function (str, concat) {\n // return array of post strings\n if (str === undefined) {\n return this.list.map(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n return term.post;\n });\n } // set post string on all ends\n\n\n this.list.forEach(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n\n if (concat === true) {\n term.post += str;\n } else {\n term.post = str;\n }\n });\n return this;\n };\n /** remove start and end whitespace */\n\n\n exports.trim = function () {\n this.list = this.list.map(function (p) {\n return p.trim();\n });\n return this;\n };\n /** connect words with hyphen, and remove whitespace */\n\n\n exports.hyphenate = function () {\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.pre = '';\n }\n\n if (terms[i + 1]) {\n t.post = '-';\n }\n });\n });\n return this;\n };\n /** remove hyphens between words, and set whitespace */\n\n\n exports.dehyphenate = function () {\n var hasHyphen = /(-|–|—)/;\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t) {\n if (hasHyphen.test(t.post)) {\n t.post = ' ';\n }\n });\n });\n return this;\n };\n\n exports.deHyphenate = exports.dehyphenate;\n /** add quotations around these matches */\n\n exports.toQuotations = function (start, end) {\n start = start || \"\\\"\";\n end = end || \"\\\"\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n\n exports.toQuotation = exports.toQuotations;\n /** add brackets around these matches */\n\n exports.toParentheses = function (start, end) {\n start = start || \"(\";\n end = end || \")\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n});\n\n/** make all phrases into one phrase */\nvar join = function join(str) {\n // clear the cache\n this.uncache(); // make one large phrase - 'main'\n\n var main = this.list[0];\n var before = main.length;\n var removed = {};\n\n for (var i = 1; i < this.list.length; i++) {\n var p = this.list[i];\n removed[p.start] = true;\n var term = main.lastTerm(); // add whitespace between them\n\n if (str) {\n term.post += str;\n } // main -> p\n\n\n term.next = p.start; // main <- p\n\n p.terms(0).prev = term.id;\n main.length += p.length;\n main.cache = {};\n } // parents are bigger than than their children.\n // when we increase a child, we increase their parent too.\n\n\n var increase = main.length - before;\n this.parents().forEach(function (doc) {\n // increase length on each effected phrase\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var _i = 0; _i < terms.length; _i++) {\n if (terms[_i].id === main.start) {\n p.length += increase;\n break;\n }\n }\n\n p.cache = {};\n }); // remove redundant phrases now\n\n doc.list = doc.list.filter(function (p) {\n return removed[p.start] !== true;\n });\n }); // return one major phrase\n\n return this.buildFrom([main]);\n};\n\nvar _06Join = {\n join: join\n};\n\nvar postPunct = /[,\\)\"';:\\-–—\\.…]/; // const irregulars = {\n// 'will not': `won't`,\n// 'i am': `i'm`,\n// }\n\nvar setContraction = function setContraction(m, suffix) {\n if (!m.found) {\n return;\n }\n\n var terms = m.termList(); //avoid any problematic punctuation\n\n for (var i = 0; i < terms.length - 1; i++) {\n var t = terms[i];\n\n if (postPunct.test(t.post)) {\n return;\n }\n } // set them as implict\n\n\n terms.forEach(function (t) {\n t.implicit = t.clean;\n }); // perform the contraction\n\n terms[0].text += suffix; // clean-up the others\n\n terms.slice(1).forEach(function (t) {\n t.text = '';\n });\n\n for (var _i = 0; _i < terms.length - 1; _i++) {\n var _t = terms[_i];\n _t.post = _t.post.replace(/ /, '');\n }\n};\n/** turn 'i am' into i'm */\n\n\nvar contract = function contract() {\n var doc = this.not('@hasContraction'); // we are -> we're\n\n var m = doc.match('(we|they|you) are');\n setContraction(m, \"'re\"); // they will -> they'll\n\n m = doc.match('(he|she|they|it|we|you) will');\n setContraction(m, \"'ll\"); // she is -> she's\n\n m = doc.match('(he|she|they|it|we) is');\n setContraction(m, \"'s\"); // spencer is -> spencer's\n\n m = doc.match('#Person is');\n setContraction(m, \"'s\"); // spencer would -> spencer'd\n\n m = doc.match('#Person would');\n setContraction(m, \"'d\"); // would not -> wouldn't\n\n m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not');\n setContraction(m, \"n't\"); // i have -> i've\n\n m = doc.match('(i|we|they) have');\n setContraction(m, \"'ve\"); // would have -> would've\n\n m = doc.match('(would|should|could) have');\n setContraction(m, \"'ve\"); // i am -> i'm\n\n m = doc.match('i am');\n setContraction(m, \"'m\"); // going to -> gonna\n\n m = doc.match('going to');\n return this;\n};\n\nvar _07Contract = {\n contract: contract\n};\n\nvar methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract);\n\nvar methods$3 = {}; // allow helper methods like .adjectives() and .adverbs()\n\nvar arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']];\narr.forEach(function (a) {\n methods$3[a[0]] = function (n) {\n var m = this.match(a[1]);\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n}); // aliases\n\nmethods$3.emojis = methods$3.emoji;\nmethods$3.atmentions = methods$3.atMentions;\nmethods$3.words = methods$3.terms;\n/** return anything tagged as a phone number */\n\nmethods$3.phoneNumbers = function (n) {\n var m = this.splitAfter('@hasComma');\n m = m.match('#PhoneNumber+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** Deprecated: please use compromise-numbers plugin */\n\n\nmethods$3.money = function (n) {\n var m = this.match('#Money #Currency?');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all cities, countries, addresses, and regions */\n\n\nmethods$3.places = function (n) {\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep);\n m.sort('index');\n m = m.match('#Place+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all schools, businesses and institutions */\n\n\nmethods$3.organizations = function (n) {\n var m = this.clauses();\n m = m.match('#Organization+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n}; //combine them with .topics() method\n\n\nmethods$3.entities = function (n) {\n var r = this.clauses(); // Find people, places, and organizations\n\n var yup = r.people();\n yup = yup.concat(r.places());\n yup = yup.concat(r.organizations());\n var ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father'];\n yup = yup.not(ignore); //return them to normal ordering\n\n yup.sort('sequence'); // yup.unique() //? not sure\n\n if (typeof n === 'number') {\n yup = yup.get(n);\n }\n\n return yup;\n}; //aliases\n\n\nmethods$3.things = methods$3.entities;\nmethods$3.topics = methods$3.entities;\nvar _simple = methods$3;\n\nvar underOver = /^(under|over)-?/;\n/** match a word-sequence, like 'super bowl' in the lexicon */\n\nvar tryMultiple = function tryMultiple(terms, t, world) {\n var lex = world.words; //try a two-word version\n\n var txt = terms[t].reduced + ' ' + terms[t + 1].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-two', world);\n terms[t + 1].tag(lex[txt], 'lexicon-two', world);\n return 1;\n } //try a three-word version?\n\n\n if (t + 2 < terms.length) {\n txt += ' ' + terms[t + 2].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-three', world);\n terms[t + 1].tag(lex[txt], 'lexicon-three', world);\n terms[t + 2].tag(lex[txt], 'lexicon-three', world);\n return 2;\n }\n } //try a four-word version?\n\n\n if (t + 3 < terms.length) {\n txt += ' ' + terms[t + 3].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-four', world);\n terms[t + 1].tag(lex[txt], 'lexicon-four', world);\n terms[t + 2].tag(lex[txt], 'lexicon-four', world);\n terms[t + 3].tag(lex[txt], 'lexicon-four', world);\n return 3;\n }\n }\n\n return 0;\n};\n/** look at each word in our list of known-words */\n\n\nvar checkLexicon = function checkLexicon(terms, world) {\n var lex = world.words;\n var hasCompound = world.hasCompound; // use reduced?\n //go through each term, and check the lexicon\n\n for (var t = 0; t < terms.length; t += 1) {\n var str = terms[t].clean; //is it the start of a compound word, like 'super bowl'?\n\n if (hasCompound[str] === true && t + 1 < terms.length) {\n var foundWords = tryMultiple(terms, t, world);\n\n if (foundWords > 0) {\n t += foundWords; //skip any already-found words\n\n continue;\n }\n } //try one-word lexicon\n\n\n if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) {\n terms[t].tag(lex[str], 'lexicon', world);\n continue;\n } // look at reduced version of term, too\n\n\n if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) {\n terms[t].tag(lex[terms[t].reduced], 'lexicon', world);\n continue;\n } // prefix strip: try to match 'take' for 'undertake'\n\n\n if (underOver.test(str) === true) {\n var noPrefix = str.replace(underOver, '');\n\n if (lex.hasOwnProperty(noPrefix) === true) {\n terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world);\n }\n }\n }\n\n return terms;\n};\n\nvar _01Lexicon = checkLexicon;\n\nvar apostrophes = /[\\'‘’‛‵′`´]$/;\nvar perSec = /^(m|k|cm|km|m)\\/(s|h|hr)$/; // '5 k/m'\n//\n\nvar checkPunctuation = function checkPunctuation(terms, i, world) {\n var term = terms[i]; //check hyphenation\n // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') {\n // term.tag('Hyphenated', 'has-hyphen', world)\n // }\n // support 'head-over'\n // if (term.hasHyphen() === true) {\n // console.log(term.tags)\n // }\n // console.log(term.hasHyphen(), term.text)\n //an end-tick (trailing apostrophe) - flanders', or Carlos'\n\n if (apostrophes.test(term.text)) {\n if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) {\n var endChar = term.clean[term.clean.length - 2]; //flanders'\n\n if (endChar === 's') {\n term.tag(['Possessive', 'Noun'], 'end-tick', world);\n return;\n } //chillin'\n\n\n if (endChar === 'n') {\n term.tag(['Gerund'], 'chillin', world);\n }\n }\n } // '5 km/s'\n\n\n if (perSec.test(term.text)) {\n term.tag('Unit', 'per-sec', world);\n } // 'NASA' is, but not 'i REALLY love it.'\n // if (term.tags.Noun === true && isAcronym(term, world)) {\n // term.tag('Acronym', 'acronym-step', world)\n // term.tag('Noun', 'acronym-infer', world)\n // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n // term.tag('Acronym', 'one-letter-acronym', world)\n // term.tag('Noun', 'one-letter-infer', world)\n // }\n\n};\n\nvar _02Punctuation = checkPunctuation;\n\n//these are regexes applied to t.text, instead of t.clean\n// order matters.\nvar startsWith = [//web tags\n[/^[\\w\\.]+@[\\w\\.]+\\.[a-z]{2,3}$/, 'Email'], //not fancy\n[/^#[a-z0-9_\\u00C0-\\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm\n[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30\n[/^@\\w{2,}$/, 'AtMention'], //@spencermountain\n[/^(https?:\\/\\/|www\\.)\\w+\\.[a-z]{2,3}/, 'Url'], //with http/www\n[/^[\\w./]+\\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain\n//dates/times\n[/^'[0-9]{2}$/, 'Year'], //like '97\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32\n[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm\n[/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs\n[/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+\n[/^[a-z0-9]*? o\\'?clock$/, 'Time'], //3 oclock\n[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z\n[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89\n[/^[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,4}$/, 'Date'], // 03/02/89\n[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89\n[/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3\n[/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3\n//names\n[/^ma?c\\'.*/, 'LastName'], //mc'adams\n[/^o\\'[drlkn].*/, 'LastName'], //o'douggan\n[/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes\n//slang things\n[/^(lol)+[sz]$/, 'Expression'], //lol\n[/^woo+a*?h?$/, 'Expression'], //whoaa, wooo\n[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'],\n[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date'], // 03-02-89\n//phone numbers\n[/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809\n[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809\n//money\n// currency regex\n// /[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\n//like $5.30\n[/^[-+]?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(k|m|b|bn)?\\+?$/, ['Money', 'Value']], //like 5.30$\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\\+?$/, ['Money', 'Value']], //like $400usd\n[/^[-+]?[\\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers\n// 50 | -50 | 3.23 | 5,999.0 | 10+\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th\n[/^\\.[0-9]+\\+?$/, ['Cardinal', 'NumericValue']], //percent\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% ..\n[/^\\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% ..\n//fraction\n[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths\n//range\n[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th\n//time-range\n[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30\n//with unit\n[/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp\n//ordinal\n// [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th\n// [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th\n];\n\nvar romanNumeral = /^[IVXLCDM]{2,}$/;\nvar romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877\n//try each of the ^regexes in our list\n\nvar checkRegex$1 = function checkRegex(term, world) {\n var str = term.text; // do them all!\n\n for (var r = 0; r < startsWith.length; r += 1) {\n if (startsWith[r][0].test(str) === true) {\n term.tagSafe(startsWith[r][1], 'prefix #' + r, world);\n break;\n }\n } // do some more!\n //roman numberals - XVII\n\n\n if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) {\n term.tag('RomanNumeral', 'xvii', world);\n }\n};\n\nvar _03Prefixes = checkRegex$1;\n\n//regex suffix patterns and their most common parts of speech,\n//built using wordnet, by spencer kelly.\n//this mapping shrinks-down the uglified build\nvar Adj$1 = 'Adjective';\nvar Inf$1 = 'Infinitive';\nvar Pres$1 = 'PresentTense';\nvar Sing$1 = 'Singular';\nvar Past$1 = 'PastTense';\nvar Adverb = 'Adverb';\nvar Exp = 'Expression';\nvar Actor$1 = 'Actor';\nvar Verb = 'Verb';\nvar Noun$1 = 'Noun';\nvar Last$1 = 'LastName'; //the order here matters.\n//regexes indexed by mandated last-character\n\nvar endsWith = {\n a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female)\n [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj$1]],\n d: [//==-ed==\n //double-consonant\n [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned\n //double-vowel\n [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered\n //-hed\n [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed\n //-rd\n [/.[aeiou]red$/, Past$1], //stored\n [/.[aeiou]r?ried$/, Past$1], //buried\n //-led\n [/.[bcdgtr]led$/, Past$1], //startled, rumbled\n [/.[aoui]f?led$/, Past$1], //impaled, stifled\n //-sed\n [/.[iao]sed$/, Past$1], //franchised\n [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced\n //-med\n [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed\n //-ked\n [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked\n //-ged\n [/[aeiou][nl]?ged$/, Past$1], //engaged\n //-ted\n [/.[tdbwxz]ed$/, Past$1], //bribed, boxed\n [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed\n //-ied\n [/.[cdlmnprstv]ied$/, Past$1], //rallied\n [/[^aeiou]ard$/, Sing$1], //card\n [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]],\n e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1]],\n h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp] //uhoh\n ],\n i: [[/.[oau][wvl]ski$/, Last$1] //polish (male)\n ],\n k: [[/^(k){2}$/, Exp] //kkkk\n ],\n l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]],\n m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date']],\n n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin'\n ],\n o: [[/^no+$/, Exp], //noooo\n [/^(yo)+$/, Exp], //yoyo\n [/^woo+[pt]?$/, Exp] //woo\n ],\n r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']],\n t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]],\n s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks\n [/.[aeiou]kes$/, Pres$1], //bakes\n [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\\'s$/, Noun$1], [/^yes+$/, Exp] //yessss\n ],\n v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe\n ],\n y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]]\n};\n\n//just a foolish lookup of known suffixes\nvar Adj = 'Adjective';\nvar Inf = 'Infinitive';\nvar Pres = 'PresentTense';\nvar Sing = 'Singular';\nvar Past = 'PastTense';\nvar Avb = 'Adverb';\nvar Plrl = 'Plural';\nvar Actor = 'Actor';\nvar Vb = 'Verb';\nvar Noun = 'Noun';\nvar Last = 'LastName';\nvar Modal = 'Modal';\nvar Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\n\nvar suffixMap = [null, //0\nnull, //1\n{\n //2-letter\n ea: Sing,\n ia: Noun,\n ic: Adj,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb\n}, {\n //3-letter\n oed: Past,\n ued: Past,\n xed: Past,\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n azy: Adj,\n eer: Noun,\n end: Vb,\n ped: Past,\n ffy: Adj,\n ify: Inf,\n ing: 'Gerund',\n //likely to be converted to Adj after lexicon pass\n ize: Inf,\n lar: Adj,\n mum: Adj,\n nes: Pres,\n nny: Adj,\n oid: Adj,\n ous: Adj,\n que: Adj,\n rol: Sing,\n sis: Sing,\n zes: Pres\n}, {\n //4-letter\n amed: Past,\n aped: Past,\n ched: Past,\n lked: Past,\n nded: Past,\n cted: Past,\n dged: Past,\n akis: Last,\n //greek\n cede: Inf,\n chuk: Last,\n //east-europe\n czyk: Last,\n //polish (male)\n ects: Pres,\n ends: Vb,\n enko: Last,\n //east-europe\n ette: Sing,\n fies: Pres,\n fore: Avb,\n gate: Inf,\n gone: Adj,\n ices: Plrl,\n ints: Plrl,\n ines: Plrl,\n ions: Plrl,\n less: Avb,\n llen: Adj,\n made: Adj,\n nsen: Last,\n //norway\n oses: Pres,\n ould: Modal,\n some: Adj,\n sson: Last,\n //swedish male\n tage: Inf,\n teen: 'Value',\n tion: Sing,\n tive: Adj,\n tors: Noun,\n vice: Sing\n}, {\n //5-letter\n tized: Past,\n urned: Past,\n eased: Past,\n ances: Plrl,\n bound: Adj,\n ettes: Plrl,\n fully: Avb,\n ishes: Pres,\n ities: Plrl,\n marek: Last,\n //polish (male)\n nssen: Last,\n //norway\n ology: Noun,\n ports: Plrl,\n rough: Adj,\n tches: Pres,\n tieth: 'Ordinal',\n tures: Plrl,\n wards: Avb,\n where: Avb\n}, {\n //6-letter\n auskas: Last,\n //lithuania\n keeper: Actor,\n logist: Actor,\n teenth: 'Value'\n}, {\n //7-letter\n opoulos: Last,\n //greek\n borough: Place,\n //Hillsborough\n sdottir: Last //swedish female\n\n}];\n\nvar endRegexs = function endRegexs(term, world) {\n var str = term.clean;\n var _char = str[str.length - 1];\n\n if (endsWith.hasOwnProperty(_char) === true) {\n var regs = endsWith[_char];\n\n for (var r = 0; r < regs.length; r += 1) {\n if (regs[r][0].test(str) === true) {\n term.tagSafe(regs[r][1], \"endReg \".concat(_char, \" #\").concat(r), world);\n break;\n }\n }\n }\n}; //sweep-through all suffixes\n\n\nvar knownSuffixes = function knownSuffixes(term, world) {\n var len = term.clean.length;\n var max = 7;\n\n if (len <= max) {\n max = len - 1;\n }\n\n for (var i = max; i > 1; i -= 1) {\n var str = term.clean.substr(len - i, len);\n\n if (suffixMap[str.length].hasOwnProperty(str) === true) {\n var tag = suffixMap[str.length][str];\n term.tagSafe(tag, 'suffix -' + str, world);\n break;\n }\n }\n}; //all-the-way-down!\n\n\nvar checkRegex = function checkRegex(term, world) {\n knownSuffixes(term, world);\n endRegexs(term, world);\n};\n\nvar _04Suffixes = checkRegex;\n\n//just some of the most common emoticons\n//faster than\n//http://stackoverflow.com/questions/28077049/regex-matching-emoticons\nvar emoticons = {\n ':(': true,\n ':)': true,\n ':P': true,\n ':p': true,\n ':O': true,\n ':3': true,\n ':|': true,\n ':/': true,\n ':\\\\': true,\n ':$': true,\n ':*': true,\n ':@': true,\n ':-(': true,\n ':-)': true,\n ':-P': true,\n ':-p': true,\n ':-O': true,\n ':-3': true,\n ':-|': true,\n ':-/': true,\n ':-\\\\': true,\n ':-$': true,\n ':-*': true,\n ':-@': true,\n ':^(': true,\n ':^)': true,\n ':^P': true,\n ':^p': true,\n ':^O': true,\n ':^3': true,\n ':^|': true,\n ':^/': true,\n ':^\\\\': true,\n ':^$': true,\n ':^*': true,\n ':^@': true,\n '):': true,\n '(:': true,\n '$:': true,\n '*:': true,\n ')-:': true,\n '(-:': true,\n '$-:': true,\n '*-:': true,\n ')^:': true,\n '(^:': true,\n '$^:': true,\n '*^:': true,\n '<3': true,\n ' 35) {\n return false;\n }\n\n return true;\n }\n\n return false;\n}; //check against emoticon whitelist\n\n\nvar isEmoticon = function isEmoticon(str) {\n str = str.replace(/^[:;]/, ':'); //normalize the 'eyes'\n\n return emoticons.hasOwnProperty(str);\n};\n\nvar tagEmoji = function tagEmoji(term, world) {\n var raw = term.pre + term.text + term.post;\n raw = raw.trim(); //dont double-up on ending periods\n\n raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis\n\n if (isCommaEmoji(raw) === true) {\n term.tag('Emoji', 'comma-emoji', world);\n term.text = raw;\n term.pre = term.pre.replace(':', '');\n term.post = term.post.replace(':', '');\n } //test for unicode emojis\n\n\n if (term.text.match(emojiReg)) {\n term.tag('Emoji', 'unicode-emoji', world);\n term.text = raw;\n } //test for emoticon ':)' emojis\n\n\n if (isEmoticon(raw) === true) {\n term.tag('Emoticon', 'emoticon-emoji', world);\n term.text = raw;\n }\n};\n\nvar _05Emoji = tagEmoji;\n\nvar steps = {\n lexicon: _01Lexicon,\n punctuation: _02Punctuation,\n regex: _03Prefixes,\n suffix: _04Suffixes,\n emoji: _05Emoji\n}; //'lookups' look at a term by itself\n\nvar lookups = function lookups(doc, terms) {\n var world = doc.world; //our list of known-words\n\n steps.lexicon(terms, world); //try these other methods\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i]; //or maybe some helpful punctuation\n\n steps.punctuation(terms, i, world); //mostly prefix checks\n\n steps.regex(term, world); //maybe we can guess\n\n steps.suffix(term, world); //emoji and emoticons\n\n steps.emoji(term, world);\n }\n\n return doc;\n};\n\nvar _01Init = lookups;\n\n//markov-like stats about co-occurance, for hints about unknown terms\n//basically, a little-bit better than the noun-fallback\n//just top n-grams from nlp tags, generated from nlp-corpus\n//after this word, here's what happens usually\nvar afterThisWord = {\n i: 'Verb',\n //44% //i walk..\n first: 'Noun',\n //50% //first principles..\n it: 'Verb',\n //33%\n there: 'Verb',\n //35%\n not: 'Verb',\n //33%\n because: 'Noun',\n //31%\n \"if\": 'Noun',\n //32%\n but: 'Noun',\n //26%\n who: 'Verb',\n //40%\n \"this\": 'Noun',\n //37%\n his: 'Noun',\n //48%\n when: 'Noun',\n //33%\n you: 'Verb',\n //35%\n very: 'Adjective',\n // 39%\n old: 'Noun',\n //51%\n never: 'Verb',\n //42%\n before: 'Noun' //28%\n\n}; //in advance of this word, this is what happens usually\n\nvar beforeThisWord = {\n there: 'Verb',\n //23% // be there\n me: 'Verb',\n //31% //see me\n man: 'Adjective',\n // 80% //quiet man\n only: 'Verb',\n //27% //sees only\n him: 'Verb',\n //32% //show him\n were: 'Noun',\n //48% //we were\n took: 'Noun',\n //38% //he took\n himself: 'Verb',\n //31% //see himself\n went: 'Noun',\n //43% //he went\n who: 'Noun',\n //47% //person who\n jr: 'Person'\n}; //following this POS, this is likely\n\nvar afterThisPOS = {\n Adjective: 'Noun',\n //36% //blue dress\n Possessive: 'Noun',\n //41% //his song\n Determiner: 'Noun',\n //47%\n Adverb: 'Verb',\n //20%\n Pronoun: 'Verb',\n //40%\n Value: 'Noun',\n //47%\n Ordinal: 'Noun',\n //53%\n Modal: 'Verb',\n //35%\n Superlative: 'Noun',\n //43%\n Demonym: 'Noun',\n //38%\n Honorific: 'Person' //\n\n}; //in advance of this POS, this is likely\n\nvar beforeThisPOS = {\n Copula: 'Noun',\n //44% //spencer is\n PastTense: 'Noun',\n //33% //spencer walked\n Conjunction: 'Noun',\n //36%\n Modal: 'Noun',\n //38%\n Pluperfect: 'Noun',\n //40%\n PerfectTense: 'Verb' //32%\n\n};\nvar markov = {\n beforeThisWord: beforeThisWord,\n afterThisWord: afterThisWord,\n beforeThisPos: beforeThisPOS,\n afterThisPos: afterThisPOS\n};\n\nvar afterKeys = Object.keys(markov.afterThisPos);\nvar beforeKeys = Object.keys(markov.beforeThisPos);\n\nvar checkNeighbours = function checkNeighbours(terms, world) {\n var _loop = function _loop(i) {\n var term = terms[i]; //do we still need a tag?\n\n if (term.isKnown() === true) {\n return \"continue\";\n } //ok, this term needs a tag.\n //look at previous word for clues..\n\n\n var lastTerm = terms[i - 1];\n\n if (lastTerm) {\n // 'foobar term'\n if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) {\n var tag = markov.afterThisWord[lastTerm.clean];\n term.tag(tag, 'after-' + lastTerm.clean, world);\n return \"continue\";\n } // 'Tag term'\n // (look at previous POS tags for clues..)\n\n\n var foundTag = afterKeys.find(function (tag) {\n return lastTerm.tags[tag];\n });\n\n if (foundTag !== undefined) {\n var _tag = markov.afterThisPos[foundTag];\n term.tag(_tag, 'after-' + foundTag, world);\n return \"continue\";\n }\n } //look at next word for clues..\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm) {\n // 'term foobar'\n if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) {\n var _tag2 = markov.beforeThisWord[nextTerm.clean];\n term.tag(_tag2, 'before-' + nextTerm.clean, world);\n return \"continue\";\n } // 'term Tag'\n // (look at next POS tags for clues..)\n\n\n var _foundTag = beforeKeys.find(function (tag) {\n return nextTerm.tags[tag];\n });\n\n if (_foundTag !== undefined) {\n var _tag3 = markov.beforeThisPos[_foundTag];\n term.tag(_tag3, 'before-' + _foundTag, world);\n return \"continue\";\n }\n }\n };\n\n for (var i = 0; i < terms.length; i += 1) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n};\n\nvar _01Neighbours = checkNeighbours;\n\nvar titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\nvar hasNumber = /[0-9]/;\n/** look for any grammar signals based on capital/lowercase */\n\nvar checkCase = function checkCase(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 1; i < terms.length; i++) {\n var term = terms[i];\n\n if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) {\n term.tag('ProperNoun', 'titlecase-noun', world);\n }\n }\n });\n};\n\nvar _02Case = checkCase;\n\nvar hasPrefix = /^(re|un)-?[a-z\\u00C0-\\u00FF]/;\nvar prefix = /^(re|un)-?/;\n/** check 'rewatch' in lexicon as 'watch' */\n\nvar checkPrefix = function checkPrefix(terms, world) {\n var lex = world.words;\n terms.forEach(function (term) {\n // skip if we have a good tag already\n if (term.isKnown() === true) {\n return;\n } //does it start with 'un|re'\n\n\n if (hasPrefix.test(term.clean) === true) {\n // look for the root word in the lexicon:\n var stem = term.clean.replace(prefix, '');\n\n if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) {\n term.tag(lex[stem], 'stem-' + stem, world);\n }\n }\n });\n};\n\nvar _03Stem = checkPrefix;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$3 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens\n/(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar isPlural_1$2 = {\n isSingular: isSingular$1,\n isPlural: isPlural$3\n};\n\nvar noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday'];\nvar notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/];\nvar notSingular = [/i$/, /ae$/];\n/** turn nouns into singular/plural */\n\nvar checkPlural = function checkPlural(t, world) {\n if (t.tags.Noun && !t.tags.Acronym) {\n var str = t.clean; //skip existing tags, fast\n\n if (t.tags.Singular || t.tags.Plural) {\n return;\n } //too short\n\n\n if (str.length <= 3) {\n t.tag('Singular', 'short-singular', world);\n return;\n } //is it impossible to be plural?\n\n\n if (noPlurals.find(function (tag) {\n return t.tags[tag];\n })) {\n return;\n } // isPlural suffix rules\n\n\n if (isPlural_1$2.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Plural', 'plural-rules', world);\n return;\n } // isSingular suffix rules\n\n\n if (isPlural_1$2.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Singular', 'singular-rules', world);\n return;\n } // finally, fallback 'looks plural' rules..\n\n\n if (/s$/.test(str) === true) {\n //avoid anything too sketchy to be plural\n if (notPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Plural', 'plural-fallback', world);\n return;\n } //avoid anything too sketchy to be singular\n\n\n if (notSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Singular', 'singular-fallback', world);\n }\n};\n\nvar _04Plurals = checkPlural;\n\n//nouns that also signal the title of an unknown organization\n//todo remove/normalize plural forms\nvar orgWords = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law',\n'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network',\n'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party',\n\"people's party\", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers'];\nvar organizations = orgWords.reduce(function (h, str) {\n h[str] = 'Noun';\n return h;\n}, {});\n\nvar maybeOrg = function maybeOrg(t) {\n //must be a noun\n if (!t.tags.Noun) {\n return false;\n } //can't be these things\n\n\n if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) {\n return false;\n } //must be one of these\n\n\n if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) {\n return true;\n }\n\n return false;\n};\n\nvar tagOrgs = function tagOrgs(terms, world) {\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (organizations[t.clean] !== undefined && organizations.hasOwnProperty(t.clean) === true) {\n // look-backward - eg. 'Toronto University'\n var lastTerm = terms[i - 1];\n\n if (lastTerm !== undefined && maybeOrg(lastTerm) === true) {\n lastTerm.tagSafe('Organization', 'org-word-1', world);\n t.tagSafe('Organization', 'org-word-2', world);\n continue;\n } //look-forward - eg. University of Toronto\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm !== undefined && nextTerm.clean === 'of') {\n if (terms[i + 2] && maybeOrg(terms[i + 2])) {\n t.tagSafe('Organization', 'org-of-word-1', world);\n nextTerm.tagSafe('Organization', 'org-of-word-2', world);\n terms[i + 2].tagSafe('Organization', 'org-of-word-3', world);\n continue;\n }\n }\n }\n }\n};\n\nvar _05Organizations = tagOrgs;\n\nvar oneLetterAcronym = /^[A-Z]('s|,)?$/;\nvar periodSeperated = /([A-Z]\\.){2}[A-Z]?/i;\nvar oneLetterWord = {\n I: true,\n A: true\n};\n\nvar isAcronym = function isAcronym(term, world) {\n var str = term.reduced; // a known acronym like fbi\n\n if (term.tags.Acronym) {\n return true;\n } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) {\n // return false\n // }\n // known-words, like 'PIZZA' is not an acronym.\n\n\n if (world.words[str]) {\n return false;\n } // long capitalized words are not usually either\n\n\n if (str.length > 5) {\n return false;\n }\n\n return term.isAcronym();\n}; // F.B.I., NBC, - but not 'NO COLLUSION'\n\n\nvar checkAcronym = function checkAcronym(terms, world) {\n terms.forEach(function (term) {\n //these are not acronyms\n if (term.tags.RomanNumeral === true) {\n return;\n } //period-ones F.D.B.\n\n\n if (periodSeperated.test(term.text) === true) {\n term.tag('Acronym', 'period-acronym', world);\n } //non-period ones are harder\n\n\n if (term.isUpperCase() && isAcronym(term, world)) {\n term.tag('Acronym', 'acronym-step', world);\n term.tag('Noun', 'acronym-infer', world);\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n term.tag('Acronym', 'one-letter-acronym', world);\n term.tag('Noun', 'one-letter-infer', world);\n } //if it's a organization,\n\n\n if (term.tags.Organization && term.text.length <= 3) {\n term.tag('Acronym', 'acronym-org', world);\n }\n\n if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) {\n term.tag('Acronym', 'acronym-org-case', world);\n }\n });\n};\n\nvar _06Acronyms = checkAcronym;\n\nvar step = {\n neighbours: _01Neighbours,\n \"case\": _02Case,\n stem: _03Stem,\n plural: _04Plurals,\n organizations: _05Organizations,\n acronyms: _06Acronyms\n}; //\n\nvar fallbacks = function fallbacks(doc, terms) {\n var world = doc.world; // if it's empty, consult it's neighbours, first\n\n step.neighbours(terms, world); // is there a case-sensitive clue?\n\n step[\"case\"](doc); // check 'rewatch' as 'watch'\n\n step.stem(terms, world); // ... fallback to a noun!\n\n terms.forEach(function (t) {\n if (t.isKnown() === false) {\n t.tag('Noun', 'noun-fallback', doc.world);\n }\n }); // turn 'Foo University' into an Org\n\n step.organizations(terms, world); //turn 'FBD' into an acronym\n\n step.acronyms(terms, world); //are the nouns singular or plural?\n\n terms.forEach(function (t) {\n step.plural(t, doc.world);\n });\n return doc;\n};\n\nvar _02Fallbacks = fallbacks;\n\nvar hasNegative = /n't$/;\nvar irregulars$2 = {\n \"won't\": ['will', 'not'],\n wont: ['will', 'not'],\n \"can't\": ['can', 'not'],\n cant: ['can', 'not'],\n cannot: ['can', 'not'],\n \"shan't\": ['should', 'not'],\n dont: ['do', 'not'],\n dun: ['do', 'not'] // \"ain't\" is ambiguous for is/was\n\n}; // either 'is not' or 'are not'\n\nvar doAint = function doAint(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var before = terms.slice(0, index); //look for the preceding noun\n\n var noun = before.find(function (t) {\n return t.tags.Noun;\n });\n\n if (noun && noun.tags.Plural) {\n return ['are', 'not'];\n }\n\n return ['is', 'not'];\n};\n\nvar checkNegative = function checkNegative(term, phrase) {\n //check named-ones\n if (irregulars$2.hasOwnProperty(term.clean) === true) {\n return irregulars$2[term.clean];\n } //this word needs it's own logic:\n\n\n if (term.clean === \"ain't\" || term.clean === 'aint') {\n return doAint(term, phrase);\n } //try it normally\n\n\n if (hasNegative.test(term.clean) === true) {\n var main = term.clean.replace(hasNegative, '');\n return [main, 'not'];\n }\n\n return null;\n};\n\nvar _01Negative = checkNegative;\n\nvar contraction$1 = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous\n\nvar easy = {\n ll: 'will',\n ve: 'have',\n re: 'are',\n m: 'am',\n \"n't\": 'not'\n}; //\n\nvar checkApostrophe = function checkApostrophe(term) {\n var parts = term.text.match(contraction$1);\n\n if (parts === null) {\n return null;\n }\n\n if (easy.hasOwnProperty(parts[2])) {\n return [parts[1], easy[parts[2]]];\n }\n\n return null;\n};\n\nvar _02Simple = checkApostrophe;\n\nvar irregulars$1 = {\n wanna: ['want', 'to'],\n gonna: ['going', 'to'],\n im: ['i', 'am'],\n alot: ['a', 'lot'],\n ive: ['i', 'have'],\n imma: ['I', 'will'],\n \"where'd\": ['where', 'did'],\n whered: ['where', 'did'],\n \"when'd\": ['when', 'did'],\n whend: ['when', 'did'],\n // \"how'd\": ['how', 'did'], //'how would?'\n // \"what'd\": ['what', 'did'], //'what would?'\n howd: ['how', 'did'],\n whatd: ['what', 'did'],\n // \"let's\": ['let', 'us'], //too weird\n //multiple word contractions\n dunno: ['do', 'not', 'know'],\n brb: ['be', 'right', 'back'],\n gtg: ['got', 'to', 'go'],\n irl: ['in', 'real', 'life'],\n tbh: ['to', 'be', 'honest'],\n imo: ['in', 'my', 'opinion'],\n til: ['today', 'i', 'learned'],\n rn: ['right', 'now'],\n twas: ['it', 'was'],\n '@': ['at']\n}; //\n\nvar checkIrregulars = function checkIrregulars(term) {\n //check white-list\n if (irregulars$1.hasOwnProperty(term.clean)) {\n return irregulars$1[term.clean];\n }\n\n return null;\n};\n\nvar _03Irregulars = checkIrregulars;\n\nvar hasApostropheS = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]s$/i;\nvar banList = {\n that: true,\n there: true\n};\nvar hereThere = {\n here: true,\n there: true,\n everywhere: true\n};\n\nvar isPossessive = function isPossessive(term, pool) {\n // if we already know it\n if (term.tags.Possessive) {\n return true;\n } //a pronoun can't be possessive - \"he's house\"\n\n\n if (term.tags.Pronoun || term.tags.QuestionWord) {\n return false;\n }\n\n if (banList.hasOwnProperty(term.reduced)) {\n return false;\n } //if end of sentence, it is possessive - \"was spencer's\"\n\n\n var nextTerm = pool.get(term.next);\n\n if (!nextTerm) {\n return true;\n } //a gerund suggests 'is walking'\n\n\n if (nextTerm.tags.Verb) {\n //fix 'jamie's bite'\n if (nextTerm.tags.Infinitive) {\n return true;\n } //fix 'spencer's runs'\n\n\n if (nextTerm.tags.PresentTense) {\n return true;\n }\n\n return false;\n } //spencer's house\n\n\n if (nextTerm.tags.Noun) {\n // 'spencer's here'\n if (hereThere.hasOwnProperty(nextTerm.reduced) === true) {\n return false;\n }\n\n return true;\n } //rocket's red glare\n\n\n var twoTerm = pool.get(nextTerm.next);\n\n if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) {\n return true;\n } //othwerwise, an adjective suggests 'is good'\n\n\n if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) {\n return false;\n }\n\n return false;\n};\n\nvar isHas = function isHas(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 3); //look for a past-tense verb\n\n return after.find(function (t) {\n return t.tags.PastTense;\n });\n};\n\nvar checkPossessive = function checkPossessive(term, phrase, world) {\n //the rest of 's\n var found = term.text.match(hasApostropheS);\n\n if (found !== null) {\n //spencer's thing vs spencer-is\n if (isPossessive(term, phrase.pool) === true) {\n term.tag('#Possessive', 'isPossessive', world);\n return null;\n } //'spencer is'\n\n\n if (found !== null) {\n if (isHas(term, phrase)) {\n return [found[1], 'has'];\n }\n\n return [found[1], 'is'];\n }\n }\n\n return null;\n};\n\nvar _04Possessive = checkPossessive;\n\nvar hasPerfect = /[a-z\\u00C0-\\u00FF]'d$/;\nvar useDid = {\n how: true,\n what: true\n};\n/** split `i'd` into 'i had', or 'i would' */\n\nvar checkPerfect = function checkPerfect(term, phrase) {\n if (hasPerfect.test(term.clean)) {\n var root = term.clean.replace(/'d$/, ''); //look at the next few words\n\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked'\n\n for (var i = 0; i < after.length; i++) {\n var t = after[i];\n\n if (t.tags.Verb) {\n if (t.tags.PastTense) {\n return [root, 'had'];\n } //what'd you see\n\n\n if (useDid[root] === true) {\n return [root, 'did'];\n }\n\n return [root, 'would'];\n }\n } //otherwise, 'i'd walk'\n\n\n return [root, 'would'];\n }\n\n return null;\n};\n\nvar _05PerfectTense = checkPerfect;\n\nvar isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i;\nvar timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)[-–—]([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4'\n\nvar checkRange = function checkRange(term) {\n if (term.tags.PhoneNumber === true) {\n return null;\n }\n\n var parts = term.text.match(isRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[2]];\n } else {\n parts = term.text.match(timeRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[4]];\n }\n }\n\n return null;\n};\n\nvar _06Ranges = checkRange;\n\nvar contraction = /^(l|c|d|j|m|n|qu|s|t)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z\\u00C0-\\u00FF]+)$/i; // basic support for ungendered french contractions\n// not perfect, but better than nothing, to support matching on french text.\n\nvar french = {\n l: 'le',\n // l'amour\n c: 'ce',\n // c'est\n d: 'de',\n // d'amerique\n j: 'je',\n // j'aime\n m: 'me',\n // m'appelle\n n: 'ne',\n // n'est\n qu: 'que',\n // qu'il\n s: 'se',\n // s'appelle\n t: 'tu' // t'aime\n\n};\n\nvar checkFrench = function checkFrench(term) {\n var parts = term.text.match(contraction);\n\n if (parts === null || french.hasOwnProperty(parts[1]) === false) {\n return null;\n }\n\n var arr = [french[parts[1]], parts[2]];\n\n if (arr[0] && arr[1]) {\n return arr;\n }\n\n return null;\n};\n\nvar _07French = checkFrench;\n\nvar isNumber = /^[0-9]+$/;\nvar isOrdinal = /^[0-9]+(st|nd|rd|th)$/;\nvar isTime = /^[0-9:]+(am|pm)$/;\n\nvar createPhrase = function createPhrase(found, doc) {\n //create phrase from ['would', 'not']\n var phrase = _01Tokenizer(found.join(' '), doc.world, doc.pool())[0]; //tag it\n\n var terms = phrase.terms();\n _01Lexicon(terms, doc.world); //make these terms implicit\n\n terms.forEach(function (t) {\n t.implicit = t.text;\n t.text = '';\n t.clean = ''; // remove whitespace for implicit terms\n\n t.pre = '';\n t.post = ''; // tag number-ranges\n\n if (isNumber.test(t.implicit)) {\n t.tag('Cardinal', 'num-range', doc.world);\n } else if (isOrdinal.test(t.implicit)) {\n t.tag('Ordinal', 'ord-range', doc.world);\n } else if (isTime.test(t.implicit)) {\n t.tag('Time', 'time-range', doc.world);\n } else if (Object.keys(t.tags).length === 0) {\n t.tags.Noun = true; // if no tag, give it a noun\n }\n });\n return phrase;\n};\n\nvar contractions = function contractions(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i];\n var found = _01Negative(term, p);\n found = found || _02Simple(term);\n found = found || _03Irregulars(term);\n found = found || _04Possessive(term, p, world);\n found = found || _05PerfectTense(term, p);\n found = found || _06Ranges(term);\n found = found || _07French(term); //add them in\n\n if (found !== null) {\n var newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it\n\n if (p.has('#NumberRange') === true) {\n doc.buildFrom([newPhrase]).tag('NumberRange');\n } //set text as contraction\n\n\n var firstTerm = newPhrase.terms(0);\n firstTerm.text = term.text; //grab sub-phrase to remove\n\n var match = p.buildFrom(term.id, 1, doc.pool());\n match.replace(newPhrase, doc, true);\n }\n }\n });\n return doc;\n};\n\nvar _03Contractions = contractions;\n\nvar hasWord = function hasWord(doc, word) {\n var arr = doc._cache.words[word] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n};\n\nvar hasTag = function hasTag(doc, tag) {\n var arr = doc._cache.tags[tag] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n}; //mostly pos-corections here\n\n\nvar miscCorrection = function miscCorrection(doc) {\n // imperative-form\n var m = hasTag(doc, 'Infinitive');\n\n if (m.found) {\n // you eat?\n m = m.ifNo('@hasQuestionMark'); // i speak\n\n m = m.ifNo('(i|we|they)'); // shut the door!\n\n m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast\n\n m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go\n\n m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it\n\n m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it');\n } //exactly like\n\n\n m = hasWord(doc, 'like');\n m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange.\n\n m = hasTag(doc, 'Adjective');\n m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous)\n\n m = hasTag(doc, 'FirstName');\n m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train\n\n m = hasTag(doc, 'Value');\n m = m.match('#Value #PresentTense').ifNo('#Copula');\n\n if (m.found) {\n if (m.has('(one|1)') === true) {\n m.terms(1).tag('Singular', 'one-presentTense');\n } else {\n m.terms(1).tag('Plural', 'value-presentTense');\n }\n } // well i've been...\n\n\n doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second\n\n doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds\n\n doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking\n\n m = hasTag(doc, 'Gerund');\n m.match(\"(be|been) (#Adverb|not)+? #Gerund\").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse'\n\n doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives\n //'her match' vs 'let her match'\n\n m = hasTag(doc, 'Possessive');\n m = m.match('#Possessive [#Infinitive]', 0);\n\n if (!m.lookBehind('(let|made|make|force|ask)').found) {\n m.tag('Noun', 'her-match');\n }\n\n return doc;\n};\n\nvar fixMisc = miscCorrection;\n\nvar unique = function unique(arr) {\n var obj = {};\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = true;\n }\n\n return Object.keys(obj);\n};\n\nvar _unique = unique;\n\n// order matters\nvar list$5 = [// ==== Mutliple tags ====\n{\n match: 'too much',\n tag: 'Adverb Adjective',\n reason: 'bit-4'\n}, // u r cool\n{\n match: 'u r',\n tag: 'Pronoun Copula',\n reason: 'u r'\n}, //sometimes adverbs - 'pretty good','well above'\n{\n match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)',\n tag: '#Copula #Adverb #Adjective',\n reason: 'sometimes-adverb'\n}, //i better ..\n{\n match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense',\n group: 0,\n tag: 'Modal',\n reason: 'i-better'\n}, //walking is cool\n{\n match: '[#Gerund] #Adverb? not? #Copula',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-copula'\n}, //walking should be fun\n{\n match: '[#Gerund] #Modal',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-modal'\n}, //swear-words as non-expression POS\n{\n match: 'holy (shit|fuck|hell)',\n tag: 'Expression',\n reason: 'swears-expression'\n}, //Aircraft designer\n{\n match: '#Noun #Actor',\n tag: 'Actor',\n reason: 'thing-doer'\n}, {\n match: '#Conjunction [u]',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-2'\n}, //'u' as pronoun\n{\n match: '[u] #Verb',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-1'\n}, // ==== Determiners ====\n{\n match: '#Noun [(who|whom)]',\n group: 0,\n tag: 'Determiner',\n reason: 'captain-who'\n}, //that car goes\n// { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' },\n{\n match: 'a bit much',\n tag: 'Determiner Adverb Adjective',\n reason: 'bit-3'\n}, // ==== Propositions ====\n//all students\n{\n match: '#Verb #Adverb? #Noun [(that|which)]',\n group: 0,\n tag: 'Preposition',\n reason: 'that-prep'\n}, //work, which has been done.\n{\n match: '@hasComma [which] (#Pronoun|#Verb)',\n group: 0,\n tag: 'Preposition',\n reason: 'which-copula'\n}, {\n match: '#Copula just [like]',\n group: 0,\n tag: 'Preposition',\n reason: 'like-preposition'\n}, //folks like her\n{\n match: '#Noun [like] #Noun',\n group: 0,\n tag: 'Preposition',\n reason: 'noun-like'\n}, //fix for busted-up phrasalVerbs\n// { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' },\n// ==== Conditions ====\n// had he survived,\n{\n match: '[had] #Noun+ #PastTense',\n group: 0,\n tag: 'Condition',\n reason: 'had-he'\n}, // were he to survive\n{\n match: '[were] #Noun+ to #Infinitive',\n group: 0,\n tag: 'Condition',\n reason: 'were-he'\n}, // ==== Questions ====\n//the word 'how'\n{\n match: '^how',\n tag: 'QuestionWord',\n reason: 'how-question'\n}, {\n match: '[how] (#Determiner|#Copula|#Modal|#PastTense)',\n group: 0,\n tag: 'QuestionWord',\n reason: 'how-is'\n}, // //the word 'which'\n{\n match: '^which',\n tag: 'QuestionWord',\n reason: 'which-question'\n}, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' },\n// { match: 'which', tag: 'QuestionWord', reason: 'which-question3' },\n// ==== Conjunctions ====\n{\n match: '[so] #Noun',\n group: 0,\n tag: 'Conjunction',\n reason: 'so-conj'\n}, //how he is driving\n{\n match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)',\n group: 0,\n tag: 'Conjunction',\n reason: 'how-he-is-x'\n} // {\n// match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund',\n// group: 0,\n// tag: 'Conjunction',\n// reason: 'when-i-go-fishing',\n// },\n];\nvar _01Misc = list$5;\n\nvar _ambig = {\n // adverbs than can be adjectives\n adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'],\n // names that are dates\n personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'],\n // names that may be months\n personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'],\n // names that are adjectives\n personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'],\n // names that are verbs\n personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'],\n // names that are verbs\n personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'],\n // names that are nouns\n personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white']\n};\n\nvar dates = \"(\".concat(_ambig.personDate.join('|'), \")\");\nvar list$4 = [// ==== Holiday ====\n{\n match: '#Holiday (day|eve)',\n tag: 'Holiday',\n reason: 'holiday-day'\n}, // the captain who\n// ==== WeekDay ====\n// sun the 5th\n{\n match: '[sun] the #Ordinal',\n tag: 'WeekDay',\n reason: 'sun-the-5th'\n}, //sun feb 2\n{\n match: '[sun] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sun-feb'\n}, //1pm next sun\n{\n match: '#Date (on|this|next|last|during)? [sun]',\n group: 0,\n tag: 'WeekDay',\n reason: '1pm-sun'\n}, //this sat\n{\n match: \"(in|by|before|during|on|until|after|of|within|all) [sat]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'sat'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [wed]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'wed'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [march]\",\n group: 0,\n tag: 'Month',\n reason: 'march'\n}, //sat november\n{\n match: '[sat] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sat-feb'\n}, // ==== Month ====\n//all march\n{\n match: \"#Preposition [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'in-month'\n}, //this march\n{\n match: \"this [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"next [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"last [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, // march 5th\n{\n match: \"[(march|may)] the? #Value\",\n group: 0,\n tag: 'Month',\n reason: 'march-5th'\n}, // 5th of march\n{\n match: \"#Value of? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: '5th-of-march'\n}, // march and feb\n{\n match: \"[(march|may)] .? #Date\",\n group: 0,\n tag: 'Month',\n reason: 'march-and-feb'\n}, // feb to march\n{\n match: \"#Date .? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'feb-and-march'\n}, //quickly march\n{\n match: \"#Adverb [(march|may)]\",\n group: 0,\n tag: 'Verb',\n reason: 'quickly-march'\n}, //march quickly\n{\n match: \"[(march|may)] #Adverb\",\n group: 0,\n tag: 'Verb',\n reason: 'march-quickly'\n}, //5th of March\n{\n match: '#Value of #Month',\n tag: 'Date',\n reason: 'value-of-month'\n}, //5 March\n{\n match: '#Cardinal #Month',\n tag: 'Date',\n reason: 'cardinal-month'\n}, //march 5 to 7\n{\n match: '#Month #Value to #Value',\n tag: 'Date',\n reason: 'value-to-value'\n}, //march the 12th\n{\n match: '#Month the #Value',\n tag: 'Date',\n reason: 'month-the-value'\n}, //june 7\n{\n match: '(#WeekDay|#Month) #Value',\n tag: 'Date',\n reason: 'date-value'\n}, //7 june\n{\n match: '#Value (#WeekDay|#Month)',\n tag: 'Date',\n reason: 'value-date'\n}, //may twenty five\n{\n match: '(#TextValue && #Date) #TextValue',\n tag: 'Date',\n reason: 'textvalue-date'\n}, // in june\n{\n match: \"in [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"during [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"on [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"by [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'by-june'\n}, {\n match: \"after [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'after-june'\n}, {\n match: \"#Date [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, // june 1992\n{\n match: \"\".concat(dates, \" #Value\"),\n tag: 'Date',\n reason: 'june-5th'\n}, {\n match: \"\".concat(dates, \" #Date\"),\n tag: 'Date',\n reason: 'june-5th'\n}, // June Smith\n{\n match: \"\".concat(dates, \" #ProperNoun\"),\n tag: 'Person',\n reason: 'june-smith',\n safe: true\n}, // june m. Cooper\n{\n match: \"\".concat(dates, \" #Acronym? (#ProperNoun && !#Month)\"),\n tag: 'Person',\n reason: 'june-smith-jr'\n}, // 'second'\n{\n match: \"#Cardinal [second]\",\n tag: 'Unit',\n reason: 'one-second'\n}, // second quarter\n// { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' },\n// 'aug 20-21'\n{\n match: \"#Month #NumberRange\",\n tag: 'Date',\n reason: 'aug 20-21'\n}, // timezones\n// china standard time\n{\n match: \"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",\n tag: 'Timezone',\n reason: 'std-time'\n}, // eastern time\n{\n match: \"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",\n tag: 'Timezone',\n reason: 'eastern-time'\n}, // 5pm central\n{\n match: \"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",\n group: 0,\n tag: 'Timezone',\n reason: '5pm-central'\n}, // central european time\n{\n match: \"(central|western|eastern) european time\",\n tag: 'Timezone',\n reason: 'cet'\n}];\nvar _02Dates = list$4;\n\nvar adjectives$1 = \"(\".concat(_ambig.personAdjective.join('|'), \")\");\nvar list$3 = [// all fell apart\n{\n match: '[all] #Determiner? #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'all-noun'\n}, // very rusty\n{\n match: \"#Adverb [\".concat(adjectives$1, \"]\"),\n group: 0,\n tag: 'Adjective',\n reason: 'really-rich'\n}, // rusty smith\n{\n match: \"\".concat(adjectives$1, \" #Person\"),\n tag: 'Person',\n reason: 'randy-smith'\n}, // rusty a. smith\n{\n match: \"\".concat(adjectives$1, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'rusty-smith'\n}, //sometimes not-adverbs\n{\n match: '#Copula [(just|alone)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'not-adverb'\n}, //jack is guarded\n{\n match: '#Singular is #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'is-filled'\n}, // smoked poutine is\n{\n match: '[#PastTense] #Singular is',\n group: 0,\n tag: 'Adjective',\n reason: 'smoked-poutine'\n}, // baked onions are\n{\n match: '[#PastTense] #Plural are',\n group: 0,\n tag: 'Adjective',\n reason: 'baked-onions'\n}, // well made\n{\n match: 'well [#PastTense]',\n group: 0,\n tag: 'Adjective',\n reason: 'well-made'\n}, // is f*ed up\n{\n match: '#Copula [fucked up?]',\n tag: 'Adjective',\n reason: 'swears-adjective'\n}, //jack seems guarded\n{\n match: '#Singular (seems|appears) #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'seems-filled'\n}, // Gerund-Adjectives - 'amusing, annoying'\n//a staggering cost\n{\n match: '(a|an) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a|an'\n}, //as amusing as\n{\n match: 'as [#Gerund] as',\n group: 0,\n tag: 'Adjective',\n reason: 'as-gerund-as'\n}, // more amusing than\n{\n match: 'more [#Gerund] than',\n group: 0,\n tag: 'Adjective',\n reason: 'more-gerund-than'\n}, // very amusing\n{\n match: '(so|very|extremely) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'so-gerund'\n}, // it was amusing\n{\n match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'it-was-gerund'\n}, // found it amusing\n{\n match: '(found|found) it #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'found-it-gerund'\n}, // a bit amusing\n{\n match: 'a (little|bit|wee) bit? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-bit-gerund'\n}, // jury is out - preposition ➔ adjective\n{\n match: '#Copula #Adjective? [(out|in|through)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'still-out'\n}, // shut the door\n{\n match: '^[#Adjective] (the|your) #Noun',\n group: 0,\n tag: 'Infinitive',\n reason: 'shut-the'\n}];\nvar _03Adjective = list$3;\n\nvar _04Noun = [// ==== Plural ====\n//there are reasons\n{\n match: 'there (are|were) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Plural',\n reason: 'there-are'\n}, // ==== Singular ====\n//the sun\n{\n match: '#Determiner [sun]',\n group: 0,\n tag: 'Singular',\n reason: 'the-sun'\n}, //did a 900, paid a 20\n{\n match: '#Verb (a|an) [#Value]',\n group: 0,\n tag: 'Singular',\n reason: 'did-a-value'\n}, //'the can'\n{\n match: 'the [(can|will|may)]',\n group: 0,\n tag: 'Singular',\n reason: 'the can'\n}, // ==== Possessive ====\n//spencer kelly's\n{\n match: '#FirstName #Acronym? (#Possessive && #LastName)',\n tag: 'Possessive',\n reason: 'name-poss'\n}, //Super Corp's fundraiser\n{\n match: '#Organization+ #Possessive',\n tag: 'Possessive',\n reason: 'org-possessive'\n}, //Los Angeles's fundraiser\n{\n match: '#Place+ #Possessive',\n tag: 'Possessive',\n reason: 'place-possessive'\n}, // assign all tasks\n{\n match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'all-presentTense'\n}, //the above is clear\n{\n match: '#Determiner [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-is'\n}, //real evil is\n{\n match: '#Adjective [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'adj-adj-is'\n}, // PresentTense/Noun ambiguities\n// big dreams, critical thinking\n// have big dreams\n{\n match: '(had|have|#PastTense) #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adj-presentTense'\n}, // excellent answer spencer\n{\n match: '^#Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'start adj-presentTense'\n}, // one big reason\n{\n match: '#Value #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'one-big-reason'\n}, // won widespread support\n{\n match: '#PastTense #Adjective+ [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'won-wide-support'\n}, // many poses\n{\n match: '(many|few|several|couple) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'many-poses'\n}, // very big dreams\n{\n match: '#Adverb #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'very-big-dream'\n}, // good wait staff\n{\n match: '#Adjective [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'good-wait-staff'\n}, // adorable little store\n{\n match: '#Adjective #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adorable-little-store'\n}, // of basic training\n{\n match: '#Preposition #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'of-basic-training'\n}, // early warning\n{\n match: '#Adjective [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'early-warning'\n}, // justifiying higher costs\n{\n match: '#Gerund #Adverb? #Comparative [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'higher-costs'\n}, // do the dance\n{\n match: '#Infinitive (this|that|the) [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'do-this-dance'\n}, //his fine\n{\n match: '(his|her|its) [#Adjective]',\n group: 0,\n tag: 'Noun',\n reason: 'his-fine'\n}, //some pressing issues\n{\n match: 'some [#Verb] #Plural',\n group: 0,\n tag: 'Noun',\n reason: 'determiner6'\n}, //'more' is not always an adverb\n{\n match: 'more #Noun',\n tag: 'Noun',\n reason: 'more-noun'\n}, {\n match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-list'\n}, //3 feet\n{\n match: '(right|rights) of .',\n tag: 'Noun',\n reason: 'right-of'\n}, // a bit\n{\n match: 'a [bit]',\n group: 0,\n tag: 'Noun',\n reason: 'bit-2'\n}, // my first thought\n{\n match: '#Possessive #Ordinal [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'first-thought'\n}, //running-a-show\n{\n match: '#Gerund #Determiner [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-a-show'\n}, //the-only-reason\n{\n match: '#Determiner #Adverb [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'the-reason'\n}, //the nice swim\n{\n match: '(the|this|those|these) #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-verb'\n}, // the truly nice swim\n{\n match: '(the|this|those|these) #Adverb #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'determiner4'\n}, //the orange is\n{\n match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-2'\n}, // a stream runs\n{\n match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb',\n group: 0,\n tag: 'Noun',\n reason: 'determiner5'\n}, //the test string\n{\n match: '#Determiner [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'determiner7'\n}, //a nice deal\n{\n match: '#Determiner #Adjective #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'a-nice-inf'\n}, //the wait to vote\n{\n match: 'the [#Verb] #Preposition .',\n group: 0,\n tag: 'Noun',\n reason: 'determiner1'\n}, //a sense of\n{\n match: '#Determiner [#Verb] of',\n group: 0,\n tag: 'Noun',\n reason: 'the-verb-of'\n}, //next career move\n{\n match: '#Adjective #Noun+ [#Infinitive] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'career-move'\n}, //the threat of force\n{\n match: '#Determiner #Noun of [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-of-noun'\n}, //the western line\n{\n match: '#Determiner [(western|eastern|northern|southern|central)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'western-line'\n}, //her polling\n{\n match: '#Possessive [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'her-polling'\n}, //her fines\n{\n match: '(his|her|its) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'its-polling'\n}, //linear algebra\n{\n match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'technical-noun'\n}, // a blown motor\n{\n match: '(the|those|these|a|an) [#Participle] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'blown-motor'\n}, // walk the walk\n{\n match: '(the|those|these|a|an) #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'det-inf'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-pres'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-past'\n}, // this swimming\n{\n match: '(this|that) [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'this-gerund'\n}, // at some point\n{\n match: 'at some [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'at-some-inf'\n}, //air-flow\n{\n match: '(#Noun && @hasHyphen) #Verb',\n tag: 'Noun',\n reason: 'hyphen-verb'\n}, //is no walk\n{\n match: 'is no [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'is-no-verb'\n}, //different views than\n{\n match: '[#Verb] than',\n group: 0,\n tag: 'Noun',\n reason: 'correction'\n}, // goes to sleep\n{\n match: '(go|goes|went) to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'goes-to-verb'\n}, //a close watch on\n{\n match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf'\n}, //a tv show\n{\n match: '(a|an) #Noun [#Infinitive]$',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf2'\n}, //do so\n{\n match: 'do [so]',\n group: 0,\n tag: 'Noun',\n reason: 'so-noun'\n}, //is mark hughes\n{\n match: '#Copula [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'is-pres-noun'\n}, //a close\n{\n match: '#Determiner #Adverb? [close]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-close'\n}, // what the hell\n{\n match: '#Determiner [(shit|damn|hell)]',\n group: 0,\n tag: 'Noun',\n reason: 'swears-noun'\n}, // the staff were\n{\n match: '(the|these) [#Singular] (were|are)',\n group: 0,\n tag: 'Plural',\n reason: 'singular-were'\n}, // running for congress\n{\n match: '#Gerund #Adjective? for [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-for'\n}, // running to work\n{\n match: '#Gerund #Adjective to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-to'\n}, // any questions for\n{\n match: '(many|any|some|several) [#PresentTense] for',\n group: 0,\n tag: 'Noun',\n reason: 'any-verbs-for'\n}, // have fun\n{\n match: \"(have|had) [#Adjective] #Preposition .\",\n group: 0,\n tag: 'Noun',\n reason: 'have-fun'\n}, // co-founder\n{\n match: \"co #Noun\",\n tag: 'Actor',\n reason: 'co-noun'\n}];\n\nvar adjectives = \"(\".concat(_ambig.adverbAdjective.join('|'), \")\");\nvar _05Adverb = [//still good\n{\n match: '[still] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'still-advb'\n}, //still make\n{\n match: '[still] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'still-verb'\n}, // so hot\n{\n match: '[so] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'so-adv'\n}, // way hotter\n{\n match: '[way] #Comparative',\n group: 0,\n tag: 'Adverb',\n reason: 'way-adj'\n}, // way too hot\n{\n match: '[way] #Adverb #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'way-too-adj'\n}, // all singing\n{\n match: '[all] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'all-verb'\n}, // sing like an angel\n{\n match: '(#Verb && !#Modal) [like]',\n group: 0,\n tag: 'Adverb',\n reason: 'verb-like'\n}, //barely even walk\n{\n match: '(barely|hardly) even',\n tag: 'Adverb',\n reason: 'barely-even'\n}, //even held\n{\n match: '[even] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'even-walk'\n}, // even left\n{\n match: 'even left',\n tag: '#Adverb #Verb',\n reason: 'even-left'\n}, //cheering hard - dropped -ly's\n{\n match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]',\n group: 0,\n tag: 'Adverb',\n reason: 'lazy-ly'\n}, // much appreciated\n{\n match: '[much] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'bit-1'\n}, // is well\n{\n match: '#Copula [#Adverb]$',\n group: 0,\n tag: 'Adjective',\n reason: 'is-well'\n}, // a bit cold\n{\n match: 'a [(little|bit|wee) bit?] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'a-bit-cold'\n}, // dark green\n{\n match: \"[\".concat(adjectives, \"] #Adjective\"),\n group: 0,\n tag: 'Adverb',\n reason: 'dark-green'\n}, // kinda sparkly\n{\n match: \"#Adverb [#Adverb]$\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly'\n}, {\n match: \"#Adverb [#Adverb] (and|or|then)\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly-and'\n}];\n\nvar _06Value = [// ==== PhoneNumber ====\n//1 800 ...\n{\n match: '1 #Value #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '1-800-Value'\n}, //(454) 232-9873\n{\n match: '#NumericValue #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '(800) PhoneNumber'\n}, // ==== Currency ====\n// chinese yuan\n{\n match: '#Demonym #Currency',\n tag: 'Currency',\n reason: 'demonym-currency'\n}, // ==== Ordinal ====\n{\n match: '[second] #Noun',\n group: 0,\n tag: 'Ordinal',\n reason: 'second-noun'\n}, // ==== Unit ====\n//5 yan\n{\n match: '#Value+ [#Currency]',\n group: 0,\n tag: 'Unit',\n reason: '5-yan'\n}, {\n match: '#Value [(foot|feet)]',\n group: 0,\n tag: 'Unit',\n reason: 'foot-unit'\n}, //minus 7\n{\n match: '(minus|negative) #Value',\n tag: 'Value',\n reason: 'minus-value'\n}, //5 kg.\n{\n match: '#Value [#Abbreviation]',\n group: 0,\n tag: 'Unit',\n reason: 'value-abbr'\n}, {\n match: '#Value [k]',\n group: 0,\n tag: 'Unit',\n reason: 'value-k'\n}, {\n match: '#Unit an hour',\n tag: 'Unit',\n reason: 'unit-an-hour'\n}, //seven point five\n{\n match: '#Value (point|decimal) #Value',\n tag: 'Value',\n reason: 'value-point-value'\n}, // ten bucks\n{\n match: '(#Value|a) [(buck|bucks|grand)]',\n group: 0,\n tag: 'Currency',\n reason: 'value-bucks'\n}, //quarter million\n{\n match: '#Determiner [(half|quarter)] #Ordinal',\n group: 0,\n tag: 'Value',\n reason: 'half-ordinal'\n}, {\n match: 'a #Value',\n tag: 'Value',\n reason: 'a-value'\n}, // ==== Money ====\n{\n match: '[#Value+] #Currency',\n group: 0,\n tag: 'Money',\n reason: '15 usd'\n}, // thousand and two\n{\n match: \"(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value\",\n tag: 'Value',\n reason: 'magnitude-and-value'\n}, //'a/an' can mean 1 - \"a hour\"\n{\n match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)',\n group: 0,\n tag: 'Value',\n reason: 'a-is-one'\n}];\n\nvar verbs = \"(\".concat(_ambig.personVerb.join('|'), \")\");\nvar list$2 = [// adj -> gerund\n// amusing his aunt\n{\n match: '[#Adjective] #Possessive #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'gerund-his-noun'\n}, // loving you\n{\n match: '[#Adjective] (us|you)',\n group: 0,\n tag: 'Gerund',\n reason: 'loving-you'\n}, // slowly stunning\n{\n match: '(slowly|quickly) [#Adjective]',\n group: 0,\n tag: 'Gerund',\n reason: 'slowly-adj'\n}, // like\n{\n match: '(#Modal|i|they|we|do) not? [like]',\n group: 0,\n tag: 'PresentTense',\n reason: 'modal-like'\n}, // do not simply like\n{\n match: 'do (simply|just|really|not)+ [(#Adjective|like)]',\n group: 0,\n tag: 'Verb',\n reason: 'do-simply-like'\n}, // does mean\n{\n match: 'does (#Adverb|not)? [#Adjective]',\n group: 0,\n tag: 'PresentTense',\n reason: 'does-mean'\n}, // i mean\n{\n match: 'i (#Adverb|do)? not? [mean]',\n group: 0,\n tag: 'PresentTense',\n reason: 'i-mean'\n}, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' },\n// ==== Tense ====\n//he left\n{\n match: '#Noun #Adverb? [left]',\n group: 0,\n tag: 'PastTense',\n reason: 'left-verb'\n}, //this rocks\n{\n match: '(this|that) [#Plural]',\n group: 0,\n tag: 'PresentTense',\n reason: 'this-verbs'\n}, // ==== Auxiliary ====\n//was walking\n{\n match: \"[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'copula-walking'\n}, //support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, //would walk\n{\n match: \"[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'modal-verb'\n}, //would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //would be walking\n// { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' },\n//had been walking\n// {\n// match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`,\n// group: 0,\n// tag: 'Auxiliary',\n// reason: 'had-been',\n// },\n//support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, // will walk\n{\n match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb',\n group: 0,\n tag: 'Auxiliary',\n reason: 'have-had'\n}, // about to go\n{\n match: '[about to] #Adverb? #Verb',\n group: 0,\n tag: ['Auxiliary', 'Verb'],\n reason: 'about-to'\n}, //would be walking\n{\n match: \"#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-be'\n}, //were being run\n{\n match: \"(were|was) being [#PresentTense]\",\n group: 0,\n tag: 'PastTense',\n reason: 'was-being'\n}, //have run\n// { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' },\n//would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //had been walking\n{\n match: \"(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-been'\n}, // was being driven\n{\n match: '[(be|being|been)] #Participle',\n group: 0,\n tag: 'Auxiliary',\n reason: 'being-foo'\n}, // ==== Phrasal ====\n//'foo-up'\n{\n match: '(#Verb && @hasHyphen) up',\n tag: 'PhrasalVerb',\n reason: 'foo-up'\n}, {\n match: '(#Verb && @hasHyphen) off',\n tag: 'PhrasalVerb',\n reason: 'foo-off'\n}, {\n match: '(#Verb && @hasHyphen) over',\n tag: 'PhrasalVerb',\n reason: 'foo-over'\n}, {\n match: '(#Verb && @hasHyphen) out',\n tag: 'PhrasalVerb',\n reason: 'foo-out'\n}, //fall over\n{\n match: '#PhrasalVerb [#PhrasalVerb]',\n group: 0,\n tag: 'Particle',\n reason: 'phrasal-particle'\n}, //back it up\n{\n match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]',\n group: 0,\n tag: 'Adverb',\n reason: 'phrasal-pronoun-advb'\n}, // ==== Copula ====\n//will be running (not copula)\n{\n match: '[will #Adverb? not? #Adverb? be] #Gerund',\n group: 0,\n tag: 'Copula',\n reason: 'will-be-copula'\n}, //for more complex forms, just tag 'be'\n{\n match: 'will #Adverb? not? #Adverb? [be] #Adjective',\n group: 0,\n tag: 'Copula',\n reason: 'be-copula'\n}, // ==== Infinitive ====\n//march to\n{\n match: '[march] (up|down|back|to|toward)',\n group: 0,\n tag: 'Infinitive',\n reason: 'march-to'\n}, //must march\n{\n match: '#Modal [march]',\n group: 0,\n tag: 'Infinitive',\n reason: 'must-march'\n}, //let him glue\n{\n match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)',\n group: 0,\n tag: 'Infinitive',\n reason: 'let-him-glue'\n}, //he quickly foo\n// { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' },\n//will secure our\n{\n match: 'will [#Adjective]',\n group: 0,\n tag: 'Verb',\n reason: 'will-adj'\n}, //he disguised the thing\n{\n match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'he-adj-the'\n}, //is eager to go\n{\n match: '#Copula [#Adjective to] #Verb',\n group: 0,\n tag: 'Verb',\n reason: 'adj-to'\n}, // open the door\n{\n match: '[open] #Determiner',\n group: 0,\n tag: 'Infinitive',\n reason: 'open-the'\n}, // compromises are possible\n{\n match: '[#PresentTense] (are|were|was) #Adjective',\n group: 0,\n tag: 'Plural',\n reason: 'compromises-are-possible'\n}, // would wade\n{\n match: \"#Modal [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'would-mark'\n}, {\n match: \"#Adverb [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'really-mark'\n}, //to mark\n{\n match: '(to|#Modal) [mark]',\n group: 0,\n tag: 'PresentTense',\n reason: 'to-mark'\n}, // wade smith\n{\n match: \"\".concat(verbs, \" #Person\"),\n tag: 'Person',\n reason: 'rob-smith'\n}, // wade m. Cooper\n{\n match: \"\".concat(verbs, \" #Acronym #ProperNoun\"),\n tag: 'Person',\n reason: 'rob-a-smith'\n}, // damn them\n{\n match: '[shit] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear1-verb'\n}, {\n match: '[damn] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear2-verb'\n}, {\n match: '[fuck] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear3-verb'\n}];\nvar _07Verbs = list$2;\n\nvar list$1 = [// ==== Region ====\n//West Norforlk\n{\n match: '(west|north|south|east|western|northern|southern|eastern)+ #Place',\n tag: 'Region',\n reason: 'west-norfolk'\n}, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n{\n match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]',\n group: 0,\n tag: 'Region',\n reason: 'us-state'\n}, // portland oregon\n{\n match: 'portland [or]',\n group: 0,\n tag: 'Region',\n reason: 'portland-or'\n}, //Foo District\n{\n match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)',\n tag: 'Region',\n reason: 'foo-district'\n}, //District of Foo\n{\n match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun',\n tag: 'Region',\n reason: 'district-of-Foo'\n}, // in Foo California\n{\n match: 'in [#ProperNoun] #Place',\n group: 0,\n tag: 'Place',\n reason: 'propernoun-place'\n}, // ==== Address ====\n{\n match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)',\n tag: 'Address',\n reason: 'address-st'\n} // in houston\n// { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' },\n// { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' },\n// { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' },\n// { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' },\n// { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' },\n// { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' },\n// // houston texas\n// { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' },\n];\nvar _08Place = list$1;\n\nvar _09Org = [//John & Joe's\n{\n match: '#Noun (&|n) #Noun',\n tag: 'Organization',\n reason: 'Noun-&-Noun'\n}, // teachers union of Ontario\n{\n match: '#Organization of the? #ProperNoun',\n tag: 'Organization',\n reason: 'org-of-place',\n safe: true\n}, //walmart USA\n{\n match: '#Organization #Country',\n tag: 'Organization',\n reason: 'org-country'\n}, //organization\n{\n match: '#ProperNoun #Organization',\n tag: 'Organization',\n reason: 'titlecase-org'\n}, //FitBit Inc\n{\n match: '#ProperNoun (ltd|co|inc|dept|assn|bros)',\n tag: 'Organization',\n reason: 'org-abbrv'\n}, // the OCED\n{\n match: 'the [#Acronym]',\n group: 0,\n tag: 'Organization',\n reason: 'the-acronym',\n safe: true\n}, // global trade union\n{\n match: '(world|global|international|national|#Demonym) #Organization',\n tag: 'Organization',\n reason: 'global-org'\n}, // schools\n{\n match: '#Noun+ (public|private) school',\n tag: 'School',\n reason: 'noun-public-school'\n}];\n\nvar nouns = \"(\".concat(_ambig.personNoun.join('|'), \")\");\nvar months = \"(\".concat(_ambig.personMonth.join('|'), \")\");\nvar places = \"(\".concat(_ambig.personPlace.join('|'), \")\");\nvar list = [// ==== Honorific ====\n{\n match: '[(1st|2nd|first|second)] #Honorific',\n group: 0,\n tag: 'Honorific',\n reason: 'ordinal-honorific'\n}, {\n match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person',\n group: 0,\n tag: 'Honorific',\n reason: 'ambg-honorifics'\n}, // ==== FirstNames ====\n//is foo Smith\n{\n match: '#Copula [(#Noun|#PresentTense)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'copula-noun-lastname'\n}, //pope francis\n{\n match: '(lady|queen|sister) #ProperNoun',\n tag: 'FemaleName',\n reason: 'lady-titlecase',\n safe: true\n}, {\n match: '(king|pope|father) #ProperNoun',\n tag: 'MaleName',\n reason: 'pope-titlecase',\n safe: true\n}, //ambiguous-but-common firstnames\n{\n match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'maybe-lastname'\n}, // ==== Nickname ====\n// Dwayne 'the rock' Johnson\n{\n match: '#FirstName [#Determiner #Noun] #LastName',\n group: 0,\n tag: 'NickName',\n reason: 'first-noun-last'\n}, //my buddy\n{\n match: '#Possessive [#FirstName]',\n group: 0,\n tag: 'Person',\n reason: 'possessive-name'\n}, {\n match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun',\n tag: 'Person',\n reason: 'titlecase-acronym-titlecase',\n safe: true\n}, //ludwig van beethovan\n{\n match: '#Acronym #LastName',\n tag: 'Person',\n reason: 'acronym-latname',\n safe: true\n}, //jk rowling\n{\n match: '#Person (jr|sr|md)',\n tag: 'Person',\n reason: 'person-honorific'\n}, //peter II\n{\n match: '#Person #Person the? #RomanNumeral',\n tag: 'Person',\n reason: 'roman-numeral'\n}, //'Professor Fink', 'General McCarthy'\n{\n match: '#FirstName [/^[^aiurck]$/]',\n group: 0,\n tag: ['Acronym', 'Person'],\n reason: 'john-e'\n}, //Doctor john smith jr\n//general pearson\n{\n match: '#Honorific #Person',\n tag: 'Person',\n reason: 'honorific-person'\n}, //remove single 'mr'\n{\n match: '#Honorific #Acronym',\n tag: 'Person',\n reason: 'Honorific-TitleCase'\n}, //j.k Rowling\n{\n match: '#Noun van der? #Noun',\n tag: 'Person',\n reason: 'van der noun',\n safe: true\n}, //king of spain\n{\n match: '(king|queen|prince|saint|lady) of #Noun',\n tag: 'Person',\n reason: 'king-of-noun',\n safe: true\n}, //lady Florence\n{\n match: '(prince|lady) #Place',\n tag: 'Person',\n reason: 'lady-place'\n}, //saint Foo\n{\n match: '(king|queen|prince|saint) #ProperNoun',\n tag: 'Person',\n reason: 'saint-foo'\n}, //Foo U Ford\n{\n match: '[#ProperNoun] #Person',\n group: 0,\n tag: 'Person',\n reason: 'proper-person',\n safe: true\n}, // al sharpton\n{\n match: 'al (#Person|#ProperNoun)',\n tag: 'Person',\n reason: 'al-borlen',\n safe: true\n}, //ferdinand de almar\n{\n match: '#FirstName de #Noun',\n tag: 'Person',\n reason: 'bill-de-noun'\n}, //Osama bin Laden\n{\n match: '#FirstName (bin|al) #Noun',\n tag: 'Person',\n reason: 'bill-al-noun'\n}, //John L. Foo\n{\n match: '#FirstName #Acronym #ProperNoun',\n tag: 'Person',\n reason: 'bill-acronym-title'\n}, //Andrew Lloyd Webber\n{\n match: '#FirstName #FirstName #ProperNoun',\n tag: 'Person',\n reason: 'bill-firstname-title'\n}, //Mr Foo\n{\n match: '#Honorific #FirstName? #ProperNoun',\n tag: 'Person',\n reason: 'dr-john-Title'\n}, //peter the great\n{\n match: '#FirstName the #Adjective',\n tag: 'Person',\n reason: 'name-the-great'\n}, //very common-but-ambiguous lastnames\n{\n match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)',\n tag: 'Person',\n reason: 'bill-green'\n}, // faith smith\n{\n match: \"\".concat(nouns, \" #Person\"),\n tag: 'Person',\n reason: 'ray-smith',\n safe: true\n}, // faith m. Smith\n{\n match: \"\".concat(nouns, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'ray-a-smith',\n safe: true\n}, //give to april\n{\n match: \"#Infinitive #Determiner? #Adjective? #Noun? (to|for) [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-person'\n}, // remind june\n{\n match: \"#Infinitive [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'infinitive-person'\n}, // may waits for\n// { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' },\n// may waits to\n// { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' },\n// april will\n{\n match: \"[\".concat(months, \"] #Modal\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-modal'\n}, // may be\n{\n match: \"[may] be\",\n group: 0,\n tag: 'Verb',\n reason: 'may-be'\n}, // would april\n{\n match: \"#Modal [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'modal-ambig'\n}, // it is may\n{\n match: \"#Copula [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'is-may'\n}, // may is\n{\n match: \"[\".concat(months, \"] #Copula\"),\n group: 0,\n tag: 'Person',\n reason: 'may-is'\n}, // with april\n{\n match: \"that [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'that-month'\n}, // with april\n{\n match: \"with [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'with-month'\n}, // for april\n{\n match: \"for [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'for-month'\n}, // this april\n{\n match: \"this [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'this-may'\n}, //maybe not 'this'\n// next april\n{\n match: \"next [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'next-may'\n}, // last april\n{\n match: \"last [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'last-may'\n}, // wednesday april\n{\n match: \"#Date [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'date-may'\n}, // may 5th\n{\n match: \"[\".concat(months, \"] the? #Value\"),\n group: 0,\n tag: 'Month',\n reason: 'may-5th'\n}, // 5th of may\n{\n match: \"#Value of [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: '5th-of-may'\n}, // dick van dyke\n{\n match: '#ProperNoun (van|al|bin) #ProperNoun',\n tag: 'Person',\n reason: 'title-van-title',\n safe: true\n}, //jose de Sucre\n{\n match: '#ProperNoun (de|du) la? #ProperNoun',\n tag: 'Person',\n reason: 'title-de-title',\n safe: true\n}, //Jani K. Smith\n{\n match: '#Singular #Acronym #LastName',\n tag: '#Person',\n reason: 'title-acro-noun',\n safe: true\n}, //John Foo\n{\n match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?',\n tag: 'Person',\n reason: 'firstname-titlecase'\n}, //Joe K. Sombrero\n{\n match: '#FirstName #Acronym #Noun',\n tag: 'Person',\n reason: 'n-acro-noun',\n safe: true\n}, //Anthony de Marco\n{\n match: '#FirstName [(de|di|du|van|von) #Person]',\n group: 0,\n tag: 'LastName',\n reason: 'de-firstname'\n}, // Paris Berelc\n{\n match: \"[\".concat(places, \"] (#ProperNoun && !#Place)\"),\n group: 0,\n tag: 'FirstName',\n reason: 'place-firstname'\n}];\nvar _10People = list;\n\nvar matches = [];\nmatches = matches.concat(_01Misc);\nmatches = matches.concat(_02Dates);\nmatches = matches.concat(_03Adjective);\nmatches = matches.concat(_04Noun);\nmatches = matches.concat(_05Adverb);\nmatches = matches.concat(_06Value);\nmatches = matches.concat(_07Verbs);\nmatches = matches.concat(_08Place);\nmatches = matches.concat(_09Org);\nmatches = matches.concat(_10People); // cache the easier conditions up-front\n\nvar cacheRequired = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: _unique(needTags),\n words: _unique(needWords)\n };\n}; // for speed, enumerate (a|b|c) to three matches\n\n\nvar allLists = function allLists(m) {\n var more = [];\n var lists = m.reg.filter(function (r) {\n return r.fastOr !== undefined;\n });\n\n if (lists.length === 1) {\n var i = m.reg.findIndex(function (r) {\n return r.fastOr !== undefined;\n });\n Object.keys(m.reg[i].fastOr).forEach(function (w) {\n var newM = Object.assign({}, m);\n newM.reg = newM.reg.slice(0);\n newM.reg[i] = Object.assign({}, newM.reg[i]);\n newM.reg[i].word = w;\n delete newM.reg[i].operator;\n delete newM.reg[i].fastOr; // newM.reason += '-' + w\n\n more.push(newM);\n });\n }\n\n return more;\n}; // parse them\n\n\nvar all = [];\nmatches.forEach(function (m) {\n m.reg = matchSyntax(m.match);\n var enumerated = allLists(m);\n\n if (enumerated.length > 0) {\n all = all.concat(enumerated);\n } else {\n all.push(m); // console.log(m)\n }\n});\nall.forEach(function (m) {\n m.required = cacheRequired(m.reg);\n return m;\n}); // console.log(all.length)\n// console.log(all[all.length - 1])\n\nvar matches_1 = all;\n\nvar hasEvery = function hasEvery(chances) {\n if (chances.length === 0) {\n return [];\n }\n\n var obj = {};\n chances.forEach(function (arr) {\n arr = _unique(arr);\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = obj[arr[i]] || 0;\n obj[arr[i]] += 1;\n }\n });\n var res = Object.keys(obj);\n res = res.filter(function (k) {\n return obj[k] === chances.length;\n });\n res = res.map(function (num) {\n return Number(num);\n });\n return res;\n};\n\nvar runner = function runner(doc) {\n //find phrases to try for each match\n matches_1.forEach(function (m) {\n var allChances = [];\n m.required.words.forEach(function (w) {\n allChances.push(doc._cache.words[w] || []);\n });\n m.required.tags.forEach(function (tag) {\n allChances.push(doc._cache.tags[tag] || []);\n });\n var worthIt = hasEvery(allChances);\n\n if (worthIt.length === 0) {\n return;\n }\n\n var phrases = worthIt.map(function (index) {\n return doc.list[index];\n });\n var tryDoc = doc.buildFrom(phrases); // phrases getting tagged\n\n var match = tryDoc.match(m.reg, m.group);\n\n if (match.found) {\n if (m.safe === true) {\n match.tagSafe(m.tag, m.reason);\n } else {\n match.tag(m.tag, m.reason);\n }\n }\n });\n};\n\nvar runner_1 = runner; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []]))\n\n// misc: 40ms\n//sequence of match-tag statements to correct mis-tags\n\nvar corrections = function corrections(doc) {\n runner_1(doc);\n fixMisc(doc);\n return doc;\n};\n\nvar _04Correction = corrections;\n\n/** POS-tag all terms in this document */\n\nvar tagger = function tagger(doc) {\n var terms = doc.termList(); // check against any known-words\n\n doc = _01Init(doc, terms); // everything has gotta be something. ¯\\_(:/)_/¯\n\n doc = _02Fallbacks(doc, terms); // support \"didn't\" & \"spencer's\"\n\n doc = _03Contractions(doc); //set our cache, to speed things up\n\n doc.cache(); // wiggle-around the results, so they make more sense\n\n doc = _04Correction(doc); // remove our cache, as it's invalidated now\n\n doc.uncache(); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar _02Tagger = tagger;\n\nvar addMethod$a = function addMethod(Doc) {\n /** */\n var Abbreviations = /*#__PURE__*/function (_Doc) {\n _inherits(Abbreviations, _Doc);\n\n var _super = _createSuper(Abbreviations);\n\n function Abbreviations() {\n _classCallCheck(this, Abbreviations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Abbreviations, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n if (t.tags.Abbreviation === true && t.next) {\n t.post = t.post.replace(/^\\./, '');\n }\n\n var str = t.text.replace(/\\./, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n t.post = t.post.replace(/^\\./, '');\n t.post = '.' + t.post;\n });\n return this;\n }\n }]);\n\n return Abbreviations;\n }(Doc);\n\n Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods;\n\n Doc.prototype.abbreviations = function (n) {\n var match = this.match('#Abbreviation');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Abbreviations(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Abbreviations = addMethod$a;\n\nvar hasPeriod = /\\./;\n\nvar addMethod$9 = function addMethod(Doc) {\n /** */\n var Acronyms = /*#__PURE__*/function (_Doc) {\n _inherits(Acronyms, _Doc);\n\n var _super = _createSuper(Acronyms);\n\n function Acronyms() {\n _classCallCheck(this, Acronyms);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Acronyms, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one\n\n if (hasPeriod.test(t.post) === false) {\n str += '.';\n }\n\n t.set(str);\n });\n return this;\n }\n }]);\n\n return Acronyms;\n }(Doc);\n\n Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods;\n Acronyms.prototype.strip = Acronyms.prototype.stripPeriods;\n\n Doc.prototype.acronyms = function (n) {\n var match = this.match('#Acronym');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Acronyms(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Acronyms = addMethod$9;\n\nvar addMethod$8 = function addMethod(Doc) {\n /** split into approximate sub-sentence phrases */\n Doc.prototype.clauses = function (n) {\n // an awkward way to disambiguate a comma use\n var commas = this[\"if\"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool...\n .notIf('@hasComma . .? (and|or) .') //cool, and fun\n .notIf('(#City && @hasComma) #Country') //'toronto, canada'\n .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd'\n .notIf('(#Date && @hasComma) #Year') //'july 6, 1992'\n .notIf('@hasComma (too|also)$') //at end of sentence\n .match('@hasComma');\n var found = this.splitAfter(commas);\n var quotes = found.quotations();\n found = found.splitOn(quotes);\n var parentheses = found.parentheses();\n found = found.splitOn(parentheses); // it is cool and it is ..\n\n var conjunctions = found[\"if\"]('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction');\n found = found.splitBefore(conjunctions); // if it is this then that\n\n var condition = found[\"if\"]('if .{2,9} then .').match('then');\n found = found.splitBefore(condition); // misc clause partitions\n\n found = found.splitBefore('as well as .');\n found = found.splitBefore('such as .');\n found = found.splitBefore('in addition to .'); // semicolons, dashes\n\n found = found.splitAfter('@hasSemicolon');\n found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty'\n // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // //which the boy robbed\n // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // does there appear to have relative/subordinate clause still?\n\n var tooLong = found.filter(function (d) {\n return d.wordCount() > 5 && d.match('#Verb+').length >= 2;\n });\n\n if (tooLong.found) {\n var m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+');\n found = found.splitOn(m.eq(0));\n }\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Doc(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Clauses = addMethod$8;\n\nvar addMethod$7 = function addMethod(Doc) {\n /** */\n var Contractions = /*#__PURE__*/function (_Doc) {\n _inherits(Contractions, _Doc);\n\n var _super = _createSuper(Contractions);\n\n function Contractions(list, from, world) {\n var _this;\n\n _classCallCheck(this, Contractions);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Contractions, [{\n key: \"expand\",\n value: function expand() {\n this.list.forEach(function (p) {\n var terms = p.terms(); //change the case?\n\n var isTitlecase = terms[0].isTitleCase();\n terms.forEach(function (t, i) {\n //use the implicit text\n t.set(t.implicit || t.text);\n t.implicit = undefined; //add whitespace\n\n if (i < terms.length - 1 && t.post === '') {\n t.post += ' ';\n }\n }); //set titlecase\n\n if (isTitlecase) {\n terms[0].toTitleCase();\n }\n });\n return this;\n }\n }]);\n\n return Contractions;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.contractions = function (n) {\n //find currently-contracted\n var found = this.match('@hasContraction+'); //(may want to split these up)\n //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Contractions(found.list, this, this.world);\n }; //aliases\n\n\n Doc.prototype.expanded = Doc.prototype.isExpanded;\n Doc.prototype.contracted = Doc.prototype.isContracted;\n return Doc;\n};\n\nvar Contractions = addMethod$7;\n\nvar addMethod$6 = function addMethod(Doc) {\n //pull it apart..\n var parse = function parse(doc) {\n var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?');\n var beforeLast = doc.match('[.] (and|or)', 0);\n return {\n things: things,\n conjunction: doc.match('(and|or) not?'),\n beforeLast: beforeLast,\n hasOxford: beforeLast.has('@hasComma')\n };\n };\n /** cool, fun, and nice */\n\n\n var Lists = /*#__PURE__*/function (_Doc) {\n _inherits(Lists, _Doc);\n\n var _super = _createSuper(Lists);\n\n function Lists() {\n _classCallCheck(this, Lists);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Lists, [{\n key: \"conjunctions\",\n value:\n /** coordinating conjunction */\n function conjunctions() {\n return this.match('(and|or)');\n }\n /** split-up by list object */\n\n }, {\n key: \"parts\",\n value: function parts() {\n return this.splitAfter('@hasComma').splitOn('(and|or) not?');\n }\n /** remove the conjunction */\n\n }, {\n key: \"items\",\n value: function items() {\n return parse(this).things;\n }\n /** add a new unit to the list */\n\n }, {\n key: \"add\",\n value: function add(str) {\n this.forEach(function (p) {\n var beforeLast = parse(p).beforeLast;\n beforeLast.append(str); //add a comma to it\n\n beforeLast.termList(0).addPunctuation(',');\n });\n return this;\n }\n /** remove any matching unit from the list */\n\n }, {\n key: \"remove\",\n value: function remove(match) {\n return this.items()[\"if\"](match).remove();\n }\n /** return only lists that use a serial comma */\n\n }, {\n key: \"hasOxfordComma\",\n value: function hasOxfordComma() {\n return this.filter(function (doc) {\n return parse(doc).hasOxford;\n });\n }\n }, {\n key: \"addOxfordComma\",\n value: function addOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === false) {\n needsComma.post(', ');\n }\n\n return this;\n }\n }, {\n key: \"removeOxfordComma\",\n value: function removeOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === true) {\n needsComma.post(' ');\n }\n\n return this;\n }\n }]);\n\n return Lists;\n }(Doc); // aliases\n\n\n Lists.prototype.things = Lists.prototype.items;\n\n Doc.prototype.lists = function (n) {\n var m = this[\"if\"]('@hasComma+ .? (and|or) not? .'); // person-list\n\n var nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+')[\"if\"]('#Noun');\n var adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+');\n var verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+');\n var result = nounList.concat(adjList);\n result = result.concat(verbList);\n result = result[\"if\"]('@hasComma');\n\n if (typeof n === 'number') {\n result = m.get(n);\n }\n\n return new Lists(result.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Lists = addMethod$6;\n\nvar noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace'\n\nvar hasPlural = function hasPlural(doc) {\n if (doc.has('#Plural') === true) {\n return true;\n } // these can't be plural\n\n\n if (doc.has(noPlural) === true) {\n return false;\n }\n\n return true;\n};\n\nvar hasPlural_1 = hasPlural;\n\nvar irregulars = {\n hour: 'an',\n heir: 'an',\n heirloom: 'an',\n honest: 'an',\n honour: 'an',\n honor: 'an',\n uber: 'an' //german u\n\n}; //pronounced letters of acronyms that get a 'an'\n\nvar an_acronyms = {\n a: true,\n e: true,\n f: true,\n h: true,\n i: true,\n l: true,\n m: true,\n n: true,\n o: true,\n r: true,\n s: true,\n x: true\n}; //'a' regexes\n\nvar a_regexs = [/^onc?e/i, //'wu' sound of 'o'\n/^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n/^eul/i];\n\nvar makeArticle = function makeArticle(doc) {\n //no 'the john smith', but 'a london hotel'\n if (doc.has('#Person') || doc.has('#Place')) {\n return '';\n } //no a/an if it's plural\n\n\n if (doc.has('#Plural')) {\n return 'the';\n }\n\n var str = doc.text('normal').trim(); //explicit irregular forms\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //spelled-out acronyms\n\n\n var firstLetter = str.substr(0, 1);\n\n if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) {\n return 'an';\n } //'a' regexes\n\n\n for (var i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return 'a';\n }\n } //basic vowel-startings\n\n\n if (/^[aeiou]/i.test(str)) {\n return 'an';\n }\n\n return 'a';\n};\n\nvar getArticle = makeArticle;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$2 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar _rules = {\n isSingular: isSingular,\n isPlural: isPlural$2\n};\n\nvar endS = /s$/; // double-check this term, if it is not plural, or singular.\n// (this is a partial copy of ./tagger/fallbacks/plural)\n// fallback plural if it ends in an 's'.\n\nvar isPlural$1 = function isPlural(str) {\n // isSingular suffix rules\n if (_rules.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return false;\n } // does it end in an s?\n\n\n if (endS.test(str) === true) {\n return true;\n } // is it a plural like 'fungi'?\n\n\n if (_rules.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return true;\n }\n\n return null;\n};\n\nvar isPlural_1$1 = isPlural$1;\n\nvar exceptions = {\n he: 'his',\n she: 'hers',\n they: 'theirs',\n we: 'ours',\n i: 'mine',\n you: 'yours',\n her: 'hers',\n their: 'theirs',\n our: 'ours',\n my: 'mine',\n your: 'yours'\n}; // turn \"David\" to \"David's\"\n\nvar toPossessive = function toPossessive(doc) {\n var str = doc.text('text').trim(); // exceptions\n\n if (exceptions.hasOwnProperty(str)) {\n doc.replaceWith(exceptions[str], true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } // flanders'\n\n\n if (/s$/.test(str)) {\n str += \"'\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } //normal form:\n\n\n str += \"'s\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n};\n\nvar toPossessive_1 = toPossessive;\n\n// .nouns() supports some noun-phrase-ish groupings\n// pull these apart, if necessary\nvar parse$1 = function parse(doc) {\n var res = {\n main: doc\n }; //support 'mayor of chicago' as one noun-phrase\n\n if (doc.has('#Noun (of|by|for) .')) {\n var m = doc.splitAfter('[#Noun+]', 0);\n res.main = m.eq(0);\n res.post = m.eq(1);\n }\n\n return res;\n};\n\nvar parse_1 = parse$1;\n\nvar methods$2 = {\n /** overload the original json with noun information */\n json: function json(options) {\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (doc) {\n var json = doc.json(options)[0];\n json.article = getArticle(doc);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** get all adjectives describing this noun*/\n adjectives: function adjectives() {\n var list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+');\n list = list.concat(this.lookBehind('#Adjective+ #Adverb?$'));\n list = list.match('#Adjective');\n return list.sort('index');\n },\n isPlural: function isPlural() {\n return this[\"if\"]('#Plural'); //assume tagger has run?\n },\n hasPlural: function hasPlural() {\n return this.filter(function (d) {\n return hasPlural_1(d);\n });\n },\n toPlural: function toPlural(agree) {\n var _this = this;\n\n var toPlural = this.world.transforms.toPlural;\n this.forEach(function (doc) {\n if (doc.has('#Plural') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Singular') && isPlural_1$1(str) === true) {\n return;\n }\n\n str = toPlural(str, _this.world);\n main.replace(str).tag('#Plural'); // 'an apple' -> 'apples'\n\n if (agree) {\n var an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective');\n\n if (an.found === true) {\n an.remove();\n }\n }\n });\n return this;\n },\n toSingular: function toSingular(agree) {\n var _this2 = this;\n\n var toSingular = this.world.transforms.toSingular;\n this.forEach(function (doc) {\n if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Plural') && isPlural_1$1(str) !== true) {\n return;\n }\n\n str = toSingular(str, _this2.world);\n main.replace(str).tag('#Singular'); // add an article\n\n if (agree) {\n // 'apples' -> 'an apple'\n var start = doc;\n var adj = doc.lookBefore('#Adjective');\n\n if (adj.found) {\n start = adj;\n }\n\n var article = getArticle(start);\n start.insertBefore(article);\n }\n });\n return this;\n },\n toPossessive: function toPossessive() {\n this.forEach(function (d) {\n toPossessive_1(d);\n });\n return this;\n }\n};\nvar methods_1 = methods$2;\n\nvar addMethod$5 = function addMethod(Doc) {\n /** */\n var Nouns = /*#__PURE__*/function (_Doc) {\n _inherits(Nouns, _Doc);\n\n var _super = _createSuper(Nouns);\n\n function Nouns() {\n _classCallCheck(this, Nouns);\n\n return _super.apply(this, arguments);\n }\n\n return Nouns;\n }(Doc); // add-in our methods\n\n\n Object.assign(Nouns.prototype, methods_1);\n\n Doc.prototype.nouns = function (n) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep); // don't combine over scare-quotes\n\n var quotes = m.quotations();\n\n if (quotes.found) {\n m = m.splitOn(quotes.eq(0));\n }\n\n m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons\n\n if (opts.keep_anaphora !== true) {\n m = m.not('#Pronoun');\n m = m.not('(there|these)');\n m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays\n // //allow possessives like \"spencer's\", but not generic ones like,\n\n m = m.not('(my|our|your|their|her|his)');\n }\n\n m = m.not('(of|for|by|the)$');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return new Nouns(m.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Nouns = addMethod$5;\n\nvar open = /\\(/;\nvar close = /\\)/;\n\nvar addMethod$4 = function addMethod(Doc) {\n /** anything between (these things) */\n var Parentheses = /*#__PURE__*/function (_Doc) {\n _inherits(Parentheses, _Doc);\n\n var _super = _createSuper(Parentheses);\n\n function Parentheses() {\n _classCallCheck(this, Parentheses);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Parentheses, [{\n key: \"unwrap\",\n value:\n /** remove the parentheses characters */\n function unwrap() {\n this.list.forEach(function (p) {\n var first = p.terms(0);\n first.pre = first.pre.replace(open, '');\n var last = p.lastTerm();\n last.post = last.post.replace(close, '');\n });\n return this;\n }\n }]);\n\n return Parentheses;\n }(Doc);\n\n Doc.prototype.parentheses = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening brackets\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (open.test(t.pre)) {\n //look for the closing bracket..\n for (var o = i; o < terms.length; o += 1) {\n if (close.test(terms[o].post)) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Parentheses(list, this, this.world);\n }\n\n return new Parentheses(list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Parentheses = addMethod$4;\n\nvar addMethod$3 = function addMethod(Doc) {\n /** */\n var Possessives = /*#__PURE__*/function (_Doc) {\n _inherits(Possessives, _Doc);\n\n var _super = _createSuper(Possessives);\n\n function Possessives(list, from, world) {\n var _this;\n\n _classCallCheck(this, Possessives);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Possessives, [{\n key: \"strip\",\n value: function strip() {\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms.forEach(function (t) {\n var str = t.text.replace(/'s$/, '');\n t.set(str || t.text);\n });\n });\n return this;\n }\n }]);\n\n return Possessives;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.possessives = function (n) {\n //find currently-contracted\n var found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Possessives(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Possessives = addMethod$3;\n\nvar pairs = {\n \"\\\"\": \"\\\"\",\n // 'StraightDoubleQuotes'\n \"\\uFF02\": \"\\uFF02\",\n // 'StraightDoubleQuotesWide'\n \"'\": \"'\",\n // 'StraightSingleQuotes'\n \"\\u201C\": \"\\u201D\",\n // 'CommaDoubleQuotes'\n \"\\u2018\": \"\\u2019\",\n // 'CommaSingleQuotes'\n \"\\u201F\": \"\\u201D\",\n // 'CurlyDoubleQuotesReversed'\n \"\\u201B\": \"\\u2019\",\n // 'CurlySingleQuotesReversed'\n \"\\u201E\": \"\\u201D\",\n // 'LowCurlyDoubleQuotes'\n \"\\u2E42\": \"\\u201D\",\n // 'LowCurlyDoubleQuotesReversed'\n \"\\u201A\": \"\\u2019\",\n // 'LowCurlySingleQuotes'\n \"\\xAB\": \"\\xBB\",\n // 'AngleDoubleQuotes'\n \"\\u2039\": \"\\u203A\",\n // 'AngleSingleQuotes'\n // Prime 'non quotation'\n \"\\u2035\": \"\\u2032\",\n // 'PrimeSingleQuotes'\n \"\\u2036\": \"\\u2033\",\n // 'PrimeDoubleQuotes'\n \"\\u2037\": \"\\u2034\",\n // 'PrimeTripleQuotes'\n // Prime 'quotation' variation\n \"\\u301D\": \"\\u301E\",\n // 'PrimeDoubleQuotes'\n \"`\": \"\\xB4\",\n // 'PrimeSingleQuotes'\n \"\\u301F\": \"\\u301E\" // 'LowPrimeDoubleQuotesReversed'\n\n};\nvar hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')');\n\nvar addMethod$2 = function addMethod(Doc) {\n /** \"these things\" */\n var Quotations = /*#__PURE__*/function (_Doc) {\n _inherits(Quotations, _Doc);\n\n var _super = _createSuper(Quotations);\n\n function Quotations() {\n _classCallCheck(this, Quotations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Quotations, [{\n key: \"unwrap\",\n value:\n /** remove the quote characters */\n function unwrap() {\n return this;\n }\n }]);\n\n return Quotations;\n }(Doc);\n\n Doc.prototype.quotations = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening quotes\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (hasOpen.test(t.pre)) {\n var _char = (t.pre.match(hasOpen) || [])[0];\n var want = pairs[_char]; // if (!want) {\n // console.warn('missing quote char ' + char)\n // }\n //look for the closing bracket..\n\n for (var o = i; o < terms.length; o += 1) {\n if (terms[o].post.indexOf(want) !== -1) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Quotations(list, this, this.world);\n }\n\n return new Quotations(list, this, this.world);\n }; // alias\n\n\n Doc.prototype.quotes = Doc.prototype.quotations;\n return Doc;\n};\n\nvar Quotations = addMethod$2;\n\n// walked => walk - turn a verb into it's root form\nvar toInfinitive = function toInfinitive(parsed, world) {\n var verb = parsed.verb; // console.log(parsed)\n // verb.debug()\n //1. if it's already infinitive\n\n var str = verb.text('reduced');\n\n if (verb.has('#Infinitive')) {\n return str;\n } // 2. world transform does the heavy-lifting\n\n\n var tense = null;\n\n if (verb.has('#PastTense')) {\n tense = 'PastTense';\n } else if (verb.has('#Gerund')) {\n tense = 'Gerund';\n } else if (verb.has('#PresentTense')) {\n tense = 'PresentTense';\n } else if (verb.has('#Participle')) {\n tense = 'Participle';\n } else if (verb.has('#Actor')) {\n tense = 'Actor';\n }\n\n return world.transforms.toInfinitive(str, world, tense);\n};\n\nvar toInfinitive_1 = toInfinitive;\n\n// spencer walks -> singular\n// we walk -> plural\n// the most-recent noun-phrase, before this verb.\nvar findNoun = function findNoun(vb) {\n var noun = vb.lookBehind('#Noun+').last();\n return noun;\n}; //sometimes you can tell if a verb is plural/singular, just by the verb\n// i am / we were\n// othertimes you need its subject 'we walk' vs 'i walk'\n\n\nvar isPlural = function isPlural(parsed) {\n var vb = parsed.verb;\n\n if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) {\n return true;\n }\n\n if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) {\n return false;\n } //consider its prior noun\n\n\n var noun = findNoun(vb);\n\n if (noun.has('(we|they|you)')) {\n return true;\n }\n\n if (noun.has('#Plural')) {\n return true;\n }\n\n if (noun.has('#Singular')) {\n return false;\n }\n\n return null;\n};\n\nvar isPlural_1 = isPlural;\n\n// #Copula : is -> 'is not'\n// #PastTense : walked -> did not walk\n// #PresentTense : walks -> does not walk\n// #Gerund : walking: -> not walking\n// #Infinitive : walk -> do not walk\n\nvar toNegative = function toNegative(parsed, world) {\n var vb = parsed.verb; // if it's already negative...\n\n if (parsed.negative.found) {\n return;\n } // would walk -> would not walk\n\n\n if (parsed.auxiliary.found) {\n parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have'\n\n if (parsed.auxiliary.has('#Modal have not')) {\n parsed.auxiliary.replace('have not', 'not have');\n }\n\n return;\n } // is walking -> is not walking\n\n\n if (vb.has('(#Copula|will|has|had|do)')) {\n vb.append('not');\n return;\n } // walked -> did not walk\n\n\n if (vb.has('#PastTense')) {\n var inf = toInfinitive_1(parsed, world);\n vb.replaceWith(inf, true);\n vb.prepend('did not');\n return;\n } // walks -> does not walk\n\n\n if (vb.has('#PresentTense')) {\n var _inf = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf, true);\n\n if (isPlural_1(parsed)) {\n vb.prepend('do not');\n } else {\n vb.prepend('does not');\n }\n\n return;\n } //walking -> not walking\n\n\n if (vb.has('#Gerund')) {\n var _inf2 = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf2, true);\n vb.prepend('not');\n return;\n } //fallback 1: walk -> does not walk\n\n\n if (isPlural_1(parsed)) {\n vb.prepend('does not');\n return;\n } //fallback 2: walk -> do not walk\n\n\n vb.prepend('do not');\n return;\n};\n\nvar toNegative_1 = toNegative;\n\n// who/what is doing this verb?\n// get the prior verb most-likely doing this action\n// (it can not-exist - 'close the door')\nvar getSubject = function getSubject(vb) {\n var behind = vb.lookBehind();\n var lastNoun = behind.nouns(null, {\n keep_anaphora: true\n }).last(); // support 'that' and 'this'\n\n if (!lastNoun.found) {\n lastNoun = behind.match('(that|this|each)').last();\n lastNoun = lastNoun.tag('#Noun').nouns();\n }\n\n return lastNoun;\n};\n\nvar getSubject_1 = getSubject;\n\nvar parseVerb = function parseVerb(vb) {\n var parsed = {\n adverb: vb.match('#Adverb+'),\n // 'really'\n negative: vb.match('#Negative'),\n // 'not'\n auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'),\n // 'will' of 'will go'\n particle: vb.match('#Particle'),\n // 'up' of 'pull up'\n verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'),\n original: vb,\n subject: getSubject_1(vb)\n }; // fallback, if no verb found\n\n if (!parsed.verb.found) {\n // blank-everything\n Object.keys(parsed).forEach(function (k) {\n parsed[k] = parsed[k].not('.');\n }); // it's all the verb\n\n parsed.verb = vb;\n return parsed;\n } //\n\n\n if (parsed.adverb && parsed.adverb.found) {\n var match = parsed.adverb.text('reduced') + '$';\n\n if (vb.has(match)) {\n parsed.adverbAfter = true;\n }\n }\n\n return parsed;\n};\n\nvar parse = parseVerb;\n\n/** too many special cases for is/was/will be*/\n\nvar toBe = function toBe(parsed) {\n var isI = false;\n var plural = isPlural_1(parsed);\n var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular\n // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) {\n // isI = true;\n // }\n // 'i look', not 'i looks'\n\n if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n isI = true;\n }\n\n var obj = {\n PastTense: 'was',\n PresentTense: 'is',\n FutureTense: 'will be',\n Infinitive: 'is',\n Gerund: 'being',\n Actor: '',\n PerfectTense: 'been',\n Pluperfect: 'been'\n }; //\"i is\" -> \"i am\"\n\n if (isI === true) {\n obj.PresentTense = 'am';\n obj.Infinitive = 'am';\n }\n\n if (plural) {\n obj.PastTense = 'were';\n obj.PresentTense = 'are';\n obj.Infinitive = 'are';\n }\n\n if (isNegative) {\n obj.PastTense += ' not';\n obj.PresentTense += ' not';\n obj.FutureTense = 'will not be';\n obj.Infinitive += ' not';\n obj.PerfectTense = 'not ' + obj.PerfectTense;\n obj.Pluperfect = 'not ' + obj.Pluperfect;\n obj.Gerund = 'not ' + obj.Gerund;\n }\n\n return obj;\n};\n\nvar toBe_1 = toBe;\n\n// 'may/could/should' -> 'may/could/should have'\nvar doModal = function doModal(parsed) {\n var str = parsed.verb.text();\n var res = {\n PastTense: str + ' have',\n PresentTense: str,\n FutureTense: str,\n Infinitive: str // Gerund: ,\n // Actor: '',\n // PerfectTense: '',\n // Pluperfect: '',\n\n };\n return res;\n};\n\nvar doModal_1 = doModal;\n\nvar conjugate = function conjugate(parsed, world) {\n var verb = parsed.verb; //special handling of 'is', 'will be', etc.\n\n if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) {\n return toBe_1(parsed);\n } // special handling of 'are walking'\n\n\n if (parsed.auxiliary.has('are') && verb.has('#Gerund')) {\n var og = parsed.original.clone();\n var past = og.clone().replace('are', 'were');\n var fut = og.clone().replace('are', 'will be');\n\n var _infinitive = toInfinitive_1(parsed, world);\n\n var res = {\n PastTense: past.text(),\n PresentTense: og.text(),\n FutureTense: fut.text(),\n Infinitive: _infinitive\n };\n return res;\n } // special handling of 'he could.'\n\n\n if (verb.has('#Modal')) {\n return doModal_1(parsed);\n } // dont conjugate imperative form - 'close the door'\n // if (parsed.auxiliary.has('do')) {\n // let str = parsed.original.text()\n // let res = {\n // PastTense: str,\n // PresentTense: str,\n // FutureTense: str,\n // Infinitive: str,\n // }\n // return res\n // }\n\n\n var hasHyphen = parsed.verb.termList(0).hasHyphen();\n var infinitive = toInfinitive_1(parsed, world);\n\n if (!infinitive) {\n return {};\n }\n\n var forms = world.transforms.conjugate(infinitive, world);\n forms.Infinitive = infinitive; // add particle to phrasal verbs ('fall over')\n\n if (parsed.particle.found) {\n var particle = parsed.particle.text();\n var space = hasHyphen === true ? '-' : ' ';\n Object.keys(forms).forEach(function (k) {\n return forms[k] += space + particle;\n });\n } //put the adverb at the end?\n // if (parsed.adverb.found) {\n // let adverb = parsed.adverb.text()\n // let space = hasHyphen === true ? '-' : ' '\n // if (parsed.adverbAfter === true) {\n // Object.keys(forms).forEach(k => (forms[k] += space + adverb))\n // } else {\n // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k]))\n // }\n // }\n //apply negative\n\n\n var isNegative = parsed.negative.found;\n\n if (isNegative) {\n forms.PastTense = 'did not ' + forms.Infinitive;\n forms.PresentTense = 'does not ' + forms.Infinitive;\n forms.Gerund = 'not ' + forms.Gerund;\n } //future Tense is pretty straightforward\n\n\n if (!forms.FutureTense) {\n if (isNegative) {\n forms.FutureTense = 'will not ' + forms.Infinitive;\n } else {\n forms.FutureTense = 'will ' + forms.Infinitive;\n }\n }\n\n if (isNegative) {\n forms.Infinitive = 'not ' + forms.Infinitive;\n }\n\n return forms;\n};\n\nvar conjugate_1 = conjugate;\n\n// if something is 'modal-ish' we are forced to use past-participle\n// ('i could drove' is wrong)\n\nvar useParticiple$1 = function useParticiple(parsed) {\n if (parsed.auxiliary.has('(could|should|would|may|can|must)')) {\n return true;\n }\n\n if (parsed.auxiliary.has('am .+? being')) {\n return true;\n }\n\n if (parsed.auxiliary.has('had .+? been')) {\n return true;\n }\n\n return false;\n}; // conjugate 'drive' ➔ 'have driven'\n\n\nvar toParticiple = function toParticiple(parsed, world) {\n //is it already a participle?\n if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) {\n return;\n } // try to swap the main verb to its participle form\n\n\n var obj = conjugate_1(parsed, world);\n var str = obj.Participle || obj.PastTense;\n\n if (str) {\n parsed.verb.replaceWith(str, false);\n } // 'am being driven' ➔ 'have been driven'\n\n\n if (parsed.auxiliary.has('am .+? being')) {\n parsed.auxiliary.remove('am');\n parsed.auxiliary.replace('being', 'have been');\n } // add a 'have'\n\n\n if (!parsed.auxiliary.has('have')) {\n parsed.auxiliary.append('have');\n } // tag it as a participle\n\n\n parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim'\n\n parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been'\n\n parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not'\n\n parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right\n\n parsed.auxiliary.tag('Auxiliary');\n};\n\nvar participle = {\n useParticiple: useParticiple$1,\n toParticiple: toParticiple\n};\n\nvar _toParticiple = participle.toParticiple,\n useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs\n\nvar makeNeutral = function makeNeutral(parsed) {\n //remove tense-info from auxiliaries\n parsed.auxiliary.remove('(will|are|am|being)');\n parsed.auxiliary.remove('(did|does)');\n parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle\n\n parsed.particle.remove();\n parsed.negative.remove();\n return parsed;\n};\n\nvar methods$1 = {\n /** overload the original json with verb information */\n json: function json(options) {\n var _this = this;\n\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (p) {\n var json = p.json(options)[0];\n var parsed = parse(p);\n json.parts = {};\n Object.keys(parsed).forEach(function (k) {\n if (parsed[k] && parsed[k].isA === 'Doc') {\n json.parts[k] = parsed[k].text('normal');\n } else {\n json.parts[k] = parsed[k];\n }\n });\n json.isNegative = p.has('#Negative');\n json.conjugations = conjugate_1(parsed, _this.world);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** grab the adverbs describing these verbs */\n adverbs: function adverbs() {\n var list = []; // look at internal adverbs\n\n this.forEach(function (vb) {\n var advb = parse(vb).adverb;\n\n if (advb.found) {\n list = list.concat(advb.list);\n }\n }); // look for leading adverbs\n\n var m = this.lookBehind('#Adverb+$');\n\n if (m.found) {\n list = m.list.concat(list);\n } // look for trailing adverbs\n\n\n m = this.lookAhead('^#Adverb+');\n\n if (m.found) {\n list = list.concat(m.list);\n }\n\n return this.buildFrom(list);\n },\n /// Verb Inflection\n\n /**return verbs like 'we walk' and not 'spencer walks' */\n isPlural: function isPlural() {\n var _this2 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this2.world) === true) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n\n /** return verbs like 'spencer walks' and not 'we walk' */\n isSingular: function isSingular() {\n var _this3 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this3.world) === false) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n /// Conjugation\n\n /** return all forms of this verb */\n conjugate: function conjugate() {\n var _this4 = this;\n\n var result = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var forms = conjugate_1(parsed, _this4.world);\n\n result.push(forms);\n });\n return result;\n },\n\n /** walk ➔ walked*/\n toPastTense: function toPastTense() {\n var _this5 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam'\n\n if (useParticiple(parsed)) {\n _toParticiple(parsed, _this5.world);\n\n return;\n }\n\n if (vb.has('#Imperative')) {\n return;\n } // don't conjugate 'to be'\n\n\n if (vb.has('be') && vb.lookBehind('to$').found) {\n return;\n } // handle 'is raining' -> 'was raining'\n\n\n if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) {\n vb.replace('is', 'was');\n return;\n }\n\n var str = conjugate_1(parsed, _this5.world).PastTense;\n\n if (str) {\n parsed = makeNeutral(parsed);\n parsed.verb.replaceWith(str, false); // vb.tag('PastTense')\n }\n });\n return this;\n },\n\n /** walk ➔ walks */\n toPresentTense: function toPresentTense() {\n var _this6 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var obj = conjugate_1(parsed, _this6.world);\n\n var str = obj.PresentTense; // 'i look', not 'i looks'\n\n if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n str = obj.Infinitive;\n }\n\n if (str) {\n //awkward support for present-participle form\n // -- should we support 'have been swimming' ➔ 'am swimming'\n if (parsed.auxiliary.has('(have|had) been')) {\n parsed.auxiliary.replace('(have|had) been', 'am being');\n\n if (obj.Particle) {\n str = obj.Particle || obj.PastTense;\n }\n\n return;\n }\n\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('PresentTense');\n parsed = makeNeutral(parsed); // avoid 'he would walks'\n\n parsed.auxiliary.remove('#Modal');\n }\n });\n return this;\n },\n\n /** walk ➔ will walk*/\n toFutureTense: function toFutureTense() {\n var _this7 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // 'i should drive' is already future-enough\n\n if (useParticiple(parsed)) {\n return;\n }\n\n var str = conjugate_1(parsed, _this7.world).FutureTense;\n\n if (str) {\n parsed = makeNeutral(parsed); // avoid 'he would will go'\n\n parsed.auxiliary.remove('#Modal');\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('FutureTense');\n }\n });\n return this;\n },\n\n /** walks ➔ walk */\n toInfinitive: function toInfinitive() {\n var _this8 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this8.world).Infinitive;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Infinitive');\n }\n });\n return this;\n },\n\n /** walk ➔ walking */\n toGerund: function toGerund() {\n var _this9 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this9.world).Gerund;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Gerund');\n }\n });\n return this;\n },\n\n /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */\n toParticiple: function toParticiple() {\n var _this10 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n var noAux = !parsed.auxiliary.found;\n\n _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found\n\n\n if (noAux) {\n parsed.verb.prepend(parsed.auxiliary.text());\n parsed.auxiliary.remove();\n }\n });\n return this;\n },\n /// Negation\n\n /** return only verbs with 'not'*/\n isNegative: function isNegative() {\n return this[\"if\"]('#Negative');\n },\n\n /** return only verbs without 'not'*/\n isPositive: function isPositive() {\n return this.ifNo('#Negative');\n },\n\n /** return only commands - verbs in imperative mood */\n isImperative: function isImperative() {\n return this[\"if\"]('#Imperative');\n },\n\n /** add a 'not' to these verbs */\n toNegative: function toNegative() {\n var _this11 = this;\n\n this.list.forEach(function (p) {\n var doc = _this11.buildFrom([p]);\n\n var parsed = parse(doc);\n\n toNegative_1(parsed, doc.world);\n });\n return this;\n },\n\n /** remove 'not' from these verbs */\n toPositive: function toPositive() {\n var m = this.match('do not #Verb');\n\n if (m.found) {\n m.remove('do not');\n }\n\n return this.remove('#Negative');\n },\n\n /** who, or what is doing this action? */\n subject: function subject() {\n var list = [];\n this.forEach(function (p) {\n var found = getSubject_1(p);\n\n if (found.list[0]) {\n list.push(found.list[0]);\n }\n });\n return this.buildFrom(list);\n }\n};\n\nvar addMethod$1 = function addMethod(Doc) {\n /** */\n var Verbs = /*#__PURE__*/function (_Doc) {\n _inherits(Verbs, _Doc);\n\n var _super = _createSuper(Verbs);\n\n function Verbs() {\n _classCallCheck(this, Verbs);\n\n return _super.apply(this, arguments);\n }\n\n return Verbs;\n }(Doc); // add-in our methods\n\n\n Object.assign(Verbs.prototype, methods$1); // aliases\n\n Verbs.prototype.negate = Verbs.prototype.toNegative;\n\n Doc.prototype.verbs = function (n) {\n var match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs\n\n match = match.not('^#Adverb+');\n match = match.not('#Adverb+$'); // handle commas:\n // don't split 'really, really'\n\n var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas\n\n var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at...\n\n var gerund = m.match('#PastTense #Gerund');\n\n if (!gerund.has('(been|am|#Auxiliary) #Gerund')) {\n m = m.splitBefore(gerund.match('#Gerund'));\n } // combine them back together\n\n\n m = m.concat(keep);\n m.sort('index'); //handle slashes?\n //ensure there's actually a verb\n\n m = m[\"if\"]('#Verb'); // the reason he will is ...\n\n if (m.has('(is|was)$')) {\n m = m.splitBefore('(is|was)$');\n } //ensure it's not two verbs\n\n\n if (m.has('#PresentTense #Adverb #PresentTense')) {\n m = m.splitBefore('#Adverb #PresentTense');\n } //grab (n)th result\n\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n var vb = new Verbs(m.list, this, this.world);\n return vb;\n };\n\n return Doc;\n};\n\nvar Verbs = addMethod$1;\n\nvar addMethod = function addMethod(Doc) {\n /** */\n var People = /*#__PURE__*/function (_Doc) {\n _inherits(People, _Doc);\n\n var _super = _createSuper(People);\n\n function People() {\n _classCallCheck(this, People);\n\n return _super.apply(this, arguments);\n }\n\n return People;\n }(Doc);\n\n Doc.prototype.people = function (n) {\n var match = this.splitAfter('@hasComma');\n match = match.match('#Person+'); //grab (n)th result\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new People(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar People = addMethod;\n\nvar subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People];\n\nvar extend = function extend(Doc) {\n // add basic methods\n Object.keys(_simple).forEach(function (k) {\n return Doc.prototype[k] = _simple[k];\n }); // add subclassed methods\n\n subclass.forEach(function (addFn) {\n return addFn(Doc);\n });\n return Doc;\n};\n\nvar Subset = extend;\n\nvar methods = {\n misc: methods$4,\n selections: _simple\n};\n/** a parsed text object */\n\nvar Doc = /*#__PURE__*/function () {\n function Doc(list, from, world) {\n var _this = this;\n\n _classCallCheck(this, Doc);\n\n this.list = list; // this.reasons = []\n //quiet these properties in console.logs\n\n Object.defineProperty(this, 'from', {\n enumerable: false,\n value: from,\n writable: true\n }); //borrow some missing data from parent\n\n if (world === undefined && from !== undefined) {\n world = from.world;\n } //'world' getter\n\n\n Object.defineProperty(this, 'world', {\n enumerable: false,\n value: world,\n writable: true\n }); //fast-scans for our data\n\n Object.defineProperty(this, '_cache', {\n enumerable: false,\n writable: true,\n value: {}\n }); //'found' getter\n\n Object.defineProperty(this, 'found', {\n get: function get() {\n return _this.list.length > 0;\n }\n }); //'length' getter\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return _this.list.length;\n }\n }); // this is way easier than .constructor.name...\n\n Object.defineProperty(this, 'isA', {\n get: function get() {\n return 'Doc';\n }\n });\n }\n /** run part-of-speech tagger on all results*/\n\n\n _createClass(Doc, [{\n key: \"tagger\",\n value: function tagger() {\n return _02Tagger(this);\n }\n /** pool is stored on phrase objects */\n\n }, {\n key: \"pool\",\n value: function pool() {\n if (this.list.length > 0) {\n return this.list[0].pool;\n }\n\n return this.all().list[0].pool;\n }\n }]);\n\n return Doc;\n}();\n/** create a new Document object */\n\n\nDoc.prototype.buildFrom = function (list) {\n list = list.map(function (p) {\n return p.clone(true);\n }); // new this.constructor()\n\n var doc = new Doc(list, this, this.world);\n return doc;\n};\n/** create a new Document from plaintext. */\n\n\nDoc.prototype.fromText = function (str) {\n var list = _01Tokenizer(str, this.world, this.pool());\n return this.buildFrom(list);\n};\n\nObject.assign(Doc.prototype, methods.misc);\nObject.assign(Doc.prototype, methods.selections); //add sub-classes\n\nSubset(Doc); //aliases\n\nvar aliases = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if'\n};\nObject.keys(aliases).forEach(function (k) {\n return Doc.prototype[k] = Doc.prototype[aliases[k]];\n});\nvar Doc_1 = Doc;\n\nvar smallTagger = function smallTagger(doc) {\n var terms = doc.termList();\n _01Lexicon(terms, doc.world); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar tiny = smallTagger;\n\nfunction instance(worldInstance) {\n //blast-out our word-lists, just once\n var world = worldInstance;\n /** parse and tag text into a compromise object */\n\n var nlp = function nlp() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n\n if (lexicon) {\n world.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, world);\n var doc = new Doc_1(list, null, world);\n doc.tagger();\n return doc;\n };\n /** parse text into a compromise object, without running POS-tagging */\n\n\n nlp.tokenize = function () {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n var w = world;\n\n if (lexicon) {\n w = w.clone();\n w.words = {};\n w.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, w);\n var doc = new Doc_1(list, null, w);\n\n if (lexicon || doc.world.taggers.length > 0) {\n tiny(doc);\n }\n\n return doc;\n };\n /** mix in a compromise-plugin */\n\n\n nlp.extend = function (fn) {\n fn(Doc_1, world, this, Phrase_1, Term_1, Pool_1);\n return this;\n };\n /** create a compromise Doc object from .json() results */\n\n\n nlp.fromJSON = function (json) {\n var list = fromJSON_1(json, world);\n return new Doc_1(list, null, world);\n };\n /** make a deep-copy of the library state */\n\n\n nlp.clone = function () {\n return instance(world.clone());\n };\n /** log our decision-making for debugging */\n\n\n nlp.verbose = function () {\n var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n world.verbose(bool);\n return this;\n };\n /** grab currently-used World object */\n\n\n nlp.world = function () {\n return world;\n };\n /** pre-parse any match statements */\n\n\n nlp.parseMatch = function (str, opts) {\n return matchSyntax(str, opts);\n };\n /** current version of the library */\n\n\n nlp.version = _version; // aliases\n\n nlp[\"import\"] = nlp.load;\n nlp.plugin = nlp.extend;\n return nlp;\n}\n\nvar src = instance(new World_1());\n\nexport default src;\n","const fromTemplate = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl) {\n let json = tmpl.json() || {}\n return json.description || ''\n }\n return null\n}\nmodule.exports = fromTemplate\n","const preProcess = function (doc) {\n doc.parentheses().remove()\n return doc\n}\nmodule.exports = preProcess\n","const cleanUp = function (s) {\n // 'an actor and was a politician'\n s.remove('and #Copula .*')\n return s\n}\n\n// founded in 1952 as the flagship ..\nconst findPivot = function (s) {\n let m = s.matchOne('#Copula+ (a|an|the|any|one) of?')\n if (!m.found) {\n m = s.matchOne('#Copula+')\n }\n if (!m.found) {\n m = s.matchOne('refers to (a|an|the|any)? of?')\n }\n if (!m.found) {\n m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?')\n }\n if (!m.found) {\n return null\n }\n let f = s.splitOn(m)\n let verb = f.eq(1)\n let article = verb.match(`(a|an|the|any)? of?`)\n verb.remove(`(a|an|the|any)? of?`)\n return {\n before: f.eq(0),\n verb: f.eq(1),\n article: article,\n after: cleanUp(f.eq(2))\n }\n}\nmodule.exports = findPivot\n","const byClause = function (s) {\n // 'an actor and also a politician'\n s.remove('and (also|eventually) (a|an|the|#Possessive) .*')\n // 'an actor who was a politician'\n s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*')\n // past-tense verbs 'located in spain'\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n //\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n\n return s\n}\nmodule.exports = byClause\n","const safeCuts = function (s) {\n // 'in hamilton, Canada'\n if (s.has('(#Place && @hasComma) #Country+$')) {\n s.remove('#Country+$')\n }\n // 'which spans the '\n if (s.has('#Noun (that|which|who) #PresentTense the .*')) {\n s.remove(' that #PresentTense the .*')\n }\n // 'owned by the ...'\n if (s.has('#Noun #PastTense by the .*')) {\n s.remove('#PastTense by the .*')\n }\n // 'an american actress'\n s.remove('#Demonym')\n // professional hockey player\n s.remove('(professional|former)')\n\n //event-templates\n s.remove('and? held annually .*')\n s.remove('taking place each .*')\n\n // ordinal templates - the fifth fastest ..\n s.remove('^one of (the|many|several|#Value)+')\n s.remove('^(a|an|the)? #Ordinal? #Superlative')\n s.remove('^(a|an|the)? #Ordinal? most #Adjective')\n\n //\n s.remove('born in .*')\n s.remove('born #Date+ in? #Place+?')\n s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*')\n s.remove('(which|who|that) (is|was) .*')\n s.remove('^the name of')\n\n return s\n}\nmodule.exports = safeCuts\n","const isIndependent = function (c) {\n if (c.has('^(and|the|which|who|whom|also|a|an|the)')) {\n return true\n }\n // 'part of abu dabi'\n if (c.has('^(west|north|south|east|part) of')) {\n return true\n }\n // 'written by .'\n if (c.has('^#PastTense by .')) {\n return true\n }\n // 'sometimes called ..'\n if (c.has('^(occasionally|sometimes|frequently)')) {\n return true\n }\n // 'such as ..'\n if (c.has('^such as')) {\n return true\n }\n // 'featuring gold feathers ..'\n if (c.has('^(including|featuring|depicting)')) {\n return true\n }\n return false\n}\n\nconst hardCuts = function (s) {\n // .. in san fransisco\n if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) {\n s.remove('(located|based) in #Place+$')\n } else if (\n s.has(\n '(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'\n )\n ) {\n s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')\n } else if (s.has('(#Noun|#Value) in #Place+$')) {\n s.remove('in #Place+$')\n } else {\n s.remove('and? part of #Place+$')\n s.remove('and? near #Place+$')\n }\n\n // by clause\n let clauses = s.clauses()\n if (clauses.length > 1) {\n let first = clauses.eq(0)\n let second = clauses.eq(1)\n //can we just choose the first clause?\n if (isIndependent(second)) {\n s = clauses.eq(0)\n } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) {\n // 'produced by...'\n s = clauses.eq(0)\n } else if (second.has('^(#Gerund)') && first.has('#Noun$')) {\n // 'featuring a ...'\n s = clauses.eq(0)\n } else {\n // can we remove the last clause, atleast?\n let last = clauses.last()\n if (isIndependent(last)) {\n clauses.list.pop()\n s = clauses.join()\n }\n }\n }\n\n //.. writen by sandro leonardo\n if (s.has('(#Noun|and) #PastTense by')) {\n s.remove('#PastTense by .*')\n }\n //\n s.remove('and? designed to .*')\n s.remove('and? owned by .*')\n s.remove('and? consisting of .*')\n // , which collapsed\n if (s.has('@hasComma (which|who) #Verb')) {\n s.remove('(which|who) .*')\n }\n // , then\n // if (s.has('@hasComma (then)')) {\n // s.remove('(which|who) .*')\n // }\n return s\n}\nmodule.exports = hardCuts\n","const lastTry = function (s) {\n s.remove('(small|large|minor|major)')\n s.remove('(extinct|retired|annual|biweekly|monthly|daily)')\n s.remove('(female|male)')\n s.remove('(private|independent|official|unofficial|officially)')\n s.remove('(southern|northern|eastern|western|northeastern|northwestern)')\n\n //\n s.remove('^(family|clade|genus|species|order) of')\n return s\n}\nmodule.exports = lastTry\n","//check text is appropriate length\nconst isGood = function (doc, options) {\n if (doc && typeof doc.text === 'function') {\n let text = doc.text()\n if (text && text.length > options.min && text.length < options.max) {\n return true\n }\n }\n return false\n}\nmodule.exports = isGood\n","const nlp = require('compromise')\nconst preProcess = require('./00-preProcess')\nconst findPivot = require('./01-pivot')\nconst byClause = require('./02-byClause')\nconst safeCut = require('./03-safeCuts')\nconst hardCut = require('./04-hardCuts')\nconst lastTry = require('./05-lastTry')\nconst isGood = require('./_isGood')\n\nconst post = function (s) {\n s.remove('^(and|or|but)')\n s.remove('(and|or|but)$')\n s.post('') // remove trailing comma\n return s.text()\n}\n\n// let count = 0\nconst doSentence = function (doc, options) {\n let sentence = doc.sentence(0)\n if (!sentence) {\n return ''\n }\n let txt = sentence.text()\n let s = nlp(txt)\n preProcess(s)\n\n let pivot = findPivot(s)\n // if we can't pivot it properly, don't bother\n if (!pivot || !pivot.verb || !pivot.verb.found) {\n return ''\n }\n let after = pivot.after\n if (options.article && pivot.article && pivot.article.found) {\n after.prepend(pivot.article.text())\n }\n // maybe it's good already\n if (isGood(after, options)) {\n return post(after)\n }\n // parse major chunks\n after = byClause(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // perform some modifications\n after = safeCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // really give it a go\n after = hardCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // atleast we tried\n after = lastTry(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // console.log(after.text())\n // count += 1\n // console.log(count)\n // console.log(after.match('#PastTense').text())\n // console.log(after.text())\n // console.log('\\n')\n return ''\n}\nmodule.exports = doSentence\n","const bad = [\n 'living',\n 'births',\n 'former',\n 'deceased',\n 'missing',\n 'with',\n 'descent',\n 'award',\n 'winners',\n 'nominees',\n 'alumni',\n 'other'\n].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst good = ['male', 'female'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst like = ['male', 'female', 'century'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst dislike = ['people', 'place', 'from', 'in', 'people from'].map(\n (str) => new RegExp(`\\\\b${str}\\\\b`),\n 'i'\n)\n\nmodule.exports = {\n good: good,\n bad: bad,\n like: like,\n dislike: dislike\n}\n","const { like, dislike, good, bad } = require('./regs')\nconst hasYear = /[0-9]{4}/\nconst isPlural = /s$/\n\nconst fromCategory = function (doc) {\n let cats = doc.categories()\n\n // try to focus on the best ones, first\n let tmp = cats.filter((cat) => {\n return good.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // remove bad ones\n cats = cats.filter((cat) => {\n if (bad.find((reg) => reg.test(cat))) {\n return false\n }\n if (hasYear.test(cat)) {\n return false\n }\n return true\n })\n\n if (cats.length === 0) {\n return ''\n }\n // look at sorting by preferences\n tmp = cats.filter((cat) => {\n return like.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n // remove disliked ones\n tmp = cats.filter((cat) => {\n // not a plural ending\n if (isPlural.test(cat) === false) {\n return false\n }\n // just one word\n if (cat.slice(' ').length === 1) {\n return false\n }\n return dislike.find((reg) => reg.test(cat)) === undefined\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // sort them by most words\n cats = cats.sort((a, b) => {\n let aWords = a.split(' ').length\n let bWords = b.split(' ').length\n if (aWords > bWords) {\n return -1\n } else if (aWords < bWords) {\n return 1\n }\n return 0\n })\n // console.log(cats)\n\n return cats[0]\n}\nmodule.exports = fromCategory\n","const nlp = require('compromise')\nconst titleCase = (str) => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\nconst useAn = function (str) {\n const a_regexs = [\n /^onc?e/i, //'wu' sound of 'o'\n /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n /^eul/i\n ]\n for (let i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return false\n }\n }\n //basic vowel-startings\n if (/^[aeiou]/i.test(str)) {\n return true\n }\n return false\n}\n\n// 'American songwriters' to 'an American songwriter'\nconst changeCat = function (cat, options) {\n let c = nlp(cat)\n c.nouns().toSingular()\n // add article to the front\n if (options.article) {\n let article = 'A'\n // let noun = c.nouns(0)\n if (useAn(cat) === true) {\n // console.log(c.nouns(0))\n // article = c.nouns(0).json({ terms: false })[0].article || article\n article = 'An'\n }\n let first = c.terms(0)\n if (first.has('#ProperNoun') === false) {\n first.toLowerCase()\n }\n c.prepend(article)\n }\n // remove any parentheses\n c.parentheses().remove()\n return c.text()\n}\nmodule.exports = changeCat\n","const chooseCat = require('./01-choose')\nconst change = require('./02-change')\n\nconst byCategory = function (doc, options) {\n let cat = chooseCat(doc, options)\n if (!cat) {\n return ''\n }\n return change(cat, options)\n}\nmodule.exports = byCategory\n","const nlp = require('compromise')\nconst fromTemplate = require('./template')\nconst fromSentence = require('./sentence')\nconst fromCategory = require('./category')\n\nconst defaults = {\n article: true,\n template: true,\n sentence: true,\n category: true,\n max: 80,\n min: 3\n}\n\nconst seemsGood = function (txt, options) {\n return txt && txt.length > 5 && txt.length < options.max\n}\n\nconst plugin = function (models) {\n // add a new method to main class\n models.Doc.prototype.summary = function (options) {\n let doc = this\n options = options || {}\n options = Object.assign({}, defaults, options)\n\n // generate from {{short description}} template\n let txt = ''\n if (options.template) {\n txt = fromTemplate(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n // generate from first-sentence\n if (options.sentence) {\n txt = fromSentence(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n if (options.category) {\n return fromCategory(doc, options)\n }\n return ''\n }\n\n // should we use 'it', 'he', 'they'...\n models.Doc.prototype.article = function () {\n let txt = ''\n // prefer the 2nd sentence\n if (this.sentence(1)) {\n txt = this.sentence(1).text()\n } else {\n txt = this.sentence(0).text()\n }\n let doc = nlp(txt)\n let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase()\n return found || 'it'\n }\n\n // was event in past? is person dead?\n models.Doc.prototype.tense = function () {\n let txt = this.sentence().text()\n let doc = nlp(txt)\n let copula = doc.match('#Copula+').first()\n if (copula.has('was')) {\n return 'Past'\n }\n let vb = doc.verbs(0)\n if (vb.has('#PastTense')) {\n return 'Past'\n }\n if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) {\n return 'Future'\n }\n return 'Present'\n }\n}\nmodule.exports = plugin\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","value","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","e","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","_createSuperInternal","Super","result","NewTarget","arguments","apply","chars","split","makeId","str","text","Math","floor","random","_id","compact","a","b","c","d","f","g","h","I","j","k","l","m","n","q","r","s","t","u","v","w","x","y","z","unicode","keys","forEach","killUnicode","join","unicode_1","periodAcronym","oneLetterAcronym$1","noPeriodAcronym","lowerCaseAcronym","isAcronym$2","isAcronym","test","isAcronym_1$1","hasSlash$1","clean","toLowerCase","trim","original","replace","clean_1","reduced","reduce","startings","endings","hasSlash","hasApostrophe","hasAcronym","minusNumber","shortYear","parseTerm","pre","post","found","after","parsed","word","alias","parse$2","createCommonjsModule","fn","module","exports","_01Case","titleCase","upperCase","toUpperCase","toTitleCase","isUpperCase","isTitleCase","_02Punctuation$1","startQuote","endQuote","hasPost","punct","indexOf","hasPre","hasQuote","hasQuotation","hasComma","hasPeriod","hasExclamation","hasQuestionMark","hasEllipses","hasSemicolon","hasHyphen","hyphen","hasDash","hasContraction","implicit","addPunctuation","editDistance","strA","strB","aLength","bLength","limit","abs","matrix","_i","a_index","b_index","cost","min","_i2","shouldUpdate","fuzzyMatch","minLength","undefined","steps","max","relative","similarity","_fuzzy","wrapMatch","doesMatch","reg","index","id","anything","start","end","hasOwnProperty","soft","root","fuzzy","score","tag","tags","method","regex","fastOr","choices","operator","every","some","negative","_doesMatch","boring","doesMatch_1","isAcronym_1","isImplicit","isKnown","setRoot","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","_03Misc","hasSpace$1","textOut","options","showPre","showPost","before","normal","titlecase","ProperNoun","Acronym","lowercase","acronyms","whitespace","last","punctuation","abbreviations","Abbreviation","_04Text","boringTags","Auxiliary","Possessive","rankTags","term","tagSet","sort","lineage","isA","_bestTag","jsonDefault","offset","bestTag","json$1","json","assign","_05Json$1","methods$8","isClientSide","window","document","padEnd","width","toString","logTag","reason","console","log","logUntag","isArray$3","isArray","arr","titleCase$4","charAt","substr","fns$1","addTag","tagset","isVerbose","down","unTag","notA","addTags","add","lowerCase","titleCase$3","unTag$1","untagAll","unTag_1$1","canBe$2","canBe","enemies","canBe_1$1","tag_1","tagSafe$1","tagSafe","unTag_1","canBe_1","tag$1","Term","String","prev","next","set","clone","Term_1","terms","cache","pool","get","error","push","clone$1","isShallow","_this","buildFrom","newTerms","map","lastTerm","hasId","wantId","_terms","lastId","concat","wordCount","filter","fullSentence","len","_01Utils$1","trimEnd","text$1","isFirst","isLast","isFull","txt","_02Text","_03Change","endOfSentence","combinePost","match","addWhitespace$1","addWhitespace","beforeTerms","newTerm","stitchIn$1","stitchIn","lastBefore","lastNew","afterId","afterTerm","beforeId","unique$5","unique","list","appendPhrase","newPhrase","doc","toStretch","docs","parents","parent","shouldChange","append","hasSpace","main","unique$4","joinPhrase","starterId","prepend","shrinkAll","deleteLength","phrase","find","deletePhrase","_delete$1","append_1","prepend_1","_delete","replace$1","firstLength","tmp","splitOn","findIndex","slice","_04Insert","res","_05Json","lookAhead","regs","getAfter","all","lookBehind","getBefore","_06Lookahead","methods$7","failFast$1","failFast","optional","_02FailFast","_matchLogic","getGreedy","state","endReg","start_i","phrase_length","count","greedyTo","nextReg","isEndGreedy","greedy","tmpReg","doOrBlock","skipN","block","wasFound","cr","w_index","extra","foundBlock","keepGoing","doAndBlock","longest","allDidMatch","allWords","tryTerm","getGroup","term_index","name","groups","groupId","termId","group","tryHere","hasGroup","previousGroup","named","haveNeeds","remain","skipto","skipNum","_g","_skipNum","_g2","startAt","nextRegMatched","nextTerm","_g3","foundNeg","_03TryMatch","postProcess$1","postProcess","matches","atEnd","_ref","_04PostProcess","bySlashes","byParentheses","byWord","isBlock","isReg","cleanUp","parseBlocks","_final","_01ParseBlocks","hasMinMax","andSign","captureName","RegExp","titleCase$2","stripStart","stripEnd","stripBoth","parseToken","groupType","exec","Number","_02ParseToken","nameGroups","tokens","convert","current","token","doFastOrMode","shouldPack","oneOf","opts","_03PostProcess","isArray$2","byArray","blocks","fromDoc","ids","idBlocks","addOptions","syntax","input","matchSyntax","idLookup","blocklist","_loop","_t","foundAll","idLookup_1","matchAll","matchOne","_res","_res2","_01MatchAll","notMatch","ts","not$1","match_1","justOne","has","not","_this2","canBe$1","_this3","results","previous","can","Phrase","aliases$1","Phrase_1","Pool","words","remove","merge","stats","Pool_1","linkTerms","_linkTerms","initSplit","hasSomething","isAcronym$1","hasEllipse","newLine","hasLetter","startWhitespace","naiive_split","lines","isSentence","abbrevs","lastWord","splitSentences","sentences","chunks","splits","ws","_01Sentences","wordlike","isBoundary","naiiveSplit","isSlash","notWord","reg2","combineSlashes","splitHyphens","hyphens","whichDash","isArray$1","splitWords","carry","_02Words","fromText","phrases","_01Tokenizer","fromJSON","fromJSON_1","_version","entity","nouns$1","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","NickName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","verbs$1","Imperative","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","values","Value","Ordinal","Cardinal","Fraction","RomanNumeral","TextValue","NumericValue","Money","Percent","misc$1","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Timezone","Time","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","_color","unique$3","inferIsA","_isA","unique$2","inferNotA","_notA","inferLineage","_lineage","validate","inferTags","inference","addIn","build","_data","seq","cache$1","toAlphaCode","_o","fromCharCode","fromAlphaCode","_e","charCodeAt","encoding","symbols","nodes","symCount","syms","indexFromRef","toArray","_s","unpack","unpack_1$1","unpack_1$1$1","_o2","Array","efrtUnpack_min","misc","g8","vh1","q1","q2","q3","q4","her","his","their","themselves","your","our","my","its","fancy","lex","TextOrdinal","plural","toPlural","conj","conjugate","adjectives","hasCompound","addWords","wordsObj","multi","buildOut","lexicon","unpack_1","addIrregulars","nouns","irregulars","verbs","inf","forms","addIrregulars_1","plurals","addendum","alga","alumna","alumnus","analysis","antenna","appendix","avocado","axis","bacillus","barracks","beau","bus","cactus","chateau","child","circus","clothes","corpus","criterion","curriculum","database","deer","diagnosis","echo","embargo","epoch","foot","formula","fungus","genus","goose","halo","hippopotamus","larva","leaf","libretto","loaf","man","memorandum","modulus","mosquito","mouse","nebula","nucleus","octopus","opus","ovum","ox","parenthesis","person","phenomenon","prognosis","quiz","radius","referendum","rodeo","sex","shoe","sombrero","stimulus","stomach","syllabus","synopsis","tableau","thesis","thief","tooth","tornado","tuxedo","vertebra","mapping$1","prt","perf","pst","fut","pres","pluperf","conjugations","act","ache","age","aim","arise","babysit","ban","be","beat","become","begin","being","bend","bet","bind","bite","bleed","blow","boil","brake","breed","bring","broadcast","budget","burn","burst","buy","choose","cling","come","compete","creep","cut","deal","develop","die","dig","dive","draw","dream","drink","drive","drop","eat","edit","egg","fall","feed","feel","fight","flee","fling","fly","forbid","forget","forgive","free","freeze","give","go","grow","guide","hang","have","hear","hide","hit","hold","hurt","ice","imply","is","keep","kneel","know","lay","lead","leap","leave","lend","lie","light","loose","lose","make","mean","meet","miss","patrol","pay","prove","puke","put","quit","read","ride","reside","ring","rise","rub","run","say","seat","see","seek","sell","send","sew","shake","shave","shed","shine","shoot","show","shut","sing","sink","sit","ski","slay","sleep","slide","smash","sneak","speak","speed","spend","spill","spin","spit","spread","spring","stand","steal","stick","sting","stink","stream","strew","strike","suit","sware","swear","sweep","swim","swing","take","teach","tear","tell","think","thrive","tie","undergo","understand","upset","wait","wake","wear","weave","wed","weep","win","wind","withdraw","wring","write","full","conjugations_1","endsWith$1","repl","pr","pa","gr","ar","suffixes$1","posMap","doTransform","pos","checkSuffix","_01Suffixes","hasY","generic","_02Generic","conjugate$2","conjugate_1$1","do_rules$1","dont_rules$1","irregulars$5","nice","late","hard","inner","outer","far","worse","bad","good","big","large","transforms$2","to_superlative","toSuperlative","do_rules","dont_rules","irregulars$4","grey","gray","green","yellow","red","well","sad","transforms$1","to_comparative","toComparative","fns","conjugate$1","sup","comp","adjectives$2","suffixes","_rules$2","addE","trySuffix","pluralize","_rules$1","invertObj","invert","toSingular_1","rules","to","_transform","guessVerb","_guess","guessTense","three","two","one","toInfinitive$1","irregs","rule","toInfinitive_1$1","irregulars$3","_isVerbose","World","verbose","bool","wordObj","cleaned","addConjugations","addPlurals","taggers","compounds","postProcessors","JSON","parse","stringify","w2","World_1","_01Utils","from","addParent","reverse","doShallow","wordcount","_02Accessors","first","eq","firstTerms","firstTerm","lastTerms","termList","num","getGroups","allGroups","_groups$j","getOneName","_loop2","sentence","cacheRequired$1","cacheRequired","needTags","needWords","_cache","_cacheRequired","_failFast","_03Match","ifNo","lookAfter","lookBefore","befores","hasAfter","hasBefore","tagTerms","safe","tagList","_setTag","why","_04Tag","detachParent","sub","_this4","_this5","_05Loops","tokenize","buildTree","val","more","rest","fastLookup","everyTerm","_lookup","_06Lookup","isObject","lookup","isObj","byVal","lookUp","uncache","_07Cache","titleCase$1","replaceWith","keepTags","newPhrases","keepCase","tmpDoc","tagger","oldTags","_replace","_01Replace","_02Insert","makeNew","insertAfter","insertAt","insertBefore","arg","toRemove","shouldTrim","showFull","trimPre","trimPost","_01Text","termOffsets","elapsed","offsets","calcOffset","_offset","_02Json","jsonDefaults","setOptions","frequency","freq","already","data","_debug","reset","css","blue","magenta","cyan","black","logClientSide","cli","tagString","debug","topk","_topk","debug_1","out","_03Out","methods$6","alpha","left","right","byFreq","counts","sortSequential","order","alphabetical","seqNames","sequence","sequential","chron","chronological","unique$1","_01Sort","isPunct","quotes","methods$5","termArr","quotations","adverbs","_methods","defaults","emoji","contractions","parentheses","possessives","honorifics","mapping","medium","heavy","normalize","strip","contraction","expand","unwrap","possessive","_02Normalize","_03Split","foundEm","parts","splitAfter","splitBefore","segment","eachTerm","toCamelCase","_04Case","_05Whitespace","hyphenate","dehyphenate","deHyphenate","toQuotations","toQuotation","toParentheses","removed","increase","_06Join","postPunct","setContraction","suffix","contract","_07Contract","methods$4","methods$3","emojis","atmentions","atMentions","phoneNumbers","money","places","organizations","clauses","entities","yup","people","ignore","things","topics","_simple","underOver","tryMultiple","checkLexicon","foundWords","noPrefix","_01Lexicon","apostrophes","perSec","checkPunctuation","endChar","_02Punctuation","startsWith","romanNumeral","romanNumValid","checkRegex$1","checkRegex","_03Prefixes","Adj$1","Inf$1","Pres$1","Sing$1","Past$1","Exp","Actor$1","Noun$1","Last$1","endsWith","Adj","Inf","Pres","Sing","Past","Avb","Plrl","Vb","Last","suffixMap","ea","ia","ic","ly","oed","ued","xed","azy","eer","ped","ffy","ify","ing","ize","lar","mum","nes","nny","oid","ous","que","rol","sis","zes","amed","aped","ched","lked","nded","cted","dged","akis","cede","chuk","czyk","ects","ends","enko","ette","fies","fore","gate","gone","ices","ints","ines","ions","less","llen","made","nsen","oses","ould","sson","tage","teen","tion","tive","tors","vice","tized","urned","eased","ances","bound","ettes","fully","ishes","ities","marek","nssen","ology","ports","rough","tches","tieth","tures","wards","where","auskas","keeper","logist","teenth","opoulos","borough","sdottir","endRegexs","_char","knownSuffixes","_04Suffixes","emoticons","emojiReg","isCommaEmoji","raw","isEmoticon","tagEmoji","_05Emoji","lookups","_01Init","afterThisWord","it","there","because","but","who","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","markov","beforeThisPos","afterThisPos","afterKeys","beforeKeys","checkNeighbours","foundTag","_tag","_tag2","_foundTag","_tag3","_ret","_01Neighbours","hasNumber","checkCase","_02Case","hasPrefix","prefix","checkPrefix","stem","_03Stem","isPlural$3","isSingular$1","isPlural_1$2","isSingular","isPlural","noPlurals","notPlural","notSingular","checkPlural","_04Plurals","orgWords","maybeOrg","Comma","tagOrgs","_05Organizations","oneLetterAcronym","periodSeperated","oneLetterWord","A","checkAcronym","_06Acronyms","step","neighbours","fallbacks","_02Fallbacks","hasNegative","irregulars$2","wont","cant","cannot","dont","dun","doAint","noun","checkNegative","_01Negative","contraction$1","easy","ll","ve","re","checkApostrophe","_02Simple","irregulars$1","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","checkIrregulars","_03Irregulars","hasApostropheS","banList","that","hereThere","here","everywhere","isPossessive","twoTerm","isHas","checkPossessive","_04Possessive","hasPerfect","useDid","how","what","checkPerfect","_05PerfectTense","isRange","timeRange","checkRange","_06Ranges","french","qu","checkFrench","_07French","isNumber","isOrdinal","isTime","createPhrase","_03Contractions","hasWord","hasTag","miscCorrection","notIf","fixMisc","_unique","list$5","_01Misc","_ambig","adverbAdjective","personDate","personMonth","personAdjective","personVerb","personPlace","personNoun","dates","list$4","_02Dates","adjectives$1","list$3","_03Adjective","_04Noun","_05Adverb","_06Value","list$2","_07Verbs","list$1","_08Place","_09Org","months","_10People","allLists","lists","newM","enumerated","required","matches_1","hasEvery","chances","runner","allChances","worthIt","tryDoc","runner_1","corrections","_04Correction","_02Tagger","addMethod$a","addMethod","Doc","Abbreviations","_Doc","_super","stripPeriods","addPeriods","addMethod$9","Acronyms","addMethod$8","commas","conjunctions","condition","tooLong","Clauses","addMethod$7","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","addMethod$6","beforeLast","conjunction","hasOxford","Lists","items","hasOxfordComma","addOxfordComma","needsComma","removeOxfordComma","nounList","adjList","verbList","noPlural","hasPlural","hasPlural_1","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","getArticle","isPlural$2","_rules","endS","isPlural$1","isPlural_1$1","exceptions","he","she","they","we","toPossessive","toPossessive_1","parse$1","parse_1","methods$2","article","agree","an","adj","methods_1","addMethod$5","Nouns","keep_anaphora","open","close","addMethod$4","Parentheses","addMethod$3","Possessives","pairs","hasOpen","addMethod$2","Quotations","want","verb","toInfinitive_1","findNoun","vb","auxiliary","isPlural_1","toNegative","_inf","_inf2","toNegative_1","getSubject","behind","lastNoun","getSubject_1","parseVerb","adverb","particle","subject","adverbAfter","toBe","isI","isNegative","toBe_1","doModal","doModal_1","og","past","_infinitive","infinitive","space","conjugate_1","useParticiple$1","useParticiple","toParticiple","participle","_toParticiple","makeNeutral","methods$1","advb","toPastTense","toPresentTense","_this6","toFutureTense","_this7","_this8","toGerund","_this9","_this10","noAux","isPositive","isImperative","_this11","toPositive","addMethod$1","Verbs","negate","gerund","People","subclass","extend","addFn","Subset","methods","selections","aliases","untag","and","onlyIf","Doc_1","smallTagger","tiny","worldInstance","nlp","parseMatch","version","load","plugin","src","fromTemplate","tmpl","template","description","preProcess","findPivot","byClause","safeCuts","isIndependent","hardCuts","second","pop","lastTry","isGood","doSentence","pivot","safeCut","hardCut","like","dislike","require$$0","hasYear","fromCategory","cats","categories","cat","aWords","bWords","useAn","changeCat","byCategory","chooseCat","change","category","seemsGood","models","summary","fromSentence","copula"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/summary/builds/wtf-plugin-summary.min.js b/plugins/summary/builds/wtf-plugin-summary.min.js index 5202907d..e1671185 100644 --- a/plugins/summary/builds/wtf-plugin-summary.min.js +++ b/plugins/summary/builds/wtf-plugin-summary.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfSummary=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;rr?n:r)+1;if(Math.abs(r-n)>(a||100))return a||100;for(var i,o,s,u,l,c,h=[],d=0;d4)return r;u=o===(s=t[i-1])?0:1,l=h[p-1][i]+1,(c=h[p][i-1]+1)1&&i>1&&o===t[i-2]&&e[p-2]===s&&(c=h[p-2][i-2]+u)2&&void 0!==arguments[2]?arguments[2]:3;if(e===t)return 1;if(e.lengtht.fuzzy)return!0;if(!0===t.soft&&(a=B(t.word,e.root))>t.fuzzy)return!0}return t.word===e.clean||t.word===e.text||t.word===e.reduced}return void 0!==t.tag?!0===e.tags[t.tag]:void 0!==t.method?"function"==typeof e[t.method]&&!0===e[t.method]():void 0!==t.regex?t.regex.test(e.clean):void 0!==t.fastOr?!(!e.implicit||!0!==t.fastOr.hasOwnProperty(e.implicit))||(t.fastOr.hasOwnProperty(e.reduced)||t.fastOr.hasOwnProperty(e.text)):void 0!==t.choices&&("and"===t.operator?t.choices.every((function(t){return O(e,t,r,n)})):t.choices.some((function(t){return O(e,t,r,n)})))},G=O=function(e,t,r,n){var a=z(e,t,r,n);return!0===t.negative?!a:a},T={},V={doesMatch:function(e,t,r){return G(this,e,t,r)},isAcronym:function(){return b(this.text)},isImplicit:function(){return""===this.text&&Boolean(this.implicit)},isKnown:function(){return Object.keys(this.tags).some((function(e){return!0!==T[e]}))},setRoot:function(e){var t=e.transforms,r=this.implicit||this.clean;if(this.tags.Plural&&(r=t.toSingular(r,e)),this.tags.Verb&&!this.tags.Negative&&!this.tags.Infinitive){var n=null;this.tags.PastTense?n="PastTense":this.tags.Gerund?n="Gerund":this.tags.PresentTense?n="PresentTense":this.tags.Participle?n="Participle":this.tags.Actor&&(n="Actor"),r=t.toInfinitive(r,e,n)}this.root=r}},J=/[\s-]/,M=/^[A-Z-]+$/,L={textOut:function(e,t,r){e=e||{};var n=this.text,a=this.pre,i=this.post;return!0===e.reduced&&(n=this.reduced||""),!0===e.root&&(n=this.root||""),!0===e.implicit&&this.implicit&&(n=this.implicit||""),!0===e.normal&&(n=this.clean||this.text||""),!0===e.root&&(n=this.root||this.reduced||""),!0===e.unicode&&(n=g(n)),!0===e.titlecase&&(this.tags.ProperNoun&&!this.titleCase()||(this.tags.Acronym?n=n.toUpperCase():M.test(n)&&!this.tags.Acronym&&(n=n.toLowerCase()))),!0===e.lowercase&&(n=n.toLowerCase()),!0===e.acronyms&&this.tags.Acronym&&(n=n.replace(/\./g,"")),!0!==e.whitespace&&!0!==e.root||(a="",i=" ",!1!==J.test(this.post)&&!e.last||this.implicit||(i="")),!0!==e.punctuation||e.root||(!0===this.hasPost(".")?i="."+i:!0===this.hasPost("?")?i="?"+i:!0===this.hasPost("!")?i="!"+i:!0===this.hasPost(",")?i=","+i:!0===this.hasEllipses()&&(i="..."+i)),!0!==t&&(a=""),!0!==r&&(i=""),!0===e.abbreviations&&this.tags.Abbreviation&&(i=i.replace(/^\./,"")),a+n+i}},S={Auxiliary:1,Possessive:1},_=function(e,t){var r=Object.keys(e.tags),n=t.tags;return r=r.sort((function(e,t){return S[t]||!n[t]?-1:n[t]?n[e]?n[e].lineage.length>n[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1}))},K={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},q={json:function(e,t){e=e||{};var r={};return(e=Object.assign({},K,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.clean),e.tags&&(r.tags=Object.keys(this.tags)),e.clean&&(r.clean=this.clean),(e.id||e.offset)&&(r.id=this.id),e.implicit&&null!==this.implicit&&(r.implicit=this.implicit),e.whitespace&&(r.pre=this.pre,r.post=this.post),e.bestTag&&(r.bestTag=_(this,t)[0]),r}},R=Object.assign({},I,C,V,L,q);function W(){return"undefined"!=typeof window&&window.document}var U=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),r=String(r);var n=N(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=c(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(e,[{key:"set",value:function(e){var t=N(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();oe.prototype.clone=function(){var e=new oe(this.text);return e.pre=this.pre,e.post=this.post,e.clean=this.clean,e.reduced=this.reduced,e.root=this.root,e.implicit=this.implicit,e.tags=Object.assign({},this.tags),e},Object.assign(oe.prototype,R),Object.assign(oe.prototype,ie);var se=oe,ue={terms:function(e){if(0===this.length)return[];if(this.cache.terms)return void 0!==e?this.cache.terms[e]:this.cache.terms;for(var t=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,normal:!0}:"reduced"===e?{punctuation:!1,titlecase:!1,lowercase:!0,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"implicit"===e?{punctuation:!0,implicit:!0,whitespace:!0,trim:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),a=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(a=!0);var i=n.reduce((function(i,o,s){if(0===s&&""===o.text&&null!==o.implicit&&!e.implicit)return i;e.last=r&&s===n.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===n.length-1&&r&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&r&&(i=le(i)),!0===e.trim&&(i=i.trim()),i}},he={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},de=/[.?!]\s*$/,ge=function(e,t){t[0].pre=e[0].pre;var r,n,a=e[e.length-1],i=t[t.length-1];i.post=(r=a.post,n=i.post,de.test(n)?n+r.match(/\s*$/):r),a.post="",""===a.post&&(a.post+=" ")},pe=function(e,t,r){var n=e.terms(),a=t.terms();ge(n,a),function(e,t,r){var n=e[e.length-1],a=t[t.length-1],i=n.next;n.next=t[0].id,a.next=i,i&&(r.get(i).prev=a.id);var o=e[0].id;o&&(t[0].prev=o)}(n,a,e.pool);var i=[e],o=e.start,s=[r];return(s=s.concat(r.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length})),e.cache={},e},me=/ /,fe=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===me.test(t.post)&&(t.post+=" ")}(a),function(e,t,r){var n=r[r.length-1];n.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start),r[0].prev=e.terms(0).prev,e.terms(0).prev=n.id}(e,t,a);var i=[e],o=[r];return(o=o.concat(r.parents())).forEach((function(e){var r=e.list.filter((function(e){return e.hasId(n)||e.hasId(t.start)}));i=i.concat(r)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length,e.start===n&&(e.start=t.start),e.cache={}})),e},ve=function(e,t){var r=t.pool(),n=e.terms(),a=r.get(n[0].prev)||{},i=r.get(n[n.length-1].next)||{};n[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,r,n){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=r,a.start===t&&(a.start=n.id),a.cache={})})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},be={append:function(e,t){return pe(this,e,t),this},prepend:function(e,t){return fe(this,e,t),this},delete:function(e){return ve(this,e),this},replace:function(e,t){var r=this.length;pe(this,e,t);var n=this.buildFrom(this.start,this.length);n.length=r,ve(n,t)},splitOn:function(e){var t=this.terms(),r={before:null,match:null,after:null},n=t.findIndex((function(t){return t.id===e.start}));if(-1===n)return r;var a=t.slice(0,n);a.length>0&&(r.before=this.buildFrom(a[0].id,a.length));var i=t.slice(n,n+e.length);i.length>0&&(r.match=this.buildFrom(i[0].id,i.length));var o=t.slice(n+e.length,t.length);return o.length>0&&(r.after=this.buildFrom(o[0].id,o.length,this.pool)),r}},ye={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={};return e.text&&(r.text=this.text()),e.normal&&(r.normal=this.text("normal")),e.clean&&(r.clean=this.text("clean")),e.reduced&&(r.reduced=this.text("reduced")),e.implicit&&(r.implicit=this.text("implicit")),e.root&&(r.root=this.text("root")),e.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),r.terms=this.terms().map((function(r){return r.json(e.terms,t)}))),r}},we={lookAhead:function(e){e||(e=".*");var t=this.pool,r=[],n=this.terms();return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,r=[];return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(e)}},ke=Object.assign({},ue,ce,he,be,ye,we),Ae=function(e,t){if(0===t.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},De=x((function(e,t){t.getGreedy=function(e,t){for(var r=Object.assign({},e.regs[e.r],{start:!1,end:!1}),n=e.t;e.t1&&void 0!==arguments[1]?arguments[1]:0,n=e.regs[e.r],a=!1,i=0;it&&(t=r.length),n}))&&t},t.getGroup=function(e,t,r){if(e.groups[e.groupId])return e.groups[e.groupId];var n=e.terms[t].id;return e.groups[e.groupId]={group:String(r),start:n,length:0},e.groups[e.groupId]}})),$e=function(e,t,r,n){for(var a={t:0,terms:e,r:0,regs:t,groups:{},start_i:r,phrase_length:n,hasGroup:!1,groupId:null,previousGroup:null};a.ra.t)return null;if(!0===i.end&&a.start_i+a.t!==n)return null}if(!0===a.hasGroup){var m=De.getGroup(a,d,i.named);a.t>1&&i.greedy?m.length+=a.t-d:m.length++}}else{if(i.negative){var f=Object.assign({},i);if(f.negative=!1,!0===a.terms[a.t].doesMatch(f,a.start_i+a.t,a.phrase_length))return null}if(!0!==i.optional){if(a.terms[a.t].isImplicit()&&t[a.r-1]&&a.terms[a.t+1]){if(a.terms[a.t-1]&&a.terms[a.t-1].implicit===t[a.r-1].word)return null;if(a.terms[a.t+1].doesMatch(i,a.start_i+a.t,a.phrase_length)){a.t+=2;continue}}return null}}}else{var v=De.greedyTo(a,t[a.r+1]);if(void 0!==i.min&&v-a.ti.max){a.t=a.t+i.max;continue}if(null===v)return null;!0===a.hasGroup&&(De.getGroup(a,a.t,i.named).length=v-a.t),a.t=v}}return{match:a.terms.slice(0,a.t),groups:a.groups}},Pe=function(e,t,r){if(!r||0===r.length)return r;if(t.some((function(e){return e.end}))){var n=e[e.length-1];r=r.filter((function(e){return-1!==e.match.indexOf(n)}))}return r},je=/(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/,He=/([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/,Ee=/ /g,Ne=function(e){return/^[\!\[\^]*(<[^<]*>)?\//.test(e)&&/\/[\?\]\+\*\$~]*$/.test(e)},xe=function(e){return e=(e=e.map((function(e){return e.trim()}))).filter((function(e){return e}))},Ie=function(e){var t=e.split(je),r=[];t.forEach((function(e){Ne(e)?r.push(e):r=r.concat(e.split(He))})),r=xe(r);var n=[];return r.forEach((function(e){!function(e){return/^[\!\[\^]*(<[^<]*>)?\(/.test(e)&&/\)[\?\]\+\*\$~]*$/.test(e)}(e)?Ne(e)?n.push(e):n=n.concat(e.split(Ee)):n.push(e)})),n=xe(n)},Ce=/\{([0-9]+,?[0-9]*)\}/,Fe=/&&/,Be=new RegExp(/^<\s*?(\S+)\s*?>/),Oe=function(e){return e[e.length-1]},ze=function(e){return e[0]},Ge=function(e){return e.substr(1)},Te=function(e){return e.substr(0,e.length-1)},Ve=function(e){return e=Ge(e),e=Te(e)},Je=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===Oe(t)&&(n.end=!0,t=Te(t)),"^"===ze(t)&&(n.start=!0,t=Ge(t)),("["===ze(t)||"]"===Oe(t))&&(n.named=!0,"["===ze(t)?n.groupType="]"===Oe(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===ze(t))){var i=Be.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===Oe(t)&&(n.greedy=!0,t=Te(t)),"*"!==t&&"*"===Oe(t)&&"\\*"!==t&&(n.greedy=!0,t=Te(t)),"?"===Oe(t)&&(n.optional=!0,t=Te(t)),"!"===ze(t)&&(n.negative=!0,t=Ge(t)),"("===ze(t)&&")"===Oe(t)){Fe.test(t)?(n.choices=t.split(Fe),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=Ge(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Te(n.choices[o]),n.choices=n.choices.map((function(e){return e.trim()})),n.choices=n.choices.filter((function(e){return e})),n.choices=n.choices.map((function(t){return t.split(/ /g).map(e)})),t=""}if("/"===ze(t)&&"/"===Oe(t))return t=Ve(t),n.regex=new RegExp(t),n;if("~"===ze(t)&&"~"===Oe(t))return t=Ve(t),n.soft=!0,n.word=t,n}return!0===Ce.test(t)&&(t=t.replace(Ce,(function(e,t){var r=t.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,n.optional=!0,""}))),"#"===ze(t)?(n.tag=Ge(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===ze(t)?(n.method=Ge(t),n):"."===t?(n.anything=!0,n):"*"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace("\\*","*")).replace("\\.","."),n.word=t.toLowerCase()),n)},Me=function(e){for(var t,r=!1,n=-1,a=0;a1&&void 0!==arguments[1]?arguments[1]:{},r=e.filter((function(e){return e.groupType})).length;return r>0&&(e=Me(e)),t.fuzzy||(e=Le(e)),e},_e=function(e){return"[object Array]"===Object.prototype.toString.call(e)},Ke=function(e){return[{choices:e.map((function(e){return[{word:e}]})),operator:"or"}]},qe=function(e){if(!e||!e.list||!e.list[0])return[];var t=[];return e.list.forEach((function(e){var r=[];e.terms().forEach((function(e){r.push(e.id)})),t.push(r)})),[{idBlocks:t}]},Re=function(e,t){return!0===t.fuzzy&&(t.fuzzy=.85),"number"==typeof t.fuzzy&&(e=e.map((function(e){return t.fuzzy>0&&e.word&&(e.fuzzy=t.fuzzy),e.choices&&e.choices.forEach((function(e){e.forEach((function(e){e.fuzzy=t.fuzzy}))})),e}))),e},We=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||""===t)return[];if("object"===e(t)){if(_e(t)){if(0===t.length||!t[0])return[];if("object"===e(t[0]))return t;if("string"==typeof t[0])return Ke(t)}return t&&"Doc"===t.isA?qe(t):[]}"number"==typeof t&&(t=String(t));var n=Ie(t);return n=n.map((function(e){return Je(e)})),n=Se(n,r),n=Re(n,r)},Ue=function(e,t){for(var r=[],n=t[0].idBlocks,a=function(t){n.forEach((function(n){0!==n.length?n.every((function(r,n){return i=t,e[t+n].id===r}))&&(r.push({match:e.slice(t,t+n.length)}),t+=n.length-1):i=t})),i=t},i=0;i2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=We(t)),!0===Ae(e,t))return[];var n=t.filter((function(e){return!0!==e.optional&&!0!==e.negative})).length,a=e.terms(),i=[];if(t[0].idBlocks){var o=Ue(a,t);if(o&&o.length>0)return Pe(a,t,o)}if(!0===t[0].start){var s=$e(a,t,0,a.length);return s&&s.match&&s.match.length>0&&(s.match=s.match.filter((function(e){return e})),i.push(s)),Pe(a,t,i)}for(var u=0;ua.length);u+=1){var l=$e(a.slice(u),t,u,a.length);if(l&&l.match&&l.match.length>0&&(u+=l.match.length-1,l.match=l.match.filter((function(e){return e})),i.push(l),!0===r))return Pe(a,t,i)}return Pe(a,t,i)},Ze=function(e,t){var r={};Qe(e,t).forEach((function(e){e.match.forEach((function(e){r[e.id]=!0}))}));var n=e.terms(),a=[],i=[];return n.forEach((function(e){!0!==r[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Xe={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Qe(this,e,r);return n=n.map((function(e){var r=e.match,n=e.groups,a=t.buildFrom(r[0].id,r.length,n);return a.cache.terms=r,a}))},has:function(e){return Qe(this,e,!0).length>0},not:function(e){var t=this,r=Ze(this,e);return r=r.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var r=this,n=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return r.buildFrom(e[0].id,e.length)}))}},Ye=function e(r,n,a){t(this,e),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Ye.prototype.buildFrom=function(e,t,r){var n=new Ye(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Ye.prototype,Xe),Object.assign(Ye.prototype,ke);var et={term:"terms"};Object.keys(et).forEach((function(e){return Ye.prototype[e]=Ye.prototype[et[e]]}));var tt=Ye,rt=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();rt.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,r){var n=e.words[r].clone();return t[n.id]=n,t}),{});return new rt(t)};var nt=rt,at=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},it=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,ot=/\S/,st=/[ .][A-Z]\.? *$/i,ut=/(?:\u2026|\.{2,}) *$/,lt=/((?:\r?\n|\r)+)/,ct=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,ht=/^\s+/,dt=function(e,t){if(!0===st.test(e))return!1;if(!0===ut.test(e))return!1;if(!1===ct.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},gt=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===ot.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(lt),n=0;n0&&(n.push(l),a[u]="")}if(0===n.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&(0===t.length&&(t[0]=""),t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof e&&("number"==typeof e?e=String(e):At(e)&&(n=e)),n=(n=n||gt(e,t)).map((function(e){return kt(e)})),r=r||new nt;var a=n.map((function(e){e=e.map((function(e){var t=new se(e);return r.add(t),t})),at(e);var t=new tt(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},$t=function(e,t){var r=new nt;return e.map((function(e,n){var a=e.terms.map((function(a,i){var o=new se(a.text);return o.pre=void 0!==a.pre?a.pre:"",void 0===a.post&&(a.post=" ",i>=e.terms.length-1&&(a.post=". ",n>=e.terms.length-1&&(a.post="."))),o.post=void 0!==a.post?a.post:" ",a.tags&&a.tags.forEach((function(e){return o.tag(e,"",t)})),r.add(o),o}));return at(a),new tt(a[0].id,a.length,r)}))},Pt=["Person","Place","Organization"],jt={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:Pt},Actor:{isA:"Noun",notA:Pt},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:Pt},Demonym:{isA:["Noun","ProperNoun"],notA:Pt},Possessive:{isA:"Noun"}},Ht={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Imperative:{isA:"Infinitive"},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"PastTense"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"},Auxiliary:{notA:["Noun","Adjective","Value"]}},Et={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},Fraction:{isA:"Value",notA:["Noun"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},Nt=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],xt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Timezone:{isA:["Date","Noun"],notA:["Adjective","ProperNoun"]},Time:{isA:["Date"],notA:["AtMention"]},Determiner:{notA:Nt},Conjunction:{notA:Nt},Preposition:{notA:Nt},QuestionWord:{notA:["Determiner"]},Currency:{isA:["Noun"]},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},It={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Ct=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:It[t]?e[t].color=It[t]:e[t].isA.some((function(r){return!!It[r]&&(e[t].color=It[r],!0)}))})),e},Ft=function(e){return Object.keys(e).forEach((function(t){for(var r=e[t],n=r.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},St=function(e,t,r){var n=Lt(t);return n1&&(r.hasCompound[i[0]]=!0),void 0===Rt[a]?void 0!==t[n]?("string"==typeof t[n]&&(t[n]=[t[n]]),"string"==typeof a?t[n].push(a):t[n]=t[n].concat(a)):t[n]=a:Rt[a](t,n,r)}))},Ut=function(e){var t=Object.assign({},qt);return Object.keys(Vt).forEach((function(r){var n=Kt(Vt[r]);Object.keys(n).forEach((function(e){n[e]=r})),Wt(n,t,e)})),t},Qt=Wt,Zt=function(e){for(var t=e.irregulars.nouns,r=Object.keys(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===ar.hasOwnProperty(t))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(r=Object.assign({},t.irregulars.verbs[e])),void 0===(r=Object.assign({},sr(e),r)).Gerund&&(r.Gerund=lr.Gerund(e)),void 0===r.PastTense&&(r.PastTense=lr.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=lr.PresentTense(e)),r},hr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],dr=[/ary$/],gr={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},pr=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],mr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],fr=[/ary$/,/ous$/],vr={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},br=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],yr={toSuperlative:function(e){if(gr.hasOwnProperty(e))return gr[e];for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=t.irregulars.nouns;if(r.hasOwnProperty(e))return r[e];var n=Dr(e);return null!==n?n:Ar.test(e)?e+"es":e+"s"},Pr=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(eas)es$/i,"$1e"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],jr=function(e,t){var r,n=t.irregulars.nouns,a=(r=n,Object.keys(r).reduce((function(e,t){return e[r[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof t&&"number"!=typeof t&&null!==t||(t={group:t});var r=We(e,t);if(0===r.length)return this.buildFrom([]);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.reduce((function(e,t){return e.concat(t.match(r))}),[]);return void 0!==t.group&&null!==t.group&&""!==t.group?this.buildFrom(n).groups(t.group):this.buildFrom(n)},t.not=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(0===r.length||!1===Tr(this,r))return this;var n=this.list.reduce((function(e,t){return e.concat(t.not(r))}),[]);return this.buildFrom(n)},t.matchOne=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.filter((function(e){return!0===e.has(r)}));return this.buildFrom(n)},t.ifNo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.list.filter((function(e){return!1===e.has(r)}));return this.buildFrom(n)},t.has=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);return!1!==Tr(this,r)&&this.list.some((function(e){return!0===e.has(r)}))},t.lookAhead=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookAhead(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookAfter=t.lookAhead,t.lookBehind=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookBehind(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookBefore=t.lookBehind,t.before=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms().map((function(e){return e.id})),n=e.match(r)[0],a=t.indexOf(n.start);return 0===a||-1===a?null:e.buildFrom(e.start,a)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.after=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms(),n=t.map((function(e){return e.id})),a=e.match(r)[0],i=n.indexOf(a.start);if(-1===i||!t[i+a.length])return null;var o=t[i+a.length].id,s=e.length-i-a.length;return e.buildFrom(o,s)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.hasAfter=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookAfter(e,t).found}))},t.hasBefore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookBefore(e,t).found}))}})),Jr=function(e,t,r,n){var a=[];"string"==typeof e&&(a=e.split(" ")),t.list.forEach((function(i){var o=i.terms();!0===r&&(o=o.filter((function(r){return r.canBe(e,t.world)}))),o.forEach((function(r,i){a.length>1?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))},Mr={tag:function(e,t){return e?(Jr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(Jr(e,this,!0,t),this):this},unTag:function(e,t){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(e,t,r.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(e,t))}),[]);return this.buildFrom(r)}},Lr={map:function(t){var r=this;if(!t)return this;var n=this.list.map((function(e,n){var a=r.buildFrom([e]);a.from=null;var i=t(a,n);return i&&i.list&&i.list[0]?i.list[0]:i}));return 0===(n=n.filter((function(e){return e}))).length?this.buildFrom(n):"object"!==e(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(e,t){var r=this;return e?(this.list.forEach((function(n,a){var i=r.buildFrom([n]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var r=this.list.filter((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return this.buildFrom(r)},find:function(e){var t=this;if(!e)return this;var r=this.list.find((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return r?this.buildFrom([r]):void 0},some:function(e){var t=this;return e?this.list.some((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var r=[this.list[t]];return this.buildFrom(r)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},Sr=function(e){return e.split(/[ -]/g)},_r=function(e,t,r){for(var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return e.forEach((function(e,n){var a=!0;void 0!==t[n]&&(a=t[n]),e=(e=(e||"").toLowerCase()).replace(/[,;.!?]+$/,"");var i=Sr(e).map((function(e){return e.trim()}));r[i[0]]=r[i[0]]||{},1===i.length?r[i[0]].value=a:(r[i[0]].more=r[i[0]].more||[],r[i[0]].more.push({rest:i.slice(1),value:a}))})),r}(e,t),a=[],i=function(e){for(var t=r.list[e],i=t.terms().map((function(e){return e.reduced})),o=function(e){void 0!==n[i[e]]&&(void 0!==n[i[e]].more&&n[i[e]].more.forEach((function(r){void 0!==i[e+r.rest.length]&&(!0===r.rest.every((function(t,r){return t===i[e+r+1]}))&&a.push({id:t.terms()[e].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[i[e]].value&&a.push({id:t.terms()[e].id,value:n[i[e]].value,length:1}))},s=0;s1&&void 0!==arguments[1]?arguments[1]:{};return t?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(a){var i,o=t;if("function"==typeof t&&(o=t(a)),o&&"object"===e(o)&&"Doc"===o.isA)i=o.list,r.pool().merge(o.pool());else{if("string"!=typeof o)return;!1!==n.keepCase&&a.terms(0).isTitleCase()&&(o=Rr(o)),i=Dt(o,r.world,r.pool());var s=r.buildFrom(i);s.tagger(),i=s.list}if(!0===n.keepTags){var u=a.json({terms:{tags:!0}}).terms;i[0].terms().forEach((function(e,t){u[t]&&e.tagSafe(u[t].tags,"keptTag",r.world)}))}a.replace(i[0],r)})),this):this.delete()},replace:function(e,t,r){return void 0===t?this.replaceWith(e,r):(this.match(e).replaceWith(t,r),this)}},Ur=x((function(e,t){var r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)},n=function(e,t){var r=Dt(e,t.world)[0],n=t.buildFrom([r]);return n.tagger(),t.list=n.list,t};t.append=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(t)&&"Doc"===t.isA?a=t.list[0].clone():"string"==typeof t&&(a=Dt(t,e.world,e.pool())[0]),e.buildFrom([a]).tagger(),n.append(a,e)})),this):n(t,this):this},t.insertAfter=t.append,t.insertAt=t.append,t.prepend=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(e)&&"Doc"===e.isA?a=e.list[0].clone():"string"==typeof e&&(a=Dt(e,t.world,t.pool())[0]),t.buildFrom([a]).tagger(),n.prepend(a,t)})),this):n(e,this):this},t.insertBefore=t.prepend,t.concat=function(){this.uncache();for(var e=this.list.slice(0),t=0;t0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof t&&this.list[t])return this.list[t].json(r);!0===(t=n(t)).root&&this.list.forEach((function(t){t.terms().forEach((function(t){null===t.root&&t.setRoot(e.world)}))}));var a=this.list.map((function(r){return r.json(t,e.world)}));if((t.terms.offset||t.offset||t.terms.index||t.index)&&Xr(this,a,t),t.frequency||t.freq||t.count){var i={};this.list.forEach((function(e){var t=e.text("reduced");i[t]=i[t]||0,i[t]+=1})),this.list.forEach((function(e,t){a[t].count=i[e.text("reduced")]}))}if(t.unique){var o={};a=a.filter((function(e){return!0!==o[e.reduced]&&(o[e.reduced]=!0,!0)}))}return a},t.data=t.json})),en=x((function(e){var t="",r=function(e,t){for(e=e.toString();e.lengtht.count?-1:e.countn?1:0},length:function(e,t){var r=e.text().trim().length,n=t.text().trim().length;return rn?-1:0},wordCount:function(e,t){var r=e.wordCount(),n=t.wordCount();return rn?-1:0}};nn.alphabetical=nn.alpha,nn.wordcount=nn.wordCount;var an={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},on={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(n);r[t]=r[t]||0,r[t]+=1})),t.list.sort((function(e,t){var a=r[e.text(n)],i=r[t.text(n)];return ai?-1:0})),t):an.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,r){return t[e.start]>t[r.start]?1:t[e.start]0){a+=o;continue}}if(void 0===r[i]||!0!==r.hasOwnProperty(i))if(i===e[a].reduced||!0!==r.hasOwnProperty(e[a].reduced)){if(!0===$n.test(i)){var s=i.replace($n,"");!0===r.hasOwnProperty(s)&&e[a].tag(r[s],"noprefix-lexicon",t)}}else e[a].tag(r[e[a].reduced],"lexicon",t);else e[a].tag(r[i],"lexicon",t)}return e},Hn=/[\'‘’‛‵′`´]$/,En=/^(m|k|cm|km|m)\/(s|h|hr)$/,Nn=[[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@1?[0-9](am|pm)$/i,"Time"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,"Time"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^'[0-9]{2}$/,"Year"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,"Date"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date"],[/^gmt[+-][0-9][0-9]?$/i,"Timezone"],[/^utc[+-][0-9][0-9]?$/i,"Timezone"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^woo+a*?h?$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/,["Money","Value"]],[/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/,["Ordinal","NumericValue"]],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"]],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/,["Fraction","NumericValue"]],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,["Value","NumberRange"]],[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/,["Time","NumberRange"]],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],xn=/^[IVXLCDM]{2,}$/,In=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Cn="Adjective",Fn="Infinitive",Bn="PresentTense",On="Singular",zn="PastTense",Gn="Adverb",Tn="Expression",Vn="Actor",Jn="Verb",Mn="Noun",Ln="LastName",Sn={a:[[/.[aeiou]na$/,Mn],[/.[oau][wvl]ska$/,Ln],[/.[^aeiou]ica$/,On],[/^([hyj]a)+$/,Tn]],c:[[/.[^aeiou]ic$/,Cn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,zn],[/.[aeo]{2}[bdgmnprvz]ed$/,zn],[/.[aeiou][sg]hed$/,zn],[/.[aeiou]red$/,zn],[/.[aeiou]r?ried$/,zn],[/.[bcdgtr]led$/,zn],[/.[aoui]f?led$/,zn],[/.[iao]sed$/,zn],[/[aeiou]n?[cs]ed$/,zn],[/[aeiou][rl]?[mnf]ed$/,zn],[/[aeiou][ns]?c?ked$/,zn],[/[aeiou][nl]?ged$/,zn],[/.[tdbwxz]ed$/,zn],[/[^aeiou][aeiou][tvx]ed$/,zn],[/.[cdlmnprstv]ied$/,zn],[/[^aeiou]ard$/,On],[/[aeiou][^aeiou]id$/,Cn],[/.[vrl]id$/,Cn]],e:[[/.[lnr]ize$/,Fn],[/.[^aeiou]ise$/,Fn],[/.[aeiou]te$/,Fn],[/.[^aeiou][ai]ble$/,Cn],[/.[^aeiou]eable$/,Cn],[/.[ts]ive$/,Cn]],h:[[/.[^aeiouf]ish$/,Cn],[/.v[iy]ch$/,Ln],[/^ug?h+$/,Tn],[/^uh[ -]?oh$/,Tn]],i:[[/.[oau][wvl]ski$/,Ln]],k:[[/^(k){2}$/,Tn]],l:[[/.[gl]ial$/,Cn],[/.[^aeiou]ful$/,Cn],[/.[nrtumcd]al$/,Cn],[/.[^aeiou][ei]al$/,Cn]],m:[[/.[^aeiou]ium$/,On],[/[^aeiou]ism$/,On],[/^h*u*m+$/,Tn],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Cn],[/[^aeiou]ician$/,Vn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,Tn],[/^(yo)+$/,Tn],[/^woo+[pt]?$/,Tn]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,On],[/[^i]fer$/,Fn],[/.[^aeiou][ao]pher$/,Vn],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Cn],[/[aeiou].*ist$/,Cn],[/^[a-z]et$/,Jn]],s:[[/.[^aeiou]ises$/,Bn],[/.[rln]ates$/,Bn],[/.[^z]ens$/,Jn],[/.[lstrn]us$/,On],[/.[aeiou]sks$/,Bn],[/.[aeiou]kes$/,Bn],[/[aeiou][^aeiou]is$/,On],[/[a-z]\'s$/,Mn],[/^yes+$/,Tn]],v:[[/.[^aeiou][ai][kln]ov$/,Ln]],y:[[/.[cts]hy$/,Cn],[/.[st]ty$/,Cn],[/.[gk]y$/,Cn],[/.[tnl]ary$/,Cn],[/.[oe]ry$/,On],[/[rdntkbhs]ly$/,Gn],[/...lly$/,Gn],[/[bszmp]{2}y$/,Cn],[/.(gg|bb|zz)ly$/,Cn],[/.[ai]my$/,Cn],[/[ea]{2}zy$/,Cn],[/.[^aeiou]ity$/,On]]},_n="Adjective",Kn="Infinitive",qn="PresentTense",Rn="Singular",Wn="PastTense",Un="Adverb",Qn="Plural",Zn="Actor",Xn="Verb",Yn="Noun",ea="LastName",ta="Modal",ra=[null,null,{ea:Rn,ia:Yn,ic:_n,ly:Un,"'n":Xn,"'t":Xn},{oed:Wn,ued:Wn,xed:Wn," so":Un,"'ll":ta,"'re":"Copula",azy:_n,eer:Yn,end:Xn,ped:Wn,ffy:_n,ify:Kn,ing:"Gerund",ize:Kn,lar:_n,mum:_n,nes:qn,nny:_n,oid:_n,ous:_n,que:_n,rol:Rn,sis:Rn,zes:qn},{amed:Wn,aped:Wn,ched:Wn,lked:Wn,nded:Wn,cted:Wn,dged:Wn,akis:ea,cede:Kn,chuk:ea,czyk:ea,ects:qn,ends:Xn,enko:ea,ette:Rn,fies:qn,fore:Un,gate:Kn,gone:_n,ices:Qn,ints:Qn,ines:Qn,ions:Qn,less:Un,llen:_n,made:_n,nsen:ea,oses:qn,ould:ta,some:_n,sson:ea,tage:Kn,teen:"Value",tion:Rn,tive:_n,tors:Yn,vice:Rn},{tized:Wn,urned:Wn,eased:Wn,ances:Qn,bound:_n,ettes:Qn,fully:Un,ishes:qn,ities:Qn,marek:ea,nssen:ea,ology:Yn,ports:Qn,rough:_n,tches:qn,tieth:"Ordinal",tures:Qn,wards:Un,where:Un},{auskas:ea,keeper:Zn,logist:Zn,teenth:"Value"},{opoulos:ea,borough:"Place",sdottir:ea}],na={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"2){var a=n.clean[n.clean.length-2];if("s"===a)return void n.tag(["Possessive","Noun"],"end-tick",r);"n"===a&&n.tag(["Gerund"],"chillin",r)}En.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&xn.test(r)&&In.test(r)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var r=e.clean.length,n=7;r<=n&&(n=r-1);for(var a=n;a>1;a-=1){var i=e.clean.substr(r-a,r);if(!0===ra[i.length].hasOwnProperty(i)){var o=ra[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var r=e.clean,n=r[r.length-1];if(!0===Sn.hasOwnProperty(n))for(var a=Sn[n],i=0;i35)}(n=(n=n.trim()).replace(/[.!?,]$/,""))&&(e.tag("Emoji","comma-emoji",t),e.text=n,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(aa)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),na.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},oa=function(e,t){var r=e.world;ia.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},va={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},ba=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],ya=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],wa=[/i$/,/ae$/],ka=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var r=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(r.length<=3)return void e.tag("Singular","short-singular",t);if(ba.find((function(t){return e.tags[t]})))return;if(va.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(va.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(ya.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(wa.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},Aa=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),Da=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},$a=/^[A-Z]('s|,)?$/,Pa=/([A-Z]\.){2}[A-Z]?/i,ja={I:!0,A:!0},Ha={neighbours:ca,case:ga,stem:fa,plural:ka,organizations:function(e,t){for(var r=0;r5)&&e.isAcronym()}(e,t)?(e.tag("Acronym","acronym-step",t),e.tag("Noun","acronym-infer",t)):!ja.hasOwnProperty(e.text)&&$a.test(e.text)&&(e.tag("Acronym","one-letter-acronym",t),e.tag("Noun","one-letter-infer",t)),e.tags.Organization&&e.text.length<=3&&e.tag("Acronym","acronym-org",t),e.tags.Organization&&e.isUpperCase()&&e.text.length<=6&&e.tag("Acronym","acronym-org-case",t))}))}},Ea=function(e,t){var r=e.world;return Ha.neighbours(t,r),Ha.case(e),Ha.stem(t,r),t.forEach((function(t){!1===t.isKnown()&&t.tag("Noun","noun-fallback",e.world)})),Ha.organizations(t,r),Ha.acronyms(t,r),t.forEach((function(t){Ha.plural(t,e.world)})),e},Na=/n't$/,xa={"won't":["will","not"],wont:["will","not"],"can't":["can","not"],cant:["can","not"],cannot:["can","not"],"shan't":["should","not"],dont:["do","not"],dun:["do","not"]},Ia=function(e,t){return!0===xa.hasOwnProperty(e.clean)?xa[e.clean]:"ain't"===e.clean||"aint"===e.clean?function(e,t){var r=t.terms(),n=r.indexOf(e),a=r.slice(0,n).find((function(e){return e.tags.Noun}));return a&&a.tags.Plural?["are","not"]:["is","not"]}(e,t):!0===Na.test(e.clean)?[e.clean.replace(Na,""),"not"]:null},Ca=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i,Fa={ll:"will",ve:"have",re:"are",m:"am","n't":"not"},Ba=function(e){var t=e.text.match(Ca);return null===t?null:Fa.hasOwnProperty(t[2])?[t[1],Fa[t[2]]]:null},Oa={wanna:["want","to"],gonna:["going","to"],im:["i","am"],alot:["a","lot"],ive:["i","have"],imma:["I","will"],"where'd":["where","did"],whered:["where","did"],"when'd":["when","did"],whend:["when","did"],howd:["how","did"],whatd:["what","did"],dunno:["do","not","know"],brb:["be","right","back"],gtg:["got","to","go"],irl:["in","real","life"],tbh:["to","be","honest"],imo:["in","my","opinion"],til:["today","i","learned"],rn:["right","now"],twas:["it","was"],"@":["at"]},za=function(e){return Oa.hasOwnProperty(e.clean)?Oa[e.clean]:null},Ga=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i,Ta={that:!0,there:!0},Va={here:!0,there:!0,everywhere:!0},Ja=function(e,t,r){var n=e.text.match(Ga);if(null!==n){if(!0===function(e,t){if(e.tags.Possessive)return!0;if(e.tags.Pronoun||e.tags.QuestionWord)return!1;if(Ta.hasOwnProperty(e.reduced))return!1;var r=t.get(e.next);if(!r)return!0;if(r.tags.Verb)return!!r.tags.Infinitive||!!r.tags.PresentTense;if(r.tags.Noun)return!0!==Va.hasOwnProperty(r.reduced);var n=t.get(r.next);return!(!n||!n.tags.Noun||n.tags.Pronoun)||(r.tags.Adjective||r.tags.Adverb||r.tags.Verb,!1)}(e,t.pool))return e.tag("#Possessive","isPossessive",r),null;if(null!==n)return function(e,t){var r=t.terms(),n=r.indexOf(e);return r.slice(n+1,n+3).find((function(e){return e.tags.PastTense}))}(e,t)?[n[1],"has"]:[n[1],"is"]}return null},Ma=/[a-z\u00C0-\u00FF]'d$/,La={how:!0,what:!0},Sa=function(e,t){if(Ma.test(e.clean)){for(var r=e.clean.replace(/'d$/,""),n=t.terms(),a=n.indexOf(e),i=n.slice(a+1,a+4),o=0;o0?wi=wi.concat(t):wi.push(e)})),wi.forEach((function(e){var t,r,n;return e.required=(t=e.reg,r=[],n=[],t.forEach((function(e){!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&r.push(e.tag),void 0!==e.word&&n.push(e.word))})),{tags:ni(r),words:ni(n)}),e}));var ki=wi,Ai=function(e){ki.forEach((function(t){var r=[];t.required.words.forEach((function(t){r.push(e._cache.words[t]||[])})),t.required.tags.forEach((function(t){r.push(e._cache.tags[t]||[])}));var n=function(e){if(0===e.length)return[];var t={};e.forEach((function(e){e=ni(e);for(var r=0;r5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(l.eq(0))}return"number"==typeof t&&(n=n.get(t)),new e(n.list,this,this.world)},e},Ni=function(e){var r=function(e){a(i,e);var r=u(i);function i(e,n,a){var o;return t(this,i),(o=r.call(this,e,n,a)).contracted=null,o}return n(i,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),r=t[0].isTitleCase();t.forEach((function(e,r){e.set(e.implicit||e.text),e.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),a=this.not(n).splitAfter("@hasComma"),i=(a=a.concat(n)).quotations();return i.found&&(a=a.splitOn(i.eq(0))),a=a.match("#Noun+ (of|by)? the? #Noun+?"),!0!==t.keep_anaphora&&(a=(a=(a=(a=a.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),a=a.not("(of|for|by|the)$"),"number"==typeof e&&(a=a.get(e)),new r(a.list,this,this.world)},e},_i=/\(/,Ki=/\)/,qi=function(e){var r=function(e){a(i,e);var r=u(i);function i(){return t(this,i),r.apply(this,arguments)}return n(i,[{key:"unwrap",value:function(){return this.list.forEach((function(e){var t=e.terms(0);t.pre=t.pre.replace(_i,"");var r=e.lastTerm();r.post=r.post.replace(Ki,"")})),this}}]),i}(e);return e.prototype.parentheses=function(e){var t=[];return this.list.forEach((function(e){for(var r=e.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(e,[{key:"tagger",value:function(){return $i(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();ho.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new ho(e,this,this.world)},ho.prototype.fromText=function(e){var t=Dt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(ho.prototype,co.misc),Object.assign(ho.prototype,co.selections),lo(ho);var go={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(go).forEach((function(e){return ho.prototype[e]=ho.prototype[go[e]]}));var po=ho,mo=function(e){var t=e.termList();return jn(t,e.world),e.world.taggers.forEach((function(t){t(e)})),e};var fo=function e(t){var r=t,n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&r.addWords(t);var n=Dt(e,r),a=new po(n,null,r);return a.tagger(),a};return n.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=r;t&&((n=n.clone()).words={},n.addWords(t));var a=Dt(e,n),i=new po(a,null,n);return(t||i.world.taggers.length>0)&&mo(i),i},n.extend=function(e){return e(po,r,this,tt,se,nt),this},n.fromJSON=function(e){var t=$t(e,r);return new po(t,null,r)},n.clone=function(){return e(r.clone())},n.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(e),this},n.world=function(){return r},n.parseMatch=function(e,t){return We(e,t)},n.version="13.10.5",n.import=n.load,n.plugin=n.extend,n}(new Or);var vo=function(e){let t=e.template("short description");if(t){return(t.json()||{}).description||""}return null};var bo=function(e){return e.parentheses().remove(),e};const yo=function(e){return e.remove("and #Copula .*"),e};var wo=function(e){let t=e.matchOne("#Copula+ (a|an|the|any|one) of?");if(t.found||(t=e.matchOne("#Copula+")),t.found||(t=e.matchOne("refers to (a|an|the|any)? of?")),t.found||(t=e.matchOne("(constitutes|describes) (a|an|the|any)? of?")),!t.found)return null;let r=e.splitOn(t),n=r.eq(1),a=n.match("(a|an|the|any)? of?");return n.remove("(a|an|the|any)? of?"),{before:r.eq(0),verb:r.eq(1),article:a,after:yo(r.eq(2))}};var ko=function(e){return e.remove("and (also|eventually) (a|an|the|#Possessive) .*"),e.remove("!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e};var Ao=function(e){return e.has("(#Place && @hasComma) #Country+$")&&e.remove("#Country+$"),e.has("#Noun (that|which|who) #PresentTense the .*")&&e.remove(" that #PresentTense the .*"),e.has("#Noun #PastTense by the .*")&&e.remove("#PastTense by the .*"),e.remove("#Demonym"),e.remove("(professional|former)"),e.remove("and? held annually .*"),e.remove("taking place each .*"),e.remove("^one of (the|many|several|#Value)+"),e.remove("^(a|an|the)? #Ordinal? #Superlative"),e.remove("^(a|an|the)? #Ordinal? most #Adjective"),e.remove("born in .*"),e.remove("born #Date+ in? #Place+?"),e.remove("(first|initially|originally)? (located|founded|started|based|formed) in .*"),e.remove("(which|who|that) (is|was) .*"),e.remove("^the name of"),e};const Do=function(e){return!!e.has("^(and|the|which|who|whom|also|a|an|the)")||(!!e.has("^(west|north|south|east|part) of")||(!!e.has("^#PastTense by .")||(!!e.has("^(occasionally|sometimes|frequently)")||(!!e.has("^such as")||!!e.has("^(including|featuring|depicting)")))))};var $o=function(e){e.has("#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$")?e.remove("(located|based) in #Place+$"):e.has("(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$")?e.remove("(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$"):e.has("(#Noun|#Value) in #Place+$")?e.remove("in #Place+$"):(e.remove("and? part of #Place+$"),e.remove("and? near #Place+$"));let t=e.clauses();if(t.length>1){let r=t.eq(0),n=t.eq(1);if(Do(n))e=t.eq(0);else if(n.has("^(#PastTense)")&&r.has("(#Noun|#Value)$"))e=t.eq(0);else if(n.has("^(#Gerund)")&&r.has("#Noun$"))e=t.eq(0);else{let r=t.last();Do(r)&&(t.list.pop(),e=t.join())}}return e.has("(#Noun|and) #PastTense by")&&e.remove("#PastTense by .*"),e.remove("and? designed to .*"),e.remove("and? owned by .*"),e.remove("and? consisting of .*"),e.has("@hasComma (which|who) #Verb")&&e.remove("(which|who) .*"),e};var Po=function(e){return e.remove("(small|large|minor|major)"),e.remove("(extinct|retired|annual|biweekly|monthly|daily)"),e.remove("(female|male)"),e.remove("(private|independent|official|unofficial|officially)"),e.remove("(southern|northern|eastern|western|northeastern|northwestern)"),e.remove("^(family|clade|genus|species|order) of"),e};var jo=function(e,t){if(e&&"function"==typeof e.text){let r=e.text();if(r&&r.length>t.min&&r.lengthnew RegExp(`\\b${e}\\b`,"i")));var Co={good:["male","female"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),bad:Io,like:["male","female","century"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),dislike:["people","place","from","in","people from"].map((e=>new RegExp(`\\b${e}\\b`)),"i")};const{like:Fo,dislike:Bo,good:Oo,bad:zo}=Co,Go=/[0-9]{4}/,To=/s$/;var Vo=function(e){let t=e.categories(),r=t.filter((e=>Oo.find((t=>t.test(e)))));return r.length>0&&(t=r),t=t.filter((e=>!zo.find((t=>t.test(e)))&&!Go.test(e))),0===t.length?"":(r=t.filter((e=>Fo.find((t=>t.test(e))))),r.length>0&&(t=r),r=t.filter((e=>!1!==To.test(e)&&(1!==e.slice(" ").length&&void 0===Bo.find((t=>t.test(e)))))),r.length>0&&(t=r),t=t.sort(((e,t)=>{let r=e.split(" ").length,n=t.split(" ").length;return r>n?-1:r5&&e.lengthr?n:r)+1;if(Math.abs(r-n)>(a||100))return a||100;for(var i,o,s,u,l,c,h=[],d=0;d4)return r;u=o===(s=t[i-1])?0:1,l=h[p-1][i]+1,(c=h[p][i-1]+1)1&&i>1&&o===t[i-2]&&e[p-2]===s&&(c=h[p-2][i-2]+u)2&&void 0!==arguments[2]?arguments[2]:3;if(e===t)return 1;if(e.lengtht.fuzzy)return!0;if(!0===t.soft&&(a=B(t.word,e.root))>t.fuzzy)return!0}return t.word===e.clean||t.word===e.text||t.word===e.reduced}return void 0!==t.tag?!0===e.tags[t.tag]:void 0!==t.method?"function"==typeof e[t.method]&&!0===e[t.method]():void 0!==t.regex?t.regex.test(e.clean):void 0!==t.fastOr?!(!e.implicit||!0!==t.fastOr.hasOwnProperty(e.implicit))||(t.fastOr.hasOwnProperty(e.reduced)||t.fastOr.hasOwnProperty(e.text)):void 0!==t.choices&&("and"===t.operator?t.choices.every((function(t){return O(e,t,r,n)})):t.choices.some((function(t){return O(e,t,r,n)})))},G=O=function(e,t,r,n){var a=z(e,t,r,n);return!0===t.negative?!a:a},T={},V={doesMatch:function(e,t,r){return G(this,e,t,r)},isAcronym:function(){return b(this.text)},isImplicit:function(){return""===this.text&&Boolean(this.implicit)},isKnown:function(){return Object.keys(this.tags).some((function(e){return!0!==T[e]}))},setRoot:function(e){var t=e.transforms,r=this.implicit||this.clean;if(this.tags.Plural&&(r=t.toSingular(r,e)),this.tags.Verb&&!this.tags.Negative&&!this.tags.Infinitive){var n=null;this.tags.PastTense?n="PastTense":this.tags.Gerund?n="Gerund":this.tags.PresentTense?n="PresentTense":this.tags.Participle?n="Participle":this.tags.Actor&&(n="Actor"),r=t.toInfinitive(r,e,n)}this.root=r}},J=/[\s-]/,M=/^[A-Z-]+$/,L={textOut:function(e,t,r){e=e||{};var n=this.text,a=this.pre,i=this.post;return!0===e.reduced&&(n=this.reduced||""),!0===e.root&&(n=this.root||""),!0===e.implicit&&this.implicit&&(n=this.implicit||""),!0===e.normal&&(n=this.clean||this.text||""),!0===e.root&&(n=this.root||this.reduced||""),!0===e.unicode&&(n=g(n)),!0===e.titlecase&&(this.tags.ProperNoun&&!this.titleCase()||(this.tags.Acronym?n=n.toUpperCase():M.test(n)&&!this.tags.Acronym&&(n=n.toLowerCase()))),!0===e.lowercase&&(n=n.toLowerCase()),!0===e.acronyms&&this.tags.Acronym&&(n=n.replace(/\./g,"")),!0!==e.whitespace&&!0!==e.root||(a="",i=" ",!1!==J.test(this.post)&&!e.last||this.implicit||(i="")),!0!==e.punctuation||e.root||(!0===this.hasPost(".")?i="."+i:!0===this.hasPost("?")?i="?"+i:!0===this.hasPost("!")?i="!"+i:!0===this.hasPost(",")?i=","+i:!0===this.hasEllipses()&&(i="..."+i)),!0!==t&&(a=""),!0!==r&&(i=""),!0===e.abbreviations&&this.tags.Abbreviation&&(i=i.replace(/^\./,"")),a+n+i}},S={Auxiliary:1,Possessive:1},_=function(e,t){var r=Object.keys(e.tags),n=t.tags;return r=r.sort((function(e,t){return S[t]||!n[t]?-1:n[t]?n[e]?n[e].lineage.length>n[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1}))},K={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},q={json:function(e,t){e=e||{};var r={};return(e=Object.assign({},K,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.clean),e.tags&&(r.tags=Object.keys(this.tags)),e.clean&&(r.clean=this.clean),(e.id||e.offset)&&(r.id=this.id),e.implicit&&null!==this.implicit&&(r.implicit=this.implicit),e.whitespace&&(r.pre=this.pre,r.post=this.post),e.bestTag&&(r.bestTag=_(this,t)[0]),r}},R=Object.assign({},I,C,V,L,q);function W(){return"undefined"!=typeof window&&window.document}var U=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),r=String(r);var n=N(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=c(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(e,[{key:"set",value:function(e){var t=N(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();oe.prototype.clone=function(){var e=new oe(this.text);return e.pre=this.pre,e.post=this.post,e.clean=this.clean,e.reduced=this.reduced,e.root=this.root,e.implicit=this.implicit,e.tags=Object.assign({},this.tags),e},Object.assign(oe.prototype,R),Object.assign(oe.prototype,ie);var se=oe,ue={terms:function(e){if(0===this.length)return[];if(this.cache.terms)return void 0!==e?this.cache.terms[e]:this.cache.terms;for(var t=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,normal:!0}:"reduced"===e?{punctuation:!1,titlecase:!1,lowercase:!0,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"implicit"===e?{punctuation:!0,implicit:!0,whitespace:!0,trim:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),a=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(a=!0);var i=n.reduce((function(i,o,s){if(0===s&&""===o.text&&null!==o.implicit&&!e.implicit)return i;e.last=r&&s===n.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===n.length-1&&r&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&r&&(i=le(i)),!0===e.trim&&(i=i.trim()),i}},he={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},de=/[.?!]\s*$/,ge=function(e,t){t[0].pre=e[0].pre;var r,n,a=e[e.length-1],i=t[t.length-1];i.post=(r=a.post,n=i.post,de.test(n)?n+r.match(/\s*$/):r),a.post="",""===a.post&&(a.post+=" ")},pe=function(e,t,r){var n=e.terms(),a=t.terms();ge(n,a),function(e,t,r){var n=e[e.length-1],a=t[t.length-1],i=n.next;n.next=t[0].id,a.next=i,i&&(r.get(i).prev=a.id);var o=e[0].id;o&&(t[0].prev=o)}(n,a,e.pool);var i=[e],o=e.start,s=[r];return(s=s.concat(r.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length})),e.cache={},e},me=/ /,fe=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===me.test(t.post)&&(t.post+=" ")}(a),function(e,t,r){var n=r[r.length-1];n.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start),r[0].prev=e.terms(0).prev,e.terms(0).prev=n.id}(e,t,a);var i=[e],o=[r];return(o=o.concat(r.parents())).forEach((function(e){var r=e.list.filter((function(e){return e.hasId(n)||e.hasId(t.start)}));i=i.concat(r)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length,e.start===n&&(e.start=t.start),e.cache={}})),e},ve=function(e,t){var r=t.pool(),n=e.terms(),a=r.get(n[0].prev)||{},i=r.get(n[n.length-1].next)||{};n[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,r,n){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=r,a.start===t&&(a.start=n.id),a.cache={})})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},be={append:function(e,t){return pe(this,e,t),this},prepend:function(e,t){return fe(this,e,t),this},delete:function(e){return ve(this,e),this},replace:function(e,t){var r=this.length;pe(this,e,t);var n=this.buildFrom(this.start,this.length);n.length=r,ve(n,t)},splitOn:function(e){var t=this.terms(),r={before:null,match:null,after:null},n=t.findIndex((function(t){return t.id===e.start}));if(-1===n)return r;var a=t.slice(0,n);a.length>0&&(r.before=this.buildFrom(a[0].id,a.length));var i=t.slice(n,n+e.length);i.length>0&&(r.match=this.buildFrom(i[0].id,i.length));var o=t.slice(n+e.length,t.length);return o.length>0&&(r.after=this.buildFrom(o[0].id,o.length,this.pool)),r}},ye={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={};return e.text&&(r.text=this.text()),e.normal&&(r.normal=this.text("normal")),e.clean&&(r.clean=this.text("clean")),e.reduced&&(r.reduced=this.text("reduced")),e.implicit&&(r.implicit=this.text("implicit")),e.root&&(r.root=this.text("root")),e.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),r.terms=this.terms().map((function(r){return r.json(e.terms,t)}))),r}},we={lookAhead:function(e){e||(e=".*");var t=this.pool,r=[],n=this.terms();return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,r=[];return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(e)}},ke=Object.assign({},ue,ce,he,be,ye,we),Ae=function(e,t){if(0===t.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},De=x((function(e,t){t.getGreedy=function(e,t){for(var r=Object.assign({},e.regs[e.r],{start:!1,end:!1}),n=e.t;e.t1&&void 0!==arguments[1]?arguments[1]:0,n=e.regs[e.r],a=!1,i=0;it&&(t=r.length),n}))&&t},t.getGroup=function(e,t,r){if(e.groups[e.groupId])return e.groups[e.groupId];var n=e.terms[t].id;return e.groups[e.groupId]={group:String(r),start:n,length:0},e.groups[e.groupId]}})),$e=function(e,t,r,n){for(var a={t:0,terms:e,r:0,regs:t,groups:{},start_i:r,phrase_length:n,hasGroup:!1,groupId:null,previousGroup:null};a.ra.t)return null;if(!0===i.end&&a.start_i+a.t!==n)return null}if(!0===a.hasGroup){var m=De.getGroup(a,d,i.named);a.t>1&&i.greedy?m.length+=a.t-d:m.length++}}else{if(i.negative){var f=Object.assign({},i);if(f.negative=!1,!0===a.terms[a.t].doesMatch(f,a.start_i+a.t,a.phrase_length))return null}if(!0!==i.optional){if(a.terms[a.t].isImplicit()&&t[a.r-1]&&a.terms[a.t+1]){if(a.terms[a.t-1]&&a.terms[a.t-1].implicit===t[a.r-1].word)return null;if(a.terms[a.t+1].doesMatch(i,a.start_i+a.t,a.phrase_length)){a.t+=2;continue}}return null}}}else{var v=De.greedyTo(a,t[a.r+1]);if(void 0!==i.min&&v-a.ti.max){a.t=a.t+i.max;continue}if(null===v)return null;!0===a.hasGroup&&(De.getGroup(a,a.t,i.named).length=v-a.t),a.t=v}}return{match:a.terms.slice(0,a.t),groups:a.groups}},Pe=function(e,t,r){if(!r||0===r.length)return r;if(t.some((function(e){return e.end}))){var n=e[e.length-1];r=r.filter((function(e){return-1!==e.match.indexOf(n)}))}return r},je=/(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/,He=/([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/,Ee=/ /g,Ne=function(e){return/^[\!\[\^]*(<[^<]*>)?\//.test(e)&&/\/[\?\]\+\*\$~]*$/.test(e)},xe=function(e){return e=(e=e.map((function(e){return e.trim()}))).filter((function(e){return e}))},Ie=function(e){var t=e.split(je),r=[];t.forEach((function(e){Ne(e)?r.push(e):r=r.concat(e.split(He))})),r=xe(r);var n=[];return r.forEach((function(e){!function(e){return/^[\!\[\^]*(<[^<]*>)?\(/.test(e)&&/\)[\?\]\+\*\$~]*$/.test(e)}(e)?Ne(e)?n.push(e):n=n.concat(e.split(Ee)):n.push(e)})),n=xe(n)},Ce=/\{([0-9]+,?[0-9]*)\}/,Fe=/&&/,Be=new RegExp(/^<\s*?(\S+)\s*?>/),Oe=function(e){return e[e.length-1]},ze=function(e){return e[0]},Ge=function(e){return e.substr(1)},Te=function(e){return e.substr(0,e.length-1)},Ve=function(e){return e=Ge(e),e=Te(e)},Je=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===Oe(t)&&(n.end=!0,t=Te(t)),"^"===ze(t)&&(n.start=!0,t=Ge(t)),("["===ze(t)||"]"===Oe(t))&&(n.named=!0,"["===ze(t)?n.groupType="]"===Oe(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===ze(t))){var i=Be.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===Oe(t)&&(n.greedy=!0,t=Te(t)),"*"!==t&&"*"===Oe(t)&&"\\*"!==t&&(n.greedy=!0,t=Te(t)),"?"===Oe(t)&&(n.optional=!0,t=Te(t)),"!"===ze(t)&&(n.negative=!0,t=Ge(t)),"("===ze(t)&&")"===Oe(t)){Fe.test(t)?(n.choices=t.split(Fe),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=Ge(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Te(n.choices[o]),n.choices=n.choices.map((function(e){return e.trim()})),n.choices=n.choices.filter((function(e){return e})),n.choices=n.choices.map((function(t){return t.split(/ /g).map(e)})),t=""}if("/"===ze(t)&&"/"===Oe(t))return t=Ve(t),n.regex=new RegExp(t),n;if("~"===ze(t)&&"~"===Oe(t))return t=Ve(t),n.soft=!0,n.word=t,n}return!0===Ce.test(t)&&(t=t.replace(Ce,(function(e,t){var r=t.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,n.optional=!0,""}))),"#"===ze(t)?(n.tag=Ge(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===ze(t)?(n.method=Ge(t),n):"."===t?(n.anything=!0,n):"*"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace("\\*","*")).replace("\\.","."),n.word=t.toLowerCase()),n)},Me=function(e){for(var t,r=!1,n=-1,a=0;a1&&void 0!==arguments[1]?arguments[1]:{},r=e.filter((function(e){return e.groupType})).length;return r>0&&(e=Me(e)),t.fuzzy||(e=Le(e)),e},_e=function(e){return"[object Array]"===Object.prototype.toString.call(e)},Ke=function(e){return[{choices:e.map((function(e){return[{word:e}]})),operator:"or"}]},qe=function(e){if(!e||!e.list||!e.list[0])return[];var t=[];return e.list.forEach((function(e){var r=[];e.terms().forEach((function(e){r.push(e.id)})),t.push(r)})),[{idBlocks:t}]},Re=function(e,t){return!0===t.fuzzy&&(t.fuzzy=.85),"number"==typeof t.fuzzy&&(e=e.map((function(e){return t.fuzzy>0&&e.word&&(e.fuzzy=t.fuzzy),e.choices&&e.choices.forEach((function(e){e.forEach((function(e){e.fuzzy=t.fuzzy}))})),e}))),e},We=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||""===t)return[];if("object"===e(t)){if(_e(t)){if(0===t.length||!t[0])return[];if("object"===e(t[0]))return t;if("string"==typeof t[0])return Ke(t)}return t&&"Doc"===t.isA?qe(t):[]}"number"==typeof t&&(t=String(t));var n=Ie(t);return n=n.map((function(e){return Je(e)})),n=Se(n,r),n=Re(n,r)},Ue=function(e,t){for(var r=[],n=t[0].idBlocks,a=function(t){n.forEach((function(n){0!==n.length?n.every((function(r,n){return i=t,e[t+n].id===r}))&&(r.push({match:e.slice(t,t+n.length)}),t+=n.length-1):i=t})),i=t},i=0;i2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=We(t)),!0===Ae(e,t))return[];var n=t.filter((function(e){return!0!==e.optional&&!0!==e.negative})).length,a=e.terms(),i=[];if(t[0].idBlocks){var o=Ue(a,t);if(o&&o.length>0)return Pe(a,t,o)}if(!0===t[0].start){var s=$e(a,t,0,a.length);return s&&s.match&&s.match.length>0&&(s.match=s.match.filter((function(e){return e})),i.push(s)),Pe(a,t,i)}for(var u=0;ua.length);u+=1){var l=$e(a.slice(u),t,u,a.length);if(l&&l.match&&l.match.length>0&&(u+=l.match.length-1,l.match=l.match.filter((function(e){return e})),i.push(l),!0===r))return Pe(a,t,i)}return Pe(a,t,i)},Ze=function(e,t){var r={};Qe(e,t).forEach((function(e){e.match.forEach((function(e){r[e.id]=!0}))}));var n=e.terms(),a=[],i=[];return n.forEach((function(e){!0!==r[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Xe={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Qe(this,e,r);return n=n.map((function(e){var r=e.match,n=e.groups,a=t.buildFrom(r[0].id,r.length,n);return a.cache.terms=r,a}))},has:function(e){return Qe(this,e,!0).length>0},not:function(e){var t=this,r=Ze(this,e);return r=r.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var r=this,n=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return r.buildFrom(e[0].id,e.length)}))}},Ye=function e(r,n,a){t(this,e),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Ye.prototype.buildFrom=function(e,t,r){var n=new Ye(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Ye.prototype,Xe),Object.assign(Ye.prototype,ke);var et={term:"terms"};Object.keys(et).forEach((function(e){return Ye.prototype[e]=Ye.prototype[et[e]]}));var tt=Ye,rt=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();rt.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,r){var n=e.words[r].clone();return t[n.id]=n,t}),{});return new rt(t)};var nt=rt,at=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},it=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,ot=/\S/,st=/[ .][A-Z]\.? *$/i,ut=/(?:\u2026|\.{2,}) *$/,lt=/((?:\r?\n|\r)+)/,ct=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,ht=/^\s+/,dt=function(e,t){if(!0===st.test(e))return!1;if(!0===ut.test(e))return!1;if(!1===ct.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},gt=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===ot.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(lt),n=0;n0&&(n.push(l),a[u]="")}if(0===n.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&(0===t.length&&(t[0]=""),t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof e&&("number"==typeof e?e=String(e):At(e)&&(n=e)),n=(n=n||gt(e,t)).map((function(e){return kt(e)})),r=r||new nt;var a=n.map((function(e){e=e.map((function(e){var t=new se(e);return r.add(t),t})),at(e);var t=new tt(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},$t=function(e,t){var r=new nt;return e.map((function(e,n){var a=e.terms.map((function(a,i){var o=new se(a.text);return o.pre=void 0!==a.pre?a.pre:"",void 0===a.post&&(a.post=" ",i>=e.terms.length-1&&(a.post=". ",n>=e.terms.length-1&&(a.post="."))),o.post=void 0!==a.post?a.post:" ",a.tags&&a.tags.forEach((function(e){return o.tag(e,"",t)})),r.add(o),o}));return at(a),new tt(a[0].id,a.length,r)}))},Pt=["Person","Place","Organization"],jt={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:Pt},Actor:{isA:"Noun",notA:Pt},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:Pt},Demonym:{isA:["Noun","ProperNoun"],notA:Pt},Possessive:{isA:"Noun"}},Ht={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Imperative:{isA:"Infinitive"},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"PastTense"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"},Auxiliary:{notA:["Noun","Adjective","Value"]}},Et={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},Fraction:{isA:"Value",notA:["Noun"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},Nt=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],xt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Timezone:{isA:["Date","Noun"],notA:["Adjective","ProperNoun"]},Time:{isA:["Date"],notA:["AtMention"]},Determiner:{notA:Nt},Conjunction:{notA:Nt},Preposition:{notA:Nt},QuestionWord:{notA:["Determiner"]},Currency:{isA:["Noun"]},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},It={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Ct=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:It[t]?e[t].color=It[t]:e[t].isA.some((function(r){return!!It[r]&&(e[t].color=It[r],!0)}))})),e},Ft=function(e){return Object.keys(e).forEach((function(t){for(var r=e[t],n=r.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},St=function(e,t,r){var n=Lt(t);return n1&&(r.hasCompound[i[0]]=!0),void 0===Rt[a]?void 0!==t[n]?("string"==typeof t[n]&&(t[n]=[t[n]]),"string"==typeof a?t[n].push(a):t[n]=t[n].concat(a)):t[n]=a:Rt[a](t,n,r)}))},Ut=function(e){var t=Object.assign({},qt);return Object.keys(Vt).forEach((function(r){var n=Kt(Vt[r]);Object.keys(n).forEach((function(e){n[e]=r})),Wt(n,t,e)})),t},Qt=Wt,Zt=function(e){for(var t=e.irregulars.nouns,r=Object.keys(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===ar.hasOwnProperty(t))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(r=Object.assign({},t.irregulars.verbs[e])),void 0===(r=Object.assign({},sr(e),r)).Gerund&&(r.Gerund=lr.Gerund(e)),void 0===r.PastTense&&(r.PastTense=lr.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=lr.PresentTense(e)),r},hr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],dr=[/ary$/],gr={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},pr=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],mr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],fr=[/ary$/,/ous$/],vr={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},br=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],yr={toSuperlative:function(e){if(gr.hasOwnProperty(e))return gr[e];for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=t.irregulars.nouns;if(r.hasOwnProperty(e))return r[e];var n=Dr(e);return null!==n?n:Ar.test(e)?e+"es":e+"s"},Pr=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(eas)es$/i,"$1e"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],jr=function(e,t){var r,n=t.irregulars.nouns,a=(r=n,Object.keys(r).reduce((function(e,t){return e[r[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof t&&"number"!=typeof t&&null!==t||(t={group:t});var r=We(e,t);if(0===r.length)return this.buildFrom([]);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.reduce((function(e,t){return e.concat(t.match(r))}),[]);return void 0!==t.group&&null!==t.group&&""!==t.group?this.buildFrom(n).groups(t.group):this.buildFrom(n)},t.not=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(0===r.length||!1===Tr(this,r))return this;var n=this.list.reduce((function(e,t){return e.concat(t.not(r))}),[]);return this.buildFrom(n)},t.matchOne=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.filter((function(e){return!0===e.has(r)}));return this.buildFrom(n)},t.ifNo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.list.filter((function(e){return!1===e.has(r)}));return this.buildFrom(n)},t.has=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);return!1!==Tr(this,r)&&this.list.some((function(e){return!0===e.has(r)}))},t.lookAhead=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookAhead(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookAfter=t.lookAhead,t.lookBehind=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookBehind(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookBefore=t.lookBehind,t.before=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms().map((function(e){return e.id})),n=e.match(r)[0],a=t.indexOf(n.start);return 0===a||-1===a?null:e.buildFrom(e.start,a)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.after=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms(),n=t.map((function(e){return e.id})),a=e.match(r)[0],i=n.indexOf(a.start);if(-1===i||!t[i+a.length])return null;var o=t[i+a.length].id,s=e.length-i-a.length;return e.buildFrom(o,s)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.hasAfter=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookAfter(e,t).found}))},t.hasBefore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookBefore(e,t).found}))}})),Jr=function(e,t,r,n){var a=[];"string"==typeof e&&(a=e.split(" ")),t.list.forEach((function(i){var o=i.terms();!0===r&&(o=o.filter((function(r){return r.canBe(e,t.world)}))),o.forEach((function(r,i){a.length>1?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))},Mr={tag:function(e,t){return e?(Jr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(Jr(e,this,!0,t),this):this},unTag:function(e,t){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(e,t,r.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(e,t))}),[]);return this.buildFrom(r)}},Lr={map:function(t){var r=this;if(!t)return this;var n=this.list.map((function(e,n){var a=r.buildFrom([e]);a.from=null;var i=t(a,n);return i&&i.list&&i.list[0]?i.list[0]:i}));return 0===(n=n.filter((function(e){return e}))).length?this.buildFrom(n):"object"!==e(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(e,t){var r=this;return e?(this.list.forEach((function(n,a){var i=r.buildFrom([n]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var r=this.list.filter((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return this.buildFrom(r)},find:function(e){var t=this;if(!e)return this;var r=this.list.find((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return r?this.buildFrom([r]):void 0},some:function(e){var t=this;return e?this.list.some((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var r=[this.list[t]];return this.buildFrom(r)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},Sr=function(e){return e.split(/[ -]/g)},_r=function(e,t,r){for(var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return e.forEach((function(e,n){var a=!0;void 0!==t[n]&&(a=t[n]),e=(e=(e||"").toLowerCase()).replace(/[,;.!?]+$/,"");var i=Sr(e).map((function(e){return e.trim()}));r[i[0]]=r[i[0]]||{},1===i.length?r[i[0]].value=a:(r[i[0]].more=r[i[0]].more||[],r[i[0]].more.push({rest:i.slice(1),value:a}))})),r}(e,t),a=[],i=function(e){for(var t=r.list[e],i=t.terms().map((function(e){return e.reduced})),o=function(e){void 0!==n[i[e]]&&(void 0!==n[i[e]].more&&n[i[e]].more.forEach((function(r){void 0!==i[e+r.rest.length]&&(!0===r.rest.every((function(t,r){return t===i[e+r+1]}))&&a.push({id:t.terms()[e].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[i[e]].value&&a.push({id:t.terms()[e].id,value:n[i[e]].value,length:1}))},s=0;s1&&void 0!==arguments[1]?arguments[1]:{};return t?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(a){var i,o=t;if("function"==typeof t&&(o=t(a)),o&&"object"===e(o)&&"Doc"===o.isA)i=o.list,r.pool().merge(o.pool());else{if("string"!=typeof o)return;!1!==n.keepCase&&a.terms(0).isTitleCase()&&(o=Rr(o)),i=Dt(o,r.world,r.pool());var s=r.buildFrom(i);s.tagger(),i=s.list}if(!0===n.keepTags){var u=a.json({terms:{tags:!0}}).terms;i[0].terms().forEach((function(e,t){u[t]&&e.tagSafe(u[t].tags,"keptTag",r.world)}))}a.replace(i[0],r)})),this):this.delete()},replace:function(e,t,r){return void 0===t?this.replaceWith(e,r):(this.match(e).replaceWith(t,r),this)}},Ur=x((function(e,t){var r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)},n=function(e,t){var r=Dt(e,t.world)[0],n=t.buildFrom([r]);return n.tagger(),t.list=n.list,t};t.append=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(t)&&"Doc"===t.isA?a=t.list[0].clone():"string"==typeof t&&(a=Dt(t,e.world,e.pool())[0]),e.buildFrom([a]).tagger(),n.append(a,e)})),this):n(t,this):this},t.insertAfter=t.append,t.insertAt=t.append,t.prepend=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(e)&&"Doc"===e.isA?a=e.list[0].clone():"string"==typeof e&&(a=Dt(e,t.world,t.pool())[0]),t.buildFrom([a]).tagger(),n.prepend(a,t)})),this):n(e,this):this},t.insertBefore=t.prepend,t.concat=function(){this.uncache();for(var e=this.list.slice(0),t=0;t0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof t&&this.list[t])return this.list[t].json(r);!0===(t=n(t)).root&&this.list.forEach((function(t){t.terms().forEach((function(t){null===t.root&&t.setRoot(e.world)}))}));var a=this.list.map((function(r){return r.json(t,e.world)}));if((t.terms.offset||t.offset||t.terms.index||t.index)&&Xr(this,a,t),t.frequency||t.freq||t.count){var i={};this.list.forEach((function(e){var t=e.text("reduced");i[t]=i[t]||0,i[t]+=1})),this.list.forEach((function(e,t){a[t].count=i[e.text("reduced")]}))}if(t.unique){var o={};a=a.filter((function(e){return!0!==o[e.reduced]&&(o[e.reduced]=!0,!0)}))}return a},t.data=t.json})),en=x((function(e){var t="",r=function(e,t){for(e=e.toString();e.lengtht.count?-1:e.countn?1:0},length:function(e,t){var r=e.text().trim().length,n=t.text().trim().length;return rn?-1:0},wordCount:function(e,t){var r=e.wordCount(),n=t.wordCount();return rn?-1:0}};nn.alphabetical=nn.alpha,nn.wordcount=nn.wordCount;var an={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},on={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(n);r[t]=r[t]||0,r[t]+=1})),t.list.sort((function(e,t){var a=r[e.text(n)],i=r[t.text(n)];return ai?-1:0})),t):an.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,r){return t[e.start]>t[r.start]?1:t[e.start]0){a+=o;continue}}if(void 0===r[i]||!0!==r.hasOwnProperty(i))if(i===e[a].reduced||!0!==r.hasOwnProperty(e[a].reduced)){if(!0===$n.test(i)){var s=i.replace($n,"");!0===r.hasOwnProperty(s)&&e[a].tag(r[s],"noprefix-lexicon",t)}}else e[a].tag(r[e[a].reduced],"lexicon",t);else e[a].tag(r[i],"lexicon",t)}return e},Hn=/[\'‘’‛‵′`´]$/,En=/^(m|k|cm|km|m)\/(s|h|hr)$/,Nn=[[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@1?[0-9](am|pm)$/i,"Time"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,"Time"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^'[0-9]{2}$/,"Year"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,"Date"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date"],[/^gmt[+-][0-9][0-9]?$/i,"Timezone"],[/^utc[+-][0-9][0-9]?$/i,"Timezone"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^woo+a*?h?$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/,["Money","Value"]],[/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/,["Ordinal","NumericValue"]],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"]],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/,["Fraction","NumericValue"]],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,["Value","NumberRange"]],[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/,["Time","NumberRange"]],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],xn=/^[IVXLCDM]{2,}$/,In=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Cn="Adjective",Fn="Infinitive",Bn="PresentTense",On="Singular",zn="PastTense",Gn="Adverb",Tn="Expression",Vn="Actor",Jn="Verb",Mn="Noun",Ln="LastName",Sn={a:[[/.[aeiou]na$/,Mn],[/.[oau][wvl]ska$/,Ln],[/.[^aeiou]ica$/,On],[/^([hyj]a)+$/,Tn]],c:[[/.[^aeiou]ic$/,Cn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,zn],[/.[aeo]{2}[bdgmnprvz]ed$/,zn],[/.[aeiou][sg]hed$/,zn],[/.[aeiou]red$/,zn],[/.[aeiou]r?ried$/,zn],[/.[bcdgtr]led$/,zn],[/.[aoui]f?led$/,zn],[/.[iao]sed$/,zn],[/[aeiou]n?[cs]ed$/,zn],[/[aeiou][rl]?[mnf]ed$/,zn],[/[aeiou][ns]?c?ked$/,zn],[/[aeiou][nl]?ged$/,zn],[/.[tdbwxz]ed$/,zn],[/[^aeiou][aeiou][tvx]ed$/,zn],[/.[cdlmnprstv]ied$/,zn],[/[^aeiou]ard$/,On],[/[aeiou][^aeiou]id$/,Cn],[/.[vrl]id$/,Cn]],e:[[/.[lnr]ize$/,Fn],[/.[^aeiou]ise$/,Fn],[/.[aeiou]te$/,Fn],[/.[^aeiou][ai]ble$/,Cn],[/.[^aeiou]eable$/,Cn],[/.[ts]ive$/,Cn]],h:[[/.[^aeiouf]ish$/,Cn],[/.v[iy]ch$/,Ln],[/^ug?h+$/,Tn],[/^uh[ -]?oh$/,Tn]],i:[[/.[oau][wvl]ski$/,Ln]],k:[[/^(k){2}$/,Tn]],l:[[/.[gl]ial$/,Cn],[/.[^aeiou]ful$/,Cn],[/.[nrtumcd]al$/,Cn],[/.[^aeiou][ei]al$/,Cn]],m:[[/.[^aeiou]ium$/,On],[/[^aeiou]ism$/,On],[/^h*u*m+$/,Tn],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Cn],[/[^aeiou]ician$/,Vn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,Tn],[/^(yo)+$/,Tn],[/^woo+[pt]?$/,Tn]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,On],[/[^i]fer$/,Fn],[/.[^aeiou][ao]pher$/,Vn],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Cn],[/[aeiou].*ist$/,Cn],[/^[a-z]et$/,Jn]],s:[[/.[^aeiou]ises$/,Bn],[/.[rln]ates$/,Bn],[/.[^z]ens$/,Jn],[/.[lstrn]us$/,On],[/.[aeiou]sks$/,Bn],[/.[aeiou]kes$/,Bn],[/[aeiou][^aeiou]is$/,On],[/[a-z]\'s$/,Mn],[/^yes+$/,Tn]],v:[[/.[^aeiou][ai][kln]ov$/,Ln]],y:[[/.[cts]hy$/,Cn],[/.[st]ty$/,Cn],[/.[gk]y$/,Cn],[/.[tnl]ary$/,Cn],[/.[oe]ry$/,On],[/[rdntkbhs]ly$/,Gn],[/...lly$/,Gn],[/[bszmp]{2}y$/,Cn],[/.(gg|bb|zz)ly$/,Cn],[/.[ai]my$/,Cn],[/[ea]{2}zy$/,Cn],[/.[^aeiou]ity$/,On]]},_n="Adjective",Kn="Infinitive",qn="PresentTense",Rn="Singular",Wn="PastTense",Un="Adverb",Qn="Plural",Zn="Actor",Xn="Verb",Yn="Noun",ea="LastName",ta="Modal",ra=[null,null,{ea:Rn,ia:Yn,ic:_n,ly:Un,"'n":Xn,"'t":Xn},{oed:Wn,ued:Wn,xed:Wn," so":Un,"'ll":ta,"'re":"Copula",azy:_n,eer:Yn,end:Xn,ped:Wn,ffy:_n,ify:Kn,ing:"Gerund",ize:Kn,lar:_n,mum:_n,nes:qn,nny:_n,oid:_n,ous:_n,que:_n,rol:Rn,sis:Rn,zes:qn},{amed:Wn,aped:Wn,ched:Wn,lked:Wn,nded:Wn,cted:Wn,dged:Wn,akis:ea,cede:Kn,chuk:ea,czyk:ea,ects:qn,ends:Xn,enko:ea,ette:Rn,fies:qn,fore:Un,gate:Kn,gone:_n,ices:Qn,ints:Qn,ines:Qn,ions:Qn,less:Un,llen:_n,made:_n,nsen:ea,oses:qn,ould:ta,some:_n,sson:ea,tage:Kn,teen:"Value",tion:Rn,tive:_n,tors:Yn,vice:Rn},{tized:Wn,urned:Wn,eased:Wn,ances:Qn,bound:_n,ettes:Qn,fully:Un,ishes:qn,ities:Qn,marek:ea,nssen:ea,ology:Yn,ports:Qn,rough:_n,tches:qn,tieth:"Ordinal",tures:Qn,wards:Un,where:Un},{auskas:ea,keeper:Zn,logist:Zn,teenth:"Value"},{opoulos:ea,borough:"Place",sdottir:ea}],na={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"2){var a=n.clean[n.clean.length-2];if("s"===a)return void n.tag(["Possessive","Noun"],"end-tick",r);"n"===a&&n.tag(["Gerund"],"chillin",r)}En.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&xn.test(r)&&In.test(r)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var r=e.clean.length,n=7;r<=n&&(n=r-1);for(var a=n;a>1;a-=1){var i=e.clean.substr(r-a,r);if(!0===ra[i.length].hasOwnProperty(i)){var o=ra[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var r=e.clean,n=r[r.length-1];if(!0===Sn.hasOwnProperty(n))for(var a=Sn[n],i=0;i35)}(n=(n=n.trim()).replace(/[.!?,]$/,""))&&(e.tag("Emoji","comma-emoji",t),e.text=n,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(aa)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),na.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},oa=function(e,t){var r=e.world;ia.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},va={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},ba=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],ya=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],wa=[/i$/,/ae$/],ka=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var r=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(r.length<=3)return void e.tag("Singular","short-singular",t);if(ba.find((function(t){return e.tags[t]})))return;if(va.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(va.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(ya.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(wa.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},Aa=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),Da=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},$a=/^[A-Z]('s|,)?$/,Pa=/([A-Z]\.){2}[A-Z]?/i,ja={I:!0,A:!0},Ha={neighbours:ca,case:ga,stem:fa,plural:ka,organizations:function(e,t){for(var r=0;r5)&&e.isAcronym()}(e,t)?(e.tag("Acronym","acronym-step",t),e.tag("Noun","acronym-infer",t)):!ja.hasOwnProperty(e.text)&&$a.test(e.text)&&(e.tag("Acronym","one-letter-acronym",t),e.tag("Noun","one-letter-infer",t)),e.tags.Organization&&e.text.length<=3&&e.tag("Acronym","acronym-org",t),e.tags.Organization&&e.isUpperCase()&&e.text.length<=6&&e.tag("Acronym","acronym-org-case",t))}))}},Ea=function(e,t){var r=e.world;return Ha.neighbours(t,r),Ha.case(e),Ha.stem(t,r),t.forEach((function(t){!1===t.isKnown()&&t.tag("Noun","noun-fallback",e.world)})),Ha.organizations(t,r),Ha.acronyms(t,r),t.forEach((function(t){Ha.plural(t,e.world)})),e},Na=/n't$/,xa={"won't":["will","not"],wont:["will","not"],"can't":["can","not"],cant:["can","not"],cannot:["can","not"],"shan't":["should","not"],dont:["do","not"],dun:["do","not"]},Ia=function(e,t){return!0===xa.hasOwnProperty(e.clean)?xa[e.clean]:"ain't"===e.clean||"aint"===e.clean?function(e,t){var r=t.terms(),n=r.indexOf(e),a=r.slice(0,n).find((function(e){return e.tags.Noun}));return a&&a.tags.Plural?["are","not"]:["is","not"]}(e,t):!0===Na.test(e.clean)?[e.clean.replace(Na,""),"not"]:null},Ca=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i,Fa={ll:"will",ve:"have",re:"are",m:"am","n't":"not"},Ba=function(e){var t=e.text.match(Ca);return null===t?null:Fa.hasOwnProperty(t[2])?[t[1],Fa[t[2]]]:null},Oa={wanna:["want","to"],gonna:["going","to"],im:["i","am"],alot:["a","lot"],ive:["i","have"],imma:["I","will"],"where'd":["where","did"],whered:["where","did"],"when'd":["when","did"],whend:["when","did"],howd:["how","did"],whatd:["what","did"],dunno:["do","not","know"],brb:["be","right","back"],gtg:["got","to","go"],irl:["in","real","life"],tbh:["to","be","honest"],imo:["in","my","opinion"],til:["today","i","learned"],rn:["right","now"],twas:["it","was"],"@":["at"]},za=function(e){return Oa.hasOwnProperty(e.clean)?Oa[e.clean]:null},Ga=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i,Ta={that:!0,there:!0},Va={here:!0,there:!0,everywhere:!0},Ja=function(e,t,r){var n=e.text.match(Ga);if(null!==n){if(!0===function(e,t){if(e.tags.Possessive)return!0;if(e.tags.Pronoun||e.tags.QuestionWord)return!1;if(Ta.hasOwnProperty(e.reduced))return!1;var r=t.get(e.next);if(!r)return!0;if(r.tags.Verb)return!!r.tags.Infinitive||!!r.tags.PresentTense;if(r.tags.Noun)return!0!==Va.hasOwnProperty(r.reduced);var n=t.get(r.next);return!(!n||!n.tags.Noun||n.tags.Pronoun)||(r.tags.Adjective||r.tags.Adverb||r.tags.Verb,!1)}(e,t.pool))return e.tag("#Possessive","isPossessive",r),null;if(null!==n)return function(e,t){var r=t.terms(),n=r.indexOf(e);return r.slice(n+1,n+3).find((function(e){return e.tags.PastTense}))}(e,t)?[n[1],"has"]:[n[1],"is"]}return null},Ma=/[a-z\u00C0-\u00FF]'d$/,La={how:!0,what:!0},Sa=function(e,t){if(Ma.test(e.clean)){for(var r=e.clean.replace(/'d$/,""),n=t.terms(),a=n.indexOf(e),i=n.slice(a+1,a+4),o=0;o0?wi=wi.concat(t):wi.push(e)})),wi.forEach((function(e){var t,r,n;return e.required=(t=e.reg,r=[],n=[],t.forEach((function(e){!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&r.push(e.tag),void 0!==e.word&&n.push(e.word))})),{tags:ni(r),words:ni(n)}),e}));var ki=wi,Ai=function(e){ki.forEach((function(t){var r=[];t.required.words.forEach((function(t){r.push(e._cache.words[t]||[])})),t.required.tags.forEach((function(t){r.push(e._cache.tags[t]||[])}));var n=function(e){if(0===e.length)return[];var t={};e.forEach((function(e){e=ni(e);for(var r=0;r5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(l.eq(0))}return"number"==typeof t&&(n=n.get(t)),new e(n.list,this,this.world)},e},Ni=function(e){var r=function(e){a(i,e);var r=u(i);function i(e,n,a){var o;return t(this,i),(o=r.call(this,e,n,a)).contracted=null,o}return n(i,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),r=t[0].isTitleCase();t.forEach((function(e,r){e.set(e.implicit||e.text),e.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),a=this.not(n).splitAfter("@hasComma"),i=(a=a.concat(n)).quotations();return i.found&&(a=a.splitOn(i.eq(0))),a=a.match("#Noun+ (of|by)? the? #Noun+?"),!0!==t.keep_anaphora&&(a=(a=(a=(a=a.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),a=a.not("(of|for|by|the)$"),"number"==typeof e&&(a=a.get(e)),new r(a.list,this,this.world)},e},_i=/\(/,Ki=/\)/,qi=function(e){var r=function(e){a(i,e);var r=u(i);function i(){return t(this,i),r.apply(this,arguments)}return n(i,[{key:"unwrap",value:function(){return this.list.forEach((function(e){var t=e.terms(0);t.pre=t.pre.replace(_i,"");var r=e.lastTerm();r.post=r.post.replace(Ki,"")})),this}}]),i}(e);return e.prototype.parentheses=function(e){var t=[];return this.list.forEach((function(e){for(var r=e.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(e,[{key:"tagger",value:function(){return $i(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();ho.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new ho(e,this,this.world)},ho.prototype.fromText=function(e){var t=Dt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(ho.prototype,co.misc),Object.assign(ho.prototype,co.selections),lo(ho);var go={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(go).forEach((function(e){return ho.prototype[e]=ho.prototype[go[e]]}));var po=ho,mo=function(e){var t=e.termList();return jn(t,e.world),e.world.taggers.forEach((function(t){t(e)})),e};var fo=function e(t){var r=t,n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&r.addWords(t);var n=Dt(e,r),a=new po(n,null,r);return a.tagger(),a};return n.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=r;t&&((n=n.clone()).words={},n.addWords(t));var a=Dt(e,n),i=new po(a,null,n);return(t||i.world.taggers.length>0)&&mo(i),i},n.extend=function(e){return e(po,r,this,tt,se,nt),this},n.fromJSON=function(e){var t=$t(e,r);return new po(t,null,r)},n.clone=function(){return e(r.clone())},n.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(e),this},n.world=function(){return r},n.parseMatch=function(e,t){return We(e,t)},n.version="13.10.5",n.import=n.load,n.plugin=n.extend,n}(new Or);var vo=function(e){let t=e.template("short description");if(t){return(t.json()||{}).description||""}return null};var bo=function(e){return e.parentheses().remove(),e};const yo=function(e){return e.remove("and #Copula .*"),e};var wo=function(e){let t=e.matchOne("#Copula+ (a|an|the|any|one) of?");if(t.found||(t=e.matchOne("#Copula+")),t.found||(t=e.matchOne("refers to (a|an|the|any)? of?")),t.found||(t=e.matchOne("(constitutes|describes) (a|an|the|any)? of?")),!t.found)return null;let r=e.splitOn(t),n=r.eq(1),a=n.match("(a|an|the|any)? of?");return n.remove("(a|an|the|any)? of?"),{before:r.eq(0),verb:r.eq(1),article:a,after:yo(r.eq(2))}};var ko=function(e){return e.remove("and (also|eventually) (a|an|the|#Possessive) .*"),e.remove("!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e};var Ao=function(e){return e.has("(#Place && @hasComma) #Country+$")&&e.remove("#Country+$"),e.has("#Noun (that|which|who) #PresentTense the .*")&&e.remove(" that #PresentTense the .*"),e.has("#Noun #PastTense by the .*")&&e.remove("#PastTense by the .*"),e.remove("#Demonym"),e.remove("(professional|former)"),e.remove("and? held annually .*"),e.remove("taking place each .*"),e.remove("^one of (the|many|several|#Value)+"),e.remove("^(a|an|the)? #Ordinal? #Superlative"),e.remove("^(a|an|the)? #Ordinal? most #Adjective"),e.remove("born in .*"),e.remove("born #Date+ in? #Place+?"),e.remove("(first|initially|originally)? (located|founded|started|based|formed) in .*"),e.remove("(which|who|that) (is|was) .*"),e.remove("^the name of"),e};const Do=function(e){return!!e.has("^(and|the|which|who|whom|also|a|an|the)")||(!!e.has("^(west|north|south|east|part) of")||(!!e.has("^#PastTense by .")||(!!e.has("^(occasionally|sometimes|frequently)")||(!!e.has("^such as")||!!e.has("^(including|featuring|depicting)")))))};var $o=function(e){e.has("#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$")?e.remove("(located|based) in #Place+$"):e.has("(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$")?e.remove("(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$"):e.has("(#Noun|#Value) in #Place+$")?e.remove("in #Place+$"):(e.remove("and? part of #Place+$"),e.remove("and? near #Place+$"));let t=e.clauses();if(t.length>1){let r=t.eq(0),n=t.eq(1);if(Do(n))e=t.eq(0);else if(n.has("^(#PastTense)")&&r.has("(#Noun|#Value)$"))e=t.eq(0);else if(n.has("^(#Gerund)")&&r.has("#Noun$"))e=t.eq(0);else{let r=t.last();Do(r)&&(t.list.pop(),e=t.join())}}return e.has("(#Noun|and) #PastTense by")&&e.remove("#PastTense by .*"),e.remove("and? designed to .*"),e.remove("and? owned by .*"),e.remove("and? consisting of .*"),e.has("@hasComma (which|who) #Verb")&&e.remove("(which|who) .*"),e};var Po=function(e){return e.remove("(small|large|minor|major)"),e.remove("(extinct|retired|annual|biweekly|monthly|daily)"),e.remove("(female|male)"),e.remove("(private|independent|official|unofficial|officially)"),e.remove("(southern|northern|eastern|western|northeastern|northwestern)"),e.remove("^(family|clade|genus|species|order) of"),e};var jo=function(e,t){if(e&&"function"==typeof e.text){let r=e.text();if(r&&r.length>t.min&&r.lengthnew RegExp(`\\b${e}\\b`,"i")));var Co={good:["male","female"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),bad:Io,like:["male","female","century"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),dislike:["people","place","from","in","people from"].map((e=>new RegExp(`\\b${e}\\b`)),"i")};const{like:Fo,dislike:Bo,good:Oo,bad:zo}=Co,Go=/[0-9]{4}/,To=/s$/;var Vo=function(e){let t=e.categories(),r=t.filter((e=>Oo.find((t=>t.test(e)))));return r.length>0&&(t=r),t=t.filter((e=>!zo.find((t=>t.test(e)))&&!Go.test(e))),0===t.length?"":(r=t.filter((e=>Fo.find((t=>t.test(e))))),r.length>0&&(t=r),r=t.filter((e=>!1!==To.test(e)&&(1!==e.slice(" ").length&&void 0===Bo.find((t=>t.test(e)))))),r.length>0&&(t=r),t=t.sort(((e,t)=>{let r=e.split(" ").length,n=t.split(" ").length;return r>n?-1:r5&&e.length { - return str.charAt(0).toUpperCase() + str.substr(1); +const useAn = function (str) { + const a_regexs = [/^onc?e/i, //'wu' sound of 'o' + /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' + /^eul/i]; + + for (let i = 0; i < a_regexs.length; i++) { + if (a_regexs[i].test(str)) { + return false; + } + } //basic vowel-startings + + + if (/^[aeiou]/i.test(str)) { + return true; + } + + return false; }; // 'American songwriters' to 'an American songwriter' @@ -15286,14 +15301,12 @@ const changeCat = function (cat, options) { c.nouns().toSingular(); // add article to the front if (options.article) { - let article = 'A'; - let noun = c.nouns(0); - - if (noun && noun.found) { - article = c.nouns(0).json({ - terms: false - })[0].article || article; - article = titleCase(article); + let article = 'A'; // let noun = c.nouns(0) + + if (useAn(cat) === true) { + // console.log(c.nouns(0)) + // article = c.nouns(0).json({ terms: false })[0].article || article + article = 'An'; } let first = c.terms(0); diff --git a/plugins/summary/src/category/02-change.js b/plugins/summary/src/category/02-change.js index c35a4758..ac267c75 100644 --- a/plugins/summary/src/category/02-change.js +++ b/plugins/summary/src/category/02-change.js @@ -3,6 +3,24 @@ const titleCase = (str) => { return str.charAt(0).toUpperCase() + str.substr(1) } +const useAn = function (str) { + const a_regexs = [ + /^onc?e/i, //'wu' sound of 'o' + /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' + /^eul/i + ] + for (let i = 0; i < a_regexs.length; i++) { + if (a_regexs[i].test(str)) { + return false + } + } + //basic vowel-startings + if (/^[aeiou]/i.test(str)) { + return true + } + return false +} + // 'American songwriters' to 'an American songwriter' const changeCat = function (cat, options) { let c = nlp(cat) @@ -10,10 +28,11 @@ const changeCat = function (cat, options) { // add article to the front if (options.article) { let article = 'A' - let noun = c.nouns(0) - if (noun && noun.found) { - article = c.nouns(0).json({ terms: false })[0].article || article - article = titleCase(article) + // let noun = c.nouns(0) + if (useAn(cat) === true) { + // console.log(c.nouns(0)) + // article = c.nouns(0).json({ terms: false })[0].article || article + article = 'An' } let first = c.terms(0) if (first.has('#ProperNoun') === false) { diff --git a/plugins/summary/tests/summary.test.js b/plugins/summary/tests/summary.test.js index 0812816e..cca70bc7 100644 --- a/plugins/summary/tests/summary.test.js +++ b/plugins/summary/tests/summary.test.js @@ -26,7 +26,9 @@ test('first-sentence cleanup summary', (t) => { [ `Larchmont Yacht Club is a private, members-only yacht club situated on Larchmont Harbor in the Village of Larchmont, in Westchester County, New York. `, 'a private, members-only yacht club' - ] + ], + [`she cleaned teeth very well [[Category:Female Orthadontists]] `, 'A female Orthadontist'], + [`he flipped around [[Category: Acrobats]][[Category: Living People]] `, 'An acrobat'] ] arr.forEach((a, i) => { let str = wtf(a[0]).summary() diff --git a/plugins/wikis/openstreetmap/plugin.js b/plugins/wikis/openstreetmap/plugin.js index 4012311a..60d840df 100644 --- a/plugins/wikis/openstreetmap/plugin.js +++ b/plugins/wikis/openstreetmap/plugin.js @@ -8,9 +8,9 @@ const plugin = (models, templates, infoboxes) => { // add infoboxes Object.assign(infoboxes, boxes) // add templates - templates.tag = (text, data) => { - // console.log(data) - return - } + // templates.tag = (text, data) => { + // // console.log(data) + // return + // } } module.exports = plugin diff --git a/tests/integration/paragraphs.test.js b/tests/integration/paragraphs.test.js index f81756cc..38ebea8e 100644 --- a/tests/integration/paragraphs.test.js +++ b/tests/integration/paragraphs.test.js @@ -28,6 +28,15 @@ Closing remark`) t.end() }) +test('paragraph links', (t) => { + const str = `hello [[world]] I'm happy to see you. [[world wrestling]]. + +new paragraph here ` + const doc = wtf(str) + t.equal(doc.paragraph().links().length, 2, 'plaintext has one newline') + t.end() +}) + test('bring newlines to plaintext', (t) => { const str = `hello From 2e7bf2b7d6ec9eea5a9fc522e670a6ea122f1b3d Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Sun, 4 Apr 2021 13:58:28 -0400 Subject: [PATCH 117/117] use normal eslint in workflow --- .github/workflows/build-and-test.yml | 3 ++- .github/workflows/lint.yml | 14 -------------- 2 files changed, 2 insertions(+), 15 deletions(-) delete mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index ddabcd05..3da03794 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -27,10 +27,11 @@ jobs: ${{ runner.os }}-npm-${{ matrix.node-version }}- ${{ runner.os }}-npm- - - name: npm install, build, and test + - name: npm install, build, lint, and test run: | npm ci npm run build + npm run lint npm run test:build npm run test:fetch env: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 1b3b603e..00000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Lint - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - eslint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: bradennapier/eslint-plus-action@v3.4.2